Skip to main content

uom/si/
jerk.rs

1//! Jerk (base unit meter per second cubed, m · s⁻³).
2
3quantity! {
4    /// Jerk (base unit meter per second cubed, m · s⁻³).
5    quantity: Jerk; "jerk";
6    /// Dimension of jerk, LT⁻³ (base unit meter per second cubed, m · s⁻³).
7    dimension: ISQ<
8        P1,     // length
9        Z0,     // mass
10        N3,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @yottameter_per_second_cubed: prefix!(yotta); "Ym/s³", "yottameter per second cubed",
17            "yottameters per second cubed";
18        @zettameter_per_second_cubed: prefix!(zetta); "Zm/s³", "zettameter per second cubed",
19            "zettameters per second cubed";
20        @exameter_per_second_cubed: prefix!(exa); "Em/s³", "exameter per second cubed",
21            "exameters per second cubed";
22        @petameter_per_second_cubed: prefix!(peta); "Pm/s³", "petameter per second cubed",
23            "petameters per second cubed";
24        @terameter_per_second_cubed: prefix!(tera); "Tm/s³", "terameter per second cubed",
25            "terameters per second cubed";
26        @gigameter_per_second_cubed: prefix!(giga); "Gm/s³", "gigameter per second cubed",
27            "gigameters per second cubed";
28        @megameter_per_second_cubed: prefix!(mega); "Mm/s³", "megameter per second cubed",
29            "megameters per second cubed";
30        @kilometer_per_second_cubed: prefix!(kilo); "km/s³", "kilometer per second cubed",
31            "kilometers per second cubed";
32        @hectometer_per_second_cubed: prefix!(hecto); "hm/s³", "hectometer per second cubed",
33            "hectometers per second cubed";
34        @decameter_per_second_cubed: prefix!(deca); "dam/s³", "decameter per second cubed",
35            "decameters per second cubed";
36        @meter_per_second_cubed: prefix!(none); "m/s³", "meter per second cubed",
37            "meters per second cubed";
38        @decimeter_per_second_cubed: prefix!(deci); "dm/s³", "decimeter per second cubed",
39            "decimeters per second cubed";
40        @centimeter_per_second_cubed: prefix!(centi); "cm/s³", "centimeter per second cubed",
41            "centimeters per second cubed";
42        @millimeter_per_second_cubed: prefix!(milli); "mm/s³", "millimeter per second cubed",
43            "millimeters per second cubed";
44        @micrometer_per_second_cubed: prefix!(micro); "µm/s³", "micrometer per second cubed",
45            "micrometers per second cubed";
46        @nanometer_per_second_cubed: prefix!(nano); "nm/s³", "nanometer per second cubed",
47            "nanometers per second cubed";
48        @picometer_per_second_cubed: prefix!(pico); "pm/s³", "picometer per second cubed",
49            "picometers per second cubed";
50        @femtometer_per_second_cubed: prefix!(femto); "fm/s³", "femtometer per second cubed",
51            "femtometers per second cubed";
52        @attometer_per_second_cubed: prefix!(atto); "am/s³", "attometer per second cubed",
53            "attometers per second cubed";
54        @zeptometer_per_second_cubed: prefix!(zepto); "zm/s³", "zeptometer per second cubed",
55            "zeptometers per second cubed";
56        @yoctometer_per_second_cubed: prefix!(yocto); "ym/s³", "yoctometer per second cubed",
57            "yoctometers per second cubed";
58
59        @foot_per_second_cubed: 3.048_E-1; "ft/s³", "foot per second cubed",
60            "feet per second cubed";
61        @inch_per_second_cubed: 2.54_E-2; "in/s³", "inch per second cubed",
62            "inches per second cubed";
63        @kilometer_per_minute_cubed: 4.629_629_629_629_629_E-3; "km/min³",
64            "kilometer per minute cubed", "kilometers per minute cubed";
65    }
66}
67
68#[cfg(test)]
69mod tests {
70    storage_types! {
71        use crate::num::One;
72        use crate::si::jerk as j;
73        use crate::si::length as l;
74        use crate::si::quantities::*;
75        use crate::si::time as t;
76        use crate::tests::Test;
77
78        #[test]
79        fn check_dimension() {
80            let _: Jerk<V> = Length::new::<l::meter>(V::one())
81                / (Time::new::<t::second>(V::one())
82                    * Time::new::<t::second>(V::one())
83                    * Time::new::<t::second>(V::one()));
84        }
85        
86        #[test]
87        fn check_units() {
88            test::<l::yottameter, t::second, j::yottameter_per_second_cubed>();
89            test::<l::zettameter, t::second, j::zettameter_per_second_cubed>();
90            test::<l::exameter, t::second, j::exameter_per_second_cubed>();
91            test::<l::petameter, t::second, j::petameter_per_second_cubed>();
92            test::<l::terameter, t::second, j::terameter_per_second_cubed>();
93            test::<l::gigameter, t::second, j::gigameter_per_second_cubed>();
94            test::<l::megameter, t::second, j::megameter_per_second_cubed>();
95            test::<l::kilometer, t::second, j::kilometer_per_second_cubed>();
96            test::<l::hectometer, t::second, j::hectometer_per_second_cubed>();
97            test::<l::decameter, t::second, j::decameter_per_second_cubed>();
98            test::<l::meter, t::second, j::meter_per_second_cubed>();
99            test::<l::decimeter, t::second, j::decimeter_per_second_cubed>();
100            test::<l::centimeter, t::second, j::centimeter_per_second_cubed>();
101            test::<l::millimeter, t::second, j::millimeter_per_second_cubed>();
102            test::<l::micrometer, t::second, j::micrometer_per_second_cubed>();
103            test::<l::nanometer, t::second, j::nanometer_per_second_cubed>();
104            test::<l::picometer, t::second, j::picometer_per_second_cubed>();
105            test::<l::femtometer, t::second, j::femtometer_per_second_cubed>();
106            test::<l::attometer, t::second, j::attometer_per_second_cubed>();
107            test::<l::zeptometer, t::second, j::zeptometer_per_second_cubed>();
108            test::<l::yoctometer, t::second, j::yoctometer_per_second_cubed>();
109
110            test::<l::foot, t::second, j::foot_per_second_cubed>();
111            test::<l::inch, t::second, j::inch_per_second_cubed>();
112            test::<l::kilometer, t::minute, j::kilometer_per_minute_cubed>();
113
114            fn test<L: l::Conversion<V>, T: t::Conversion<V>, J: j::Conversion<V>>() {
115                Test::assert_eq(
116                    &Jerk::new::<J>(V::one()),
117                    &(Length::new::<L>(V::one()) /
118                        (Time::new::<T>(V::one()) * 
119                        Time::new::<T>(V::one()) * 
120                        Time::new::<T>(V::one()))));
121            }
122        }
123    }
124}