2 import TypesettingTricks
3 class (Eq a, Show a) => Physical a where
4 fromPhysical:: a -> Float
5 toPhysical:: Float -> a
6 instance Physical Float where
16 instance Physical PlaneAngle where
17 fromPhysical (Rad x) = x
18 fromPhysical (Mrad x) = realdiv x 1000
19 fromPhysical (Urad x) = realdiv x 1000000
20 fromPhysical (Deg x) = realdiv (realmul x pi) 180
21 fromPhysical (Rev x) = realdiv x (realmul 2.0 pi)
27 instance Physical SolidAngle where
28 fromPhysical (Sr x) = x
29 fromPhysical (Msr x) = realdiv x 1000
35 instance Physical BurstLength where
36 fromPhysical (Cycle x) = x
37 fromPhysical (Pulse x) = x
38 toPhysical x = Cycle x
45 instance Physical Capacitance where
46 fromPhysical (Fd x) = x
47 fromPhysical (Ufd x) = realdiv x 1000000
48 fromPhysical (Nfd x) = realdiv x 1000000000
49 fromPhysical (Pfd x) = realdiv x 1000000000000
57 instance Physical Charge where
58 fromPhysical (C x) = x
59 fromPhysical (Kc x) = realmul 1000 x
60 fromPhysical (Uc x) = realdiv x 1000000
61 fromPhysical (Nc x) = realdiv x 1000000000
70 instance Physical Current where
71 fromPhysical (A x) = x
72 fromPhysical (Ka x) = realmul 1000 x
73 fromPhysical (Ma x) = realdiv x 1000
74 fromPhysical (Ua x) = realdiv x 1000000
75 fromPhysical (Na x) = realdiv x 1000000000
88 instance Physical Distance where
89 fromPhysical (M x) = x
90 fromPhysical (Km x) = realmul 1000 x
91 fromPhysical (Mm x) = realdiv x 1000
92 fromPhysical (Um x) = realdiv x 1000000
93 fromPhysical (Nm x) = realdiv x 1000000000
94 fromPhysical (In x) = realmul 25.4 x
95 fromPhysical (Ft x) = realmul 2.12 x
96 fromPhysical (SMi x) = realdiv x 2490.57
97 fromPhysical (NMi x) = realdiv x 1825
107 instance Physical Energy where
108 fromPhysical (J x) = x
109 fromPhysical (Kj x) = realmul 1000 x
110 fromPhysical (Mj x) = realdiv x 1000
111 fromPhysical (Ev x) = realmul 1.6E-19 x
112 fromPhysical (Kev x) = realmul 1.6E-16 x
113 fromPhysical (Mev x) = realmul 1.6E-13 x
119 instance Physical MagFlux where
120 fromPhysical (Wb x) = x
121 fromPhysical (Mwb x) = realdiv x 1000
129 instance Physical FluxDensity where
130 fromPhysical (T x) = x
131 fromPhysical (Mt x) = realdiv x 1000
132 fromPhysical (Ut x) = realdiv x 1000000
133 fromPhysical (Gam x) = realdiv x 1000000000
141 instance Physical Force where
142 fromPhysical (N x) = x
143 fromPhysical (Kn x) = realmul 1000 x
144 fromPhysical (Mn x) = realdiv x 1000
145 fromPhysical (Un x) = realdiv x 1000000
153 instance Physical Frequency where
154 fromPhysical (Hz x) = x
155 fromPhysical (Khz x) = realmul 1000 x
156 fromPhysical (Mhz x) = realmul 1000000 x
157 fromPhysical (Ghz x) = realmul 1000000000 x
162 instance Physical Illuminance where
163 fromPhysical (Lx x) = x
172 instance Physical Inductance where
173 fromPhysical (H x) = x
174 fromPhysical (Mh x) = realdiv x 1000
175 fromPhysical (Uh x) = realdiv x 1000000
176 fromPhysical (Nh x) = realdiv x 1000000000
177 fromPhysical (Ph x) = realdiv x 1000000000000
182 instance Physical Luminance where
183 fromPhysical (Nt x) = x
187 deriving (Eq, Read, Show)
188 instance Physical LuminFlux where
189 fromPhysical (Lm x) = x
193 deriving (Eq, Read, Show)
194 instance Physical LuminInten where
195 fromPhysical (Cd x) = x
203 instance Physical Mass where
204 fromPhysical (Kg x) = x
205 fromPhysical (G x) = realdiv x 1000
206 fromPhysical (Mg x) = realdiv x 1000000
207 fromPhysical (Ug x) = realdiv x 1000000000
215 instance Physical Power where
216 fromPhysical (W x) = x
217 fromPhysical (Kw x) = realmul 1000 x
218 fromPhysical (Mw x) = realdiv x 1000
219 fromPhysical (Uw x) = realdiv x 1000000
228 instance Physical Pressure where
229 fromPhysical (Pa x) = x
230 fromPhysical (Kpa x) = realmul 1000 x
231 fromPhysical (Mpa x) = realdiv x 1000
232 fromPhysical (Upa x) = realdiv x 1000000
233 fromPhysical (Mb x) = realmul 100 x
238 instance Physical Pulse where
239 fromPhysical (Pulses x) = x
240 toPhysical x = Pulses x
244 instance Physical RatioInOut where
245 fromPhysical (Db x) = x
252 instance Physical Resistance where
253 fromPhysical (Ohm x) = x
254 fromPhysical (Kohm x) = realmul 1000 x
255 fromPhysical (Mohm x) = realmul 1000000 x
262 instance Physical Temperature where
263 fromPhysical (Degk x) = x
264 fromPhysical (Degc x) = x + 273
265 fromPhysical (Degf x) = (realdiv (realmul 5 (x-32)) 9) + 273
266 toPhysical x = Degk x
275 instance Physical Time where
276 fromPhysical (Sec x) = x
277 fromPhysical (Msec x) = realdiv x 1000
278 fromPhysical (Usec x) = realdiv x 1000000
279 fromPhysical (Nsec x) = realdiv x 1000000000
280 fromPhysical (Min x) = realmul 60 x
281 fromPhysical (Hr x) = realmul 3600 x
289 instance Physical Voltage where
290 fromPhysical (V x) = x
291 fromPhysical (Kv x) = realmul 1000 x
292 fromPhysical (Mv x) = realdiv x 1000
293 fromPhysical (Uv x) = realdiv x 1000000
299 instance Physical Volume where
300 fromPhysical (L x) = x
301 fromPhysical (Ml x) = realdiv x 1000