summaryrefslogtreecommitdiff
path: root/testsuite/tests/programs/barton-mangler-bug/Physical.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/programs/barton-mangler-bug/Physical.hs')
-rw-r--r--testsuite/tests/programs/barton-mangler-bug/Physical.hs302
1 files changed, 302 insertions, 0 deletions
diff --git a/testsuite/tests/programs/barton-mangler-bug/Physical.hs b/testsuite/tests/programs/barton-mangler-bug/Physical.hs
new file mode 100644
index 0000000000..91981e0ac5
--- /dev/null
+++ b/testsuite/tests/programs/barton-mangler-bug/Physical.hs
@@ -0,0 +1,302 @@
+module Physical where
+import TypesettingTricks
+class (Eq a, Show a) => Physical a where
+ fromPhysical:: a -> Float
+ toPhysical:: Float -> a
+instance Physical Float where
+ fromPhysical x = x
+ toPhysical x = x
+data PlaneAngle =
+ Rad Float |
+ Mrad Float |
+ Urad Float |
+ Deg Float |
+ Rev Float
+ deriving (Eq, Show)
+instance Physical PlaneAngle where
+ fromPhysical (Rad x) = x
+ fromPhysical (Mrad x) = realdiv x 1000
+ fromPhysical (Urad x) = realdiv x 1000000
+ fromPhysical (Deg x) = realdiv (realmul x pi) 180
+ fromPhysical (Rev x) = realdiv x (realmul 2.0 pi)
+ toPhysical x = Rad x
+data SolidAngle =
+ Sr Float |
+ Msr Float
+ deriving (Eq, Show)
+instance Physical SolidAngle where
+ fromPhysical (Sr x) = x
+ fromPhysical (Msr x) = realdiv x 1000
+ toPhysical x = Sr x
+data BurstLength =
+ Cycle Float |
+ Pulse Float
+ deriving (Eq, Show)
+instance Physical BurstLength where
+ fromPhysical (Cycle x) = x
+ fromPhysical (Pulse x) = x
+ toPhysical x = Cycle x
+data Capacitance =
+ Fd Float |
+ Ufd Float |
+ Nfd Float |
+ Pfd Float
+ deriving (Eq, Show)
+instance Physical Capacitance where
+ fromPhysical (Fd x) = x
+ fromPhysical (Ufd x) = realdiv x 1000000
+ fromPhysical (Nfd x) = realdiv x 1000000000
+ fromPhysical (Pfd x) = realdiv x 1000000000000
+ toPhysical x = Fd x
+data Charge =
+ C Float |
+ Kc Float |
+ Uc Float |
+ Nc Float
+ deriving (Eq, Show)
+instance Physical Charge where
+ fromPhysical (C x) = x
+ fromPhysical (Kc x) = realmul 1000 x
+ fromPhysical (Uc x) = realdiv x 1000000
+ fromPhysical (Nc x) = realdiv x 1000000000
+ toPhysical x = C x
+data Current =
+ A Float |
+ Ka Float |
+ Ma Float |
+ Ua Float |
+ Na Float
+ deriving (Eq, Show)
+instance Physical Current where
+ fromPhysical (A x) = x
+ fromPhysical (Ka x) = realmul 1000 x
+ fromPhysical (Ma x) = realdiv x 1000
+ fromPhysical (Ua x) = realdiv x 1000000
+ fromPhysical (Na x) = realdiv x 1000000000
+ toPhysical x = A x
+data Distance =
+ M Float |
+ Km Float |
+ Mm Float |
+ Um Float |
+ Nm Float |
+ In Float |
+ Ft Float |
+ SMi Float |
+ NMi Float
+ deriving (Eq, Show)
+instance Physical Distance where
+ fromPhysical (M x) = x
+ fromPhysical (Km x) = realmul 1000 x
+ fromPhysical (Mm x) = realdiv x 1000
+ fromPhysical (Um x) = realdiv x 1000000
+ fromPhysical (Nm x) = realdiv x 1000000000
+ fromPhysical (In x) = realmul 25.4 x
+ fromPhysical (Ft x) = realmul 2.12 x
+ fromPhysical (SMi x) = realdiv x 2490.57
+ fromPhysical (NMi x) = realdiv x 1825
+ toPhysical x = M x
+data Energy =
+ J Float |
+ Kj Float |
+ Mj Float |
+ Ev Float |
+ Kev Float |
+ Mev Float
+ deriving (Eq, Show)
+instance Physical Energy where
+ fromPhysical (J x) = x
+ fromPhysical (Kj x) = realmul 1000 x
+ fromPhysical (Mj x) = realdiv x 1000
+ fromPhysical (Ev x) = realmul 1.6E-19 x
+ fromPhysical (Kev x) = realmul 1.6E-16 x
+ fromPhysical (Mev x) = realmul 1.6E-13 x
+ toPhysical x = J x
+data MagFlux =
+ Wb Float |
+ Mwb Float
+ deriving (Eq, Show)
+instance Physical MagFlux where
+ fromPhysical (Wb x) = x
+ fromPhysical (Mwb x) = realdiv x 1000
+ toPhysical x = Wb x
+data FluxDensity =
+ T Float |
+ Mt Float |
+ Ut Float |
+ Gam Float
+ deriving (Eq, Show)
+instance Physical FluxDensity where
+ fromPhysical (T x) = x
+ fromPhysical (Mt x) = realdiv x 1000
+ fromPhysical (Ut x) = realdiv x 1000000
+ fromPhysical (Gam x) = realdiv x 1000000000
+ toPhysical x = T x
+data Force =
+ N Float |
+ Kn Float |
+ Mn Float |
+ Un Float
+ deriving (Eq, Show)
+instance Physical Force where
+ fromPhysical (N x) = x
+ fromPhysical (Kn x) = realmul 1000 x
+ fromPhysical (Mn x) = realdiv x 1000
+ fromPhysical (Un x) = realdiv x 1000000
+ toPhysical x = N x
+data Frequency =
+ Hz Float |
+ Khz Float |
+ Mhz Float |
+ Ghz Float
+ deriving (Eq, Show)
+instance Physical Frequency where
+ fromPhysical (Hz x) = x
+ fromPhysical (Khz x) = realmul 1000 x
+ fromPhysical (Mhz x) = realmul 1000000 x
+ fromPhysical (Ghz x) = realmul 1000000000 x
+ toPhysical x = Hz x
+data Illuminance =
+ Lx Float
+ deriving (Eq, Show)
+instance Physical Illuminance where
+ fromPhysical (Lx x) = x
+ toPhysical x = Lx x
+data Inductance =
+ H Float |
+ Mh Float |
+ Uh Float |
+ Nh Float |
+ Ph Float
+ deriving (Eq, Show)
+instance Physical Inductance where
+ fromPhysical (H x) = x
+ fromPhysical (Mh x) = realdiv x 1000
+ fromPhysical (Uh x) = realdiv x 1000000
+ fromPhysical (Nh x) = realdiv x 1000000000
+ fromPhysical (Ph x) = realdiv x 1000000000000
+ toPhysical x = H x
+data Luminance =
+ Nt Float
+ deriving (Eq, Show)
+instance Physical Luminance where
+ fromPhysical (Nt x) = x
+ toPhysical x = Nt x
+data LuminFlux =
+ Lm Float
+ deriving (Eq, Read, Show)
+instance Physical LuminFlux where
+ fromPhysical (Lm x) = x
+ toPhysical x = Lm x
+data LuminInten =
+ Cd Float
+ deriving (Eq, Read, Show)
+instance Physical LuminInten where
+ fromPhysical (Cd x) = x
+ toPhysical x = Cd x
+data Mass =
+ Kg Float |
+ G Float |
+ Mg Float |
+ Ug Float
+ deriving (Eq, Show)
+instance Physical Mass where
+ fromPhysical (Kg x) = x
+ fromPhysical (G x) = realdiv x 1000
+ fromPhysical (Mg x) = realdiv x 1000000
+ fromPhysical (Ug x) = realdiv x 1000000000
+ toPhysical x = Kg x
+data Power =
+ W Float |
+ Kw Float |
+ Mw Float |
+ Uw Float
+ deriving (Eq, Show)
+instance Physical Power where
+ fromPhysical (W x) = x
+ fromPhysical (Kw x) = realmul 1000 x
+ fromPhysical (Mw x) = realdiv x 1000
+ fromPhysical (Uw x) = realdiv x 1000000
+ toPhysical x = W x
+data Pressure =
+ Pa Float |
+ Kpa Float |
+ Mpa Float |
+ Upa Float |
+ Mb Float
+ deriving (Eq, Show)
+instance Physical Pressure where
+ fromPhysical (Pa x) = x
+ fromPhysical (Kpa x) = realmul 1000 x
+ fromPhysical (Mpa x) = realdiv x 1000
+ fromPhysical (Upa x) = realdiv x 1000000
+ fromPhysical (Mb x) = realmul 100 x
+ toPhysical x = Pa x
+data Pulse =
+ Pulses Float
+ deriving (Eq, Show)
+instance Physical Pulse where
+ fromPhysical (Pulses x) = x
+ toPhysical x = Pulses x
+data RatioInOut =
+ Db Float
+ deriving (Eq, Show)
+instance Physical RatioInOut where
+ fromPhysical (Db x) = x
+ toPhysical x = Db x
+data Resistance =
+ Ohm Float |
+ Kohm Float |
+ Mohm Float
+ deriving (Eq, Show)
+instance Physical Resistance where
+ fromPhysical (Ohm x) = x
+ fromPhysical (Kohm x) = realmul 1000 x
+ fromPhysical (Mohm x) = realmul 1000000 x
+ toPhysical x = Ohm x
+data Temperature =
+ Degk Float |
+ Degc Float |
+ Degf Float
+ deriving (Eq, Show)
+instance Physical Temperature where
+ fromPhysical (Degk x) = x
+ fromPhysical (Degc x) = x + 273
+ fromPhysical (Degf x) = (realdiv (realmul 5 (x-32)) 9) + 273
+ toPhysical x = Degk x
+data Time =
+ Sec Float |
+ Msec Float |
+ Usec Float |
+ Nsec Float |
+ Min Float |
+ Hr Float
+ deriving (Eq, Show)
+instance Physical Time where
+ fromPhysical (Sec x) = x
+ fromPhysical (Msec x) = realdiv x 1000
+ fromPhysical (Usec x) = realdiv x 1000000
+ fromPhysical (Nsec x) = realdiv x 1000000000
+ fromPhysical (Min x) = realmul 60 x
+ fromPhysical (Hr x) = realmul 3600 x
+ toPhysical x = Sec x
+data Voltage =
+ V Float |
+ Kv Float |
+ Mv Float |
+ Uv Float
+ deriving (Eq, Show)
+instance Physical Voltage where
+ fromPhysical (V x) = x
+ fromPhysical (Kv x) = realmul 1000 x
+ fromPhysical (Mv x) = realdiv x 1000
+ fromPhysical (Uv x) = realdiv x 1000000
+ toPhysical x = V x
+data Volume =
+ L Float |
+ Ml Float
+ deriving (Eq, Show)
+instance Physical Volume where
+ fromPhysical (L x) = x
+ fromPhysical (Ml x) = realdiv x 1000
+ toPhysical x = L x