index 3c96879..b9676c5 100644 (file)
@@ -29,26 +29,26 @@ import "base" Data.Complex
>
>
> realPart, imagPart :: (RealFloat a) => Complex a -> a
-> realPart (x:+y)       =  x
-> imagPart (x:+y)       =  y
+> realPart (x:+y)        =  x
+> imagPart (x:+y)        =  y
>
-> conjugate     :: (RealFloat a) => Complex a -> Complex a
+> conjugate      :: (RealFloat a) => Complex a -> Complex a
> conjugate (x:+y) =  x :+ (-y)
>
-> mkPolar               :: (RealFloat a) => a -> a -> Complex a
-> mkPolar r theta       =  r * cos theta :+ r * sin theta
+> mkPolar                :: (RealFloat a) => a -> a -> Complex a
+> mkPolar r theta        =  r * cos theta :+ r * sin theta
>
-> cis           :: (RealFloat a) => a -> Complex a
-> cis theta     =  cos theta :+ sin theta
+> cis            :: (RealFloat a) => a -> Complex a
+> cis theta      =  cos theta :+ sin theta
>
-> polar                 :: (RealFloat a) => Complex a -> (a,a)
-> polar z               =  (magnitude z, phase z)
+> polar          :: (RealFloat a) => Complex a -> (a,a)
+> polar z                =  (magnitude z, phase z)
>
> magnitude :: (RealFloat a) => Complex a -> a
> magnitude (x:+y) =  scaleFloat k
->                   (sqrt ((scaleFloat mk x)^2 + (scaleFloat mk y)^2))
->                  where k  = max (exponent x) (exponent y)
->                        mk = - k
+>                    (sqrt ((scaleFloat mk x)^2 + (scaleFloat mk y)^2))
+>                   where k  = max (exponent x) (exponent y)
+>                         mk = - k
>
> phase :: (RealFloat a) => Complex a -> a
> phase (0 :+ 0) = 0
@@ -56,25 +56,25 @@ import "base" Data.Complex
>
>
> instance  (RealFloat a) => Num (Complex a)  where
->     (x:+y) + (x':+y')        =  (x+x') :+ (y+y')
->     (x:+y) - (x':+y')        =  (x-x') :+ (y-y')
->     (x:+y) * (x':+y')        =  (x*x'-y*y') :+ (x*y'+y*x')
->     negate (x:+y)    =  negate x :+ negate y
->     abs z            =  magnitude z :+ 0
->     signum 0         =  0
->     signum z@(x:+y)  =  x/r :+ y/r  where r = magnitude z
->     fromInteger n    =  fromInteger n :+ 0
+>     (x:+y) + (x':+y') =  (x+x') :+ (y+y')
+>     (x:+y) - (x':+y') =  (x-x') :+ (y-y')
+>     (x:+y) * (x':+y') =  (x*x'-y*y') :+ (x*y'+y*x')
+>     negate (x:+y)     =  negate x :+ negate y
+>     abs z             =  magnitude z :+ 0
+>     signum 0          =  0
+>     signum z@(x:+y)   =  x/r :+ y/r  where r = magnitude z
+>     fromInteger n     =  fromInteger n :+ 0
>
> instance  (RealFloat a) => Fractional (Complex a)  where
->     (x:+y) / (x':+y')        =  (x*x''+y*y'') / d :+ (y*x''-x*y'') / d
->                         where x'' = scaleFloat k x'
->                               y'' = scaleFloat k y'
->                               k   = - max (exponent x') (exponent y')
->                               d   = x'*x'' + y'*y''
->
->     fromRational a   =  fromRational a :+ 0
->
-> instance  (RealFloat a) => Floating (Complex a)      where
+>     (x:+y) / (x':+y') =  (x*x''+y*y'') / d :+ (y*x''-x*y'') / d
+>                          where x'' = scaleFloat k x'
+>                                y'' = scaleFloat k y'
+>                                k   = - max (exponent x') (exponent y')
+>                                d   = x'*x'' + y'*y''
+>
+>     fromRational a    =  fromRational a :+ 0
+>
+> instance  (RealFloat a) => Floating (Complex a)       where
>     pi             =  pi :+ 0
>     exp (x:+y)     =  expx * cos y :+ expx * sin y
>                       where expx = exp x