what4-1.3: Solver-agnostic symbolic values support for issuing queries
Copyright(c) Galois Inc 2014-2020
LicenseBSD3
MaintainerJoe Hendrix <jhendrix@galois.com>
Stabilityprovisional
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

Documentation

data Complex a Source #

A complex pair over an arbitrary type.

Constructors

!a :+ !a infix 6 

Instances

Instances details
Foldable Complex Source # 
Instance details

Defined in What4.Utils.Complex

Methods

fold :: Monoid m => Complex m -> m Source #

foldMap :: Monoid m => (a -> m) -> Complex a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Complex a -> m Source #

foldr :: (a -> b -> b) -> b -> Complex a -> b Source #

foldr' :: (a -> b -> b) -> b -> Complex a -> b Source #

foldl :: (b -> a -> b) -> b -> Complex a -> b Source #

foldl' :: (b -> a -> b) -> b -> Complex a -> b Source #

foldr1 :: (a -> a -> a) -> Complex a -> a Source #

foldl1 :: (a -> a -> a) -> Complex a -> a Source #

toList :: Complex a -> [a] Source #

null :: Complex a -> Bool Source #

length :: Complex a -> Int Source #

elem :: Eq a => a -> Complex a -> Bool Source #

maximum :: Ord a => Complex a -> a Source #

minimum :: Ord a => Complex a -> a Source #

sum :: Num a => Complex a -> a Source #

product :: Num a => Complex a -> a Source #

Traversable Complex Source # 
Instance details

Defined in What4.Utils.Complex

Methods

traverse :: Applicative f => (a -> f b) -> Complex a -> f (Complex b) Source #

sequenceA :: Applicative f => Complex (f a) -> f (Complex a) Source #

mapM :: Monad m => (a -> m b) -> Complex a -> m (Complex b) Source #

sequence :: Monad m => Complex (m a) -> m (Complex a) Source #

Functor Complex Source # 
Instance details

Defined in What4.Utils.Complex

Methods

fmap :: (a -> b) -> Complex a -> Complex b Source #

(<$) :: a -> Complex b -> Complex a Source #

RealFloat a => Floating (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Generic (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Associated Types

type Rep (Complex a) :: Type -> Type Source #

Methods

from :: Complex a -> Rep (Complex a) x Source #

to :: Rep (Complex a) x -> Complex a Source #

Floating a => Num (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Floating a => Fractional (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

(Ord a, Floating a) => Real (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

(Ord a, Floating a) => RealFrac (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Methods

properFraction :: Integral b => Complex a -> (b, Complex a) Source #

truncate :: Integral b => Complex a -> b Source #

round :: Integral b => Complex a -> b Source #

ceiling :: Integral b => Complex a -> b Source #

floor :: Integral b => Complex a -> b Source #

(Eq a, Num a, Show a) => Show (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Eq a => Eq (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Methods

(==) :: Complex a -> Complex a -> Bool Source #

(/=) :: Complex a -> Complex a -> Bool Source #

Ord a => Ord (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

Hashable a => Hashable (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

PolyEq x y => PolyEq (Complex x) (Complex y) Source # 
Instance details

Defined in What4.Utils.Complex

type Rep (Complex a) Source # 
Instance details

Defined in What4.Utils.Complex

type Rep (Complex a) = D1 ('MetaData "Complex" "What4.Utils.Complex" "what4-1.3-4nXslaqUgYdfntseIWI8p" '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.

tryComplexSqrt Source #

Arguments

:: (Ord a, Fractional a, Monad m) 
=> (a -> m a)

Square-root function defined for non-negative values a.

-> Complex a 
-> m (Complex a) 

tryMagnitude Source #

Arguments

:: Num a 
=> (a -> b)

Sqrt function

-> Complex a 
-> b