Changeset 8054 for src/Pugs/Prim/Numeric.hs
- Timestamp:
- 12/03/05 07:06:08 (3 years ago)
- svk:copy_cache_prev:
- 10519
- Files:
-
- 1 modified
-
src/Pugs/Prim/Numeric.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Numeric.hs
r7579 r8054 61 61 if isDigit . head $ show (num1 :: VNum) 62 62 then op2Rat ((^^) :: VRat -> VInt -> VRat) x y 63 else op2Num ((**) :: VNum -> VNum -> VNum) x y 64 _ -> op2Num ((**) :: VNum -> VNum -> VNum) x y 63 else op2Num numExp x y 64 _ -> op2Num numExp x y 65 where 66 numExp :: VNum -> VNum -> VNum 67 -- Perl 6 differs from Haskell in the floating point spec wrt Infinity and NaN 68 numExp x y 69 | x == 1/0 && y == 0 = 0/0 70 | x == 0 && y < 0 = 0/0 71 | y == 1/0 && (x == 1 || x <= -1) = 0/0 72 | y == -1/0 && (x == 1 || (x >= -1 && x <= 0)) = 0/0 73 | otherwise = x ** y 65 74 66 75 op2Divide :: Val -> Val -> Eval Val … … 77 86 = op2Num (/) x y 78 87 where 79 err = fail "Illegal division by zero" 88 err = fail "Illegal division by zero" -- XXX why not NaN? 80 89 81 90 op2Modulus :: Val -> Val -> Eval Val
