]> gitweb.factorcode.org Git - factor.git/blob - extra/units/si/si.factor
Support Link Time Optimization (off by default)
[factor.git] / extra / units / si / si.factor
1 USING: kernel math math.constants sequences units ;
2 IN: units.si
3
4 ! SI Conversions
5 ! http://physics.nist.gov/cuu/Units/
6
7 ! Length
8 : m ( n -- dimensioned ) { m } { } <dimensioned> ;
9
10 ! Mass
11 : kg ( n -- dimensioned ) { kg } { } <dimensioned> ;
12
13 ! Time
14 : s ( n -- dimensioned ) { s } { } <dimensioned> ;
15
16 ! Electric current
17 : A ( n -- dimensioned ) { A } { } <dimensioned> ;
18
19 ! Temperature
20 : K ( n -- dimensioned ) { K } { } <dimensioned> ;
21
22 ! Amount of substance
23 : mol ( n -- dimensioned ) { mol } { } <dimensioned> ;
24
25 ! Luminous intensity
26 : cd ( n -- dimensioned ) { cd } { } <dimensioned> ;
27
28 ! SI derived units
29 : m^2 ( n -- dimensioned ) { m m } { } <dimensioned> ;
30 : m^3 ( n -- dimensioned ) { m m m } { } <dimensioned> ;
31 : m/s ( n -- dimensioned ) { m } { s } <dimensioned> ;
32 : m/s^2 ( n -- dimensioned ) { m } { s s } <dimensioned> ;
33 : 1/m ( n -- dimensioned ) { } { m } <dimensioned> ;
34 : kg/m^3 ( n -- dimensioned ) { kg } { m m m } <dimensioned> ;
35 : A/m^2 ( n -- dimensioned ) { A } { m m } <dimensioned> ;
36 : A/m ( n -- dimensioned ) { A } { m } <dimensioned> ;
37 : mol/m^3 ( n -- dimensioned ) { mol } { m m m } <dimensioned> ;
38 : cd/m^2 ( n -- dimensioned ) { cd } { m m } <dimensioned> ;
39 : kg/kg ( n -- dimensioned ) { kg } { kg } <dimensioned> ;
40
41 ! Radians are really m/m, and steradians are m^2/m^2
42 ! but they need to be in reduced form here.
43 : radians ( n -- radian ) scalar ;
44 : sr ( n -- steradian ) scalar ;
45
46 : Hz ( n -- hertz ) { } { s } <dimensioned> ;
47 : N ( n -- newton ) { kg m } { s s } <dimensioned> ;
48 : Pa ( n -- pascal ) { kg } { m s s } <dimensioned> ;
49 : J ( n -- joule ) { m m kg } { s s } <dimensioned> ;
50 : W ( n -- watt ) { m m kg } { s s s } <dimensioned> ;
51 : C ( n -- coulomb ) { s A } { } <dimensioned> ;
52 : V ( n -- volt ) { m m kg } { s s s A } <dimensioned> ;
53 : F ( n -- farad ) { s s s s A A } { m m kg } <dimensioned> ;
54 : ohm ( n -- ohm ) { m m kg } { s s s A A } <dimensioned> ;
55 ALIAS: Ω ohm
56 : S ( n -- siemens ) { s s s A A } { m m kg } <dimensioned> ;
57 : Wb ( n -- weber ) { m m kg } { s s A } <dimensioned> ;
58 : T ( n -- tesla ) { kg } { s s A } <dimensioned> ;
59 : H ( n -- henry ) { m m kg } { s s A A } <dimensioned> ;
60 : deg-C ( n -- Celsius ) 27315/100 + { K } { } <dimensioned> ;
61 ALIAS: °C deg-C
62 : lm ( n -- lumen ) { m m cd } { m m } <dimensioned> ;
63 : lx ( n -- lux ) { m m cd } { m m m m } <dimensioned> ;
64 : Bq ( n -- becquerel ) { } { s } <dimensioned> ;
65 : Gy ( n -- gray ) { m m } { s s } <dimensioned> ;
66 : Sv ( n -- sievert ) { m m } { s s } <dimensioned> ;
67 : kat ( n -- katal ) { mol } { s } <dimensioned> ;
68
69 ! Extensions to the SI
70 : arc-deg ( n -- x ) pi 180 / * radians ;
71 : arc-min ( n -- x ) pi 10800 / * radians ;
72 : arc-sec ( n -- x ) pi 648000 / * radians ;
73 : L ( n -- liter ) 1/1000 * m^3 ;
74 ALIAS: l L
75 : tons ( n -- metric-ton ) 1000 * kg ;
76 : Np ( n -- neper ) { } { } <dimensioned> ;
77 : B ( n -- bel ) 1.151292546497023 * Np ;
78 : eV ( n -- electronvolt ) 1.60218e-19 * J ;
79 : u ( n -- unified-atomic-mass-unit ) 1.660539040e-27 * kg ;
80
81 ! au has error of 30m, according to wikipedia
82 : au ( n -- astronomical-unit ) 149597870691 * m ;
83
84 : a ( n -- are ) 100 * m^2 ;
85 : ha ( n -- hectare ) 10000 * m^2 ;
86 : km^2 ( n -- dimensioned ) 1000000 * m^2 ;
87 : bar ( n -- bar ) 100000 * Pa ;
88 : b ( n -- barn ) 1/10000000000000000000000000000 * m^2 ;
89 : Ci ( n -- curie ) 37000000000 * Bq ;
90 : R ( -- dimensioned ) 258/10000 { s A } { kg } <dimensioned> ;
91 : rad ( n -- dimensioned ) 100 / Gy ;
92
93 ! roentgen equivalent man, equal to one roentgen of X-rays
94 : roentgen-equivalent-man ( n -- dimensioned ) 100 / Sv ;
95
96 ! inaccurate, use calendar where possible
97 : minutes ( n -- dimensioned ) 60 * s ;
98 : hours ( n -- dimensioned ) 60 * minutes ;
99 : days ( n -- dimensioned ) 24 * hours ;
100
101 ! Q R Y Z E P T G M k h da 1 d c m mu n p f a z y r q
102 : quetta ( n -- x ) 1000000000000000000000000000000 * ;
103 : ronna  ( n -- x ) 1000000000000000000000000000 * ;
104 : yotta  ( n -- x ) 1000000000000000000000000 * ;
105 : zetta  ( n -- x ) 1000000000000000000000 * ;
106 : exa    ( n -- x ) 1000000000000000000 * ;
107 : peta   ( n -- x ) 1000000000000000 * ;
108 : tera   ( n -- x ) 1000000000000 * ;
109 : giga   ( n -- x ) 1000000000 * ;
110 : mega   ( n -- x ) 1000000 * ;
111 : kilo   ( n -- x ) 1000 * ;
112 : hecto  ( n -- x ) 100 * ;
113 : deca   ( n -- x ) 10 * ;
114 : deci   ( n -- x ) 10 / ;
115 : centi  ( n -- x ) 100 / ;
116 : milli  ( n -- x ) 1000 / ;
117 : micro  ( n -- x ) 1000000 / ;
118 : nano   ( n -- x ) 1000000000 / ;
119 : pico   ( n -- x ) 1000000000000 / ;
120 : femto  ( n -- x ) 1000000000000000 / ;
121 : atto   ( n -- x ) 1000000000000000000 / ;
122 : zepto  ( n -- x ) 1000000000000000000000 / ;
123 : yocto  ( n -- x ) 1000000000000000000000000 / ;
124 : ronto  ( n -- x ) 1000000000000000000000000000 / ;
125 : quecto ( n -- x ) 1000000000000000000000000000000 / ;
126
127 ! Yi Zi Ei Pi Ti Gi Mi Ki
128 : yobi ( n -- x ) 1208925819614629174706176 * ;
129 : zebi ( n -- x ) 1180591620717411303424 * ;
130 : exbi ( n -- x ) 1152921504606846976 * ;
131 : pebi ( n -- x ) 1125899906842624 * ;
132 : tebi ( n -- x ) 1099511627776 * ;
133 : gibi ( n -- x ) 1073741824 * ;
134 : mebi ( n -- x ) 1048576 * ;
135 : kibi ( n -- x ) 1024 * ;
136
137 ALIAS: Yi yobi
138 ALIAS: Zi zebi
139 ALIAS: Ei exbi
140 ALIAS: Pi pebi
141 ALIAS: Ti tebi
142 ALIAS: Gi gibi
143 ALIAS: Mi mebi
144 ALIAS: Ki kibi
145
146 : km ( n -- dimensioned ) kilo m ;
147 : cm ( n -- dimensioned ) centi m ;
148 : mm ( n -- dimensioned ) milli m ;
149 : nm ( n -- dimensioned ) nano m ;
150 : g ( n -- dimensioned ) milli kg ;
151 : ms ( n -- dimensioned ) milli s ;
152 : angstrom ( n -- dimensioned ) 10 / nm ;
153 ALIAS: Å angstrom