Copyright | (c) Galois Inc 2014-2020 |
---|---|
License | BSD3 |
Maintainer | Joe Hendrix <jhendrix@galois.com> |
Stability | provisional |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
What4.Utils.Complex
Description
This module provides complex numbers without the RealFloat constraints that Data.Complex has. This is useful for representing various intermediate symbolic representations of complex numbers that are not literally number representations.
Synopsis
- data Complex a = !a :+ !a
- realPart :: Complex a -> a
- imagPart :: Complex a -> a
- magnitude :: Floating a => Complex a -> a
- magnitudeSq :: Num a => Complex a -> a
- complexNegate :: Num a => Complex a -> Complex a
- complexAdd :: Num a => Complex a -> Complex a -> Complex a
- complexSub :: Num a => Complex a -> Complex a -> Complex a
- complexMul :: Num a => Complex a -> Complex a -> Complex a
- complexDiv :: Fractional a => Complex a -> Complex a -> Complex a
- complexRecip :: Fractional a => Complex a -> Complex a
- tryComplexSqrt :: (Ord a, Fractional a, Monad m) => (a -> m a) -> Complex a -> m (Complex a)
- tryMagnitude :: Num a => (a -> b) -> Complex a -> b
- complexAsRational :: Complex Rational -> Maybe Rational
Documentation
A complex pair over an arbitrary type.
Constructors
!a :+ !a infix 6 |
Instances
Foldable Complex Source # | |
Defined in What4.Utils.Complex Methods fold :: Monoid m => Complex m -> m foldMap :: Monoid m => (a -> m) -> Complex a -> m foldMap' :: Monoid m => (a -> m) -> Complex a -> m foldr :: (a -> b -> b) -> b -> Complex a -> b foldr' :: (a -> b -> b) -> b -> Complex a -> b foldl :: (b -> a -> b) -> b -> Complex a -> b foldl' :: (b -> a -> b) -> b -> Complex a -> b foldr1 :: (a -> a -> a) -> Complex a -> a foldl1 :: (a -> a -> a) -> Complex a -> a elem :: Eq a => a -> Complex a -> Bool maximum :: Ord a => Complex a -> a minimum :: Ord a => Complex a -> a | |
Traversable Complex Source # | |
Functor Complex Source # | |
RealFloat a => Floating (Complex a) Source # | |
Defined in What4.Utils.Complex Methods sqrt :: Complex a -> Complex a (**) :: Complex a -> Complex a -> Complex a logBase :: Complex a -> Complex a -> Complex a asin :: Complex a -> Complex a acos :: Complex a -> Complex a atan :: Complex a -> Complex a sinh :: Complex a -> Complex a cosh :: Complex a -> Complex a tanh :: Complex a -> Complex a asinh :: Complex a -> Complex a acosh :: Complex a -> Complex a atanh :: Complex a -> Complex a log1p :: Complex a -> Complex a expm1 :: Complex a -> Complex a | |
Generic (Complex a) Source # | |
Floating a => Num (Complex a) Source # | |
Floating a => Fractional (Complex a) Source # | |
Defined in What4.Utils.Complex | |
(Ord a, Floating a) => Real (Complex a) Source # | |
Defined in What4.Utils.Complex Methods toRational :: Complex a -> Rational | |
(Ord a, Floating a) => RealFrac (Complex a) Source # | |
(Eq a, Num a, Show a) => Show (Complex a) Source # | |
Eq a => Eq (Complex a) Source # | |
Ord a => Ord (Complex a) Source # | |
Defined in What4.Utils.Complex | |
Hashable a => Hashable (Complex a) Source # | |
Defined in What4.Utils.Complex | |
PolyEq x y => PolyEq (Complex x) (Complex y) Source # | |
type Rep (Complex a) Source # | |
Defined in What4.Utils.Complex type Rep (Complex a) = D1 ('MetaData "Complex" "What4.Utils.Complex" "what4-1.5.1-7H8Mce1Xd0b2HK4tbVhhsX" 'False) (C1 ('MetaCons ":+" ('InfixI 'NotAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) |
magnitudeSq :: Num a => Complex a -> a Source #
Returns square of magnitude.
complexNegate :: Num a => Complex a -> Complex a Source #
complexRecip :: Fractional a => Complex a -> Complex a Source #
Arguments
:: Num a | |
=> (a -> b) | Sqrt function |
-> Complex a | |
-> b |
complexAsRational :: Complex Rational -> Maybe Rational Source #