| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Num.Complex
Synopsis
- data Complex a
- realPart :: Complex a -> a
- imagPart :: Complex a -> a
- mkPolar :: Floating a => a -> a -> Complex a
- cis :: Floating a => a -> Complex a
- polar :: RealFloat a => Complex a -> (a, a)
- magnitude :: RealFloat a => Complex a -> a
- phase :: RealFloat a => Complex a -> a
- conjugate :: Num a => Complex a -> Complex a
- _realPart :: Functor f => (a -> f a) -> Complex a -> f (Complex a)
- _imagPart :: Functor f => (a -> f a) -> Complex a -> f (Complex a)
- _polar :: RealFloat a => Iso' (Complex a) (a, a)
- _magnitude :: RealFloat a => Lens' (Complex a) a
- _phase :: RealFloat a => Lens' (Complex a) a
- _conjugate :: RealFloat a => Iso' (Complex a) (Complex a)
Complex
Complex numbers are an algebraic type.
For a complex number z, is a number with the magnitude of abs zz,
but oriented in the positive real direction, whereas
has the phase of signum zz, but unit magnitude.
The Foldable and Traversable instances traverse the real part first.
Instances
mkPolar :: Floating a => a -> a -> Complex a #
Form a complex number from polar components of magnitude and phase.
Optics
_polar :: RealFloat a => Iso' (Complex a) (a, a) #
This isn't quite a legal Lens. Notably the
viewl (setl b a) = b
law is violated when you set a polar value with 0 magnitude and non-zero
phase as the phase information is lost, or with a negative magnitude
which flips the phase and retains a positive magnitude. So don't do
that!
Otherwise, this is a perfectly cromulent Lens.
_magnitude :: RealFloat a => Lens' (Complex a) a #
Access the magnitude of a Complex number.
>>>(10.0 :+ 20.0) & _magnitude *~ 220.0 :+ 40.0
This isn't quite a legal Lens. Notably the
viewl (setl b a) = b
law is violated when you set a negative magnitude. This flips the phase
and retains a positive magnitude. So don't do that!
Otherwise, this is a perfectly cromulent Lens.
Setting the magnitude of a zero Complex number assumes the phase is 0.
_phase :: RealFloat a => Lens' (Complex a) a #
Access the phase of a Complex number.
>>>(mkPolar 10 (2-pi) & _phase +~ pi & view _phase) ≈ 2True
This isn't quite a legal Lens. Notably the
viewl (setl b a) = b
law is violated when you set a phase outside the range (-.
The phase is always in that range when queried. So don't do that!pi, pi]
Otherwise, this is a perfectly cromulent Lens.