| 1 | module Test where |
|---|
| 2 | |
|---|
| 3 | data B = B !Double !Double |
|---|
| 4 | data C = C {-# UNPACK #-} !Double !Double |
|---|
| 5 | data D = D {-# UNPACK #-} !Double {-# UNPACK #-} !Double |
|---|
| 6 | |
|---|
| 7 | b (C x y) = sqrt $! (x*x + x*x) |
|---|
| 8 | c (C x y) = sqrt $! (x*x + x*x) |
|---|
| 9 | d (D x y) = sqrt $! (x*x + x*x) |
|---|
| 10 | |
|---|
| 11 | data PPB = PPB !Double B |
|---|
| 12 | data UPB = UPB {-# UNPACK #-} !Double B |
|---|
| 13 | |
|---|
| 14 | ppb (PPB _ (B x _)) = sqrt $! (x*x + x*x) |
|---|
| 15 | upb (UPB _ (B x _)) = sqrt $! (x*x + x*x) |
|---|
| 16 | |
|---|
| 17 | data PPC = PPC !Double C |
|---|
| 18 | data UPC = UPC {-# UNPACK #-} !Double C |
|---|
| 19 | |
|---|
| 20 | ppc (PPC _ (C x _)) = sqrt $! (x*x + x*x) |
|---|
| 21 | upc (UPC _ (C x _)) = sqrt $! (x*x + x*x) |
|---|
| 22 | |
|---|
| 23 | data PPD = PPD !Double D |
|---|
| 24 | data UPD = UPD {-# UNPACK #-} !Double D |
|---|
| 25 | |
|---|
| 26 | ppd (PPD _ (D x _)) = sqrt $! (x*x + x*x) |
|---|
| 27 | upd (UPD _ (D x _)) = sqrt $! (x*x + x*x) |
|---|