Changeset 15202 for src/Pugs/Prim/Numeric.hs
- Timestamp:
- 02/06/07 21:41:12 (22 months ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Numeric.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Numeric.hs
r15201 r15202 37 37 y' <- fromVal y 38 38 return . castV $ f x' y' 39 40 op2Floating :: (forall a. (Floating a) => a -> a -> a) -> Val -> Val -> Eval Val 41 op2Floating f x y 42 | VUndef <- x = op2Floating f (VInt 0) y 43 | VUndef <- y = op2Floating f x (VInt 0) 44 | VType{} <- x = op2Floating f (VInt 0) y 45 | VType{} <- y = op2Floating f x (VInt 0) 46 | VRef r <- x = do 47 x' <- readRef r 48 op2Floating f x' y 49 | VRef r <- y = do 50 y' <- readRef r 51 op2Floating f x y' 52 | VComplex x' <- x = do 53 y' <- fromVal y 54 return . VComplex $ f x' y' 55 | VComplex y' <- y = do 56 x' <- fromVal x 57 return . VComplex $ f x' y' 58 | otherwise = do 59 x' <- fromVal x 60 y' <- fromVal y 61 return . VNum $ f x' y' 39 62 40 63 op2Numeric :: (forall a. (Num a) => a -> a -> a) -> Val -> Val -> Eval Val … … 103 126 if isDigit . head $ show (num1 :: VNum) 104 127 then op2Rat ((^^) :: VRat -> VInt -> VRat) x y 105 else op2 Num(**) x y106 _ -> op2 Num(**) x y128 else op2Floating (**) x y 129 _ -> op2Floating (**) x y 107 130 108 131 op2Divide :: Val -> Val -> Eval Val
