diff --git a/src/si/acceleration.rs b/src/si/acceleration.rs index 14dccc90..50d11162 100644 --- a/src/si/acceleration.rs +++ b/src/si/acceleration.rs @@ -59,6 +59,8 @@ quantity! { @foot_per_second_squared: 3.048_E-1; "ft/s²", "foot per second squared", "feet per second squared"; @galileo: 1.0_E-2; "Gal", "galileo", "galileos"; @inch_per_second_squared: 2.54_E-2; "in/s²", "inch per second squared", "inches per second squared"; + @millimeter_per_minute_squared: 2.777_777_777_777_777_8_E-7; "mm/min²", + "millimeter per minute squared", "millimeters per minute squared"; } } @@ -80,32 +82,36 @@ mod tests { #[test] fn check_units() { - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); - fn test, A: a::Conversion>() { + test::(); + test::(); + test::(); + + fn test, T: t::Conversion, A: a::Conversion>() { Test::assert_eq(&Acceleration::new::(V::one()), &(Length::new::(V::one()) / - (Time::new::(V::one()) * Time::new::(V::one())))); + (Time::new::(V::one()) * Time::new::(V::one())))); } } } diff --git a/src/si/jerk.rs b/src/si/jerk.rs new file mode 100644 index 00000000..b9da36a9 --- /dev/null +++ b/src/si/jerk.rs @@ -0,0 +1,121 @@ +//! Jerk (base unit meter per second3, m1 · s-3). + +quantity! { + /// Jerk (base unit meter per second3, m1 · s-3). + quantity: Jerk; "jerk"; + /// Jerk dimension, m1 · s-3. + dimension: ISQ< + P1, // length + Z0, // mass + N3, // time + Z0, // electric current + Z0, // thermodynamic temperature + Z0, // amount of substance + Z0>; // luminous intensity + units { + @yottameter_per_second_cubed: prefix!(yotta); "Ym/s³", "yottameter per second cubed", + "yottameters per second cubed"; + @zettameter_per_second_cubed: prefix!(zetta); "Zm/s³", "zettameter per second cubed", + "zettameters per second cubed"; + @exameter_per_second_cubed: prefix!(exa); "Em/s³", "exameter per second cubed", + "exameters per second cubed"; + @petameter_per_second_cubed: prefix!(peta); "Pm/s³", "petameter per second cubed", + "petameters per second cubed"; + @terameter_per_second_cubed: prefix!(tera); "Tm/s³", "terameter per second cubed", + "terameters per second cubed"; + @gigameter_per_second_cubed: prefix!(giga); "Gm/s³", "gigameter per second cubed", + "gigameters per second cubed"; + @megameter_per_second_cubed: prefix!(mega); "Mm/s³", "megameter per second cubed", + "megameters per second cubed"; + @kilometer_per_second_cubed: prefix!(kilo); "km/s³", "kilometer per second cubed", + "kilometers per second cubed"; + @hectometer_per_second_cubed: prefix!(hecto); "hm/s³", "hectometer per second cubed", + "hectometers per second cubed"; + @decameter_per_second_cubed: prefix!(deca); "dam/s³", "decameter per second cubed", + "decameters per second cubed"; + @meter_per_second_cubed: prefix!(none); "m/s³", "meter per second cubed", + "meters per second cubed"; + @decimeter_per_second_cubed: prefix!(deci); "dm/s³", "decimeter per second cubed", + "decimeters per second cubed"; + @centimeter_per_second_cubed: prefix!(centi); "cm/s³", "centimeter per second cubed", + "centimeters per second cubed"; + @millimeter_per_second_cubed: prefix!(milli); "mm/s³", "millimeter per second cubed", + "millimeters per second cubed"; + @micrometer_per_second_cubed: prefix!(micro); "µm/s³", "micrometer per second cubed", + "micrometers per second cubed"; + @nanometer_per_second_cubed: prefix!(nano); "nm/s³", "nanometer per second cubed", + "nanometers per second cubed"; + @picometer_per_second_cubed: prefix!(pico); "pm/s³", "picometer per second cubed", + "picometers per second cubed"; + @femtometer_per_second_cubed: prefix!(femto); "fm/s³", "femtometer per second cubed", + "femtometers per second cubed"; + @attometer_per_second_cubed: prefix!(atto); "am/s³", "attometer per second cubed", + "attometers per second cubed"; + @zeptometer_per_second_cubed: prefix!(zepto); "zm/s³", "zeptometer per second cubed", + "zeptometers per second cubed"; + @yoctometer_per_second_cubed: prefix!(yocto); "ym/s³", "yoctometer per second cubed", + "yoctometers per second cubed"; + + @foot_per_second_cubed: 3.048_E-1; "ft/s³", "foot per second cubed", "feet per second cubed"; + @inch_per_second_cubed: 2.54_E-2; "in/s³", "inch per second cubed", "inches per second cubed"; + @kilometer_per_minute_cubed: 4.629_629_629_629_629_E-3; "km/min³", + "kilometer per minute cubed", "kilometers per minute cubed"; + } +} + +#[cfg(test)] +mod tests { + storage_types! { + use num::One; + use si::quantities::*; + use si::jerk as j; + use si::length as l; + use si::time as t; + use tests::Test; + + #[test] + fn check_dimension() { + let _: Jerk = Length::new::(V::one()) + / (Time::new::(V::one()) + * Time::new::(V::one()) + * Time::new::(V::one())); + } + + #[test] + fn check_units() { + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + + fn test, T: t::Conversion, J: j::Conversion>() { + Test::assert_eq( + &Jerk::new::(V::one()), + &(Length::new::(V::one()) / + (Time::new::(V::one()) * + Time::new::(V::one()) * + Time::new::(V::one())))); + } + } + } +} diff --git a/src/si/mod.rs b/src/si/mod.rs index e98df567..050f453c 100644 --- a/src/si/mod.rs +++ b/src/si/mod.rs @@ -37,6 +37,7 @@ system! { force::Force, frequency::Frequency, inductance::Inductance, + jerk::Jerk, length::Length, luminance::Luminance, luminous_intensity::LuminousIntensity, diff --git a/src/si/velocity.rs b/src/si/velocity.rs index 0b2eae2a..0a2b2051 100644 --- a/src/si/velocity.rs +++ b/src/si/velocity.rs @@ -55,15 +55,18 @@ quantity! { @yoctometer_per_second: prefix!(yocto); "ym/s", "yoctometer per second", "yoctometers per second"; - @foot_per_hour: 8.466_667_E-5; "ft/h", "foot per hour", "feet per hour"; + @foot_per_hour: 8.466_666_666_666_667_E-5; "ft/h", "foot per hour", "feet per hour"; @foot_per_minute: 5.08_E-3; "ft/min", "foot per minute", "feet per minute"; @foot_per_second: 3.048_E-1; "ft/s", "foot per second", "feet per second"; @inch_per_second: 2.54_E-2; "in/s", "inch per second", "inches per second"; - @kilometer_per_hour: 2.777_778_E-1; "km/h", "kilometer per hour", "kilometers per hour"; + @kilometer_per_hour: 2.777_777_777_777_778_E-1; "km/h", "kilometer per hour", + "kilometers per hour"; @knot: 5.144_444_E-1; "kn", "knot", "knots"; @mile_per_hour: 4.470_4_E-1; "mi/h", "mile per hour", "miles per hour"; @mile_per_minute: 2.682_24_E1; "mi/min", "mile per minute", "miles per minute"; @mile_per_second: 1.609_344_E3; "mi/s", "mile per second", "miles per second"; + @millimeter_per_minute: 1.666_666_666_666_666_667_E-5; "mm/min", "millimeter per minute", + "millimeters per minute"; } } @@ -85,31 +88,40 @@ mod test { #[test] fn check_units() { - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); - test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); - fn test, E: v::Conversion>() { + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + test::(); + + fn test, T: t::Conversion, E: v::Conversion>() { Test::assert_eq(&Velocity::new::(V::one()), - &(Length::new::(V::one()) / Time::new::(V::one()))); + &(Length::new::(V::one()) / Time::new::(V::one()))); } } }