safe-tensor-0.2.0.0: Dependently typed tensor algebra

Copyright(c) Nils Alex 2020
LicenseMIT
Maintainernils.alex@fau.de
Safe HaskellSafe
LanguageHaskell2010

Math.Tensor.LinearAlgebra.Scalar

Description

Scalar types for usage as Tensor values.

Synopsis

Documentation

newtype Lin a Source #

Linear combination represented as mapping from variable number to prefactor.

Constructors

Lin (IntMap a) 
Instances
Eq a => Eq (Lin a) Source # 
Instance details

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

(==) :: Lin a -> Lin a -> Bool #

(/=) :: Lin a -> Lin a -> Bool #

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

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

compare :: Lin a -> Lin a -> Ordering #

(<) :: Lin a -> Lin a -> Bool #

(<=) :: Lin a -> Lin a -> Bool #

(>) :: Lin a -> Lin a -> Bool #

(>=) :: Lin a -> Lin a -> Bool #

max :: Lin a -> Lin a -> Lin a #

min :: Lin a -> Lin a -> Lin a #

Show a => Show (Lin a) Source # 
Instance details

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

showsPrec :: Int -> Lin a -> ShowS #

show :: Lin a -> String #

showList :: [Lin a] -> ShowS #

data Poly a Source #

Polynomial: Can be constant, affine, or something of higher rank which is not yet implemented.

Constructors

Const !a

constant value

Affine !a !(Lin a)

constant value plus linear term

NotSupported

higher rank

Instances
Eq a => Eq (Poly a) Source # 
Instance details

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

(==) :: Poly a -> Poly a -> Bool #

(/=) :: Poly a -> Poly a -> Bool #

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

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

(+) :: Poly a -> Poly a -> Poly a #

(-) :: Poly a -> Poly a -> Poly a #

(*) :: Poly a -> Poly a -> Poly a #

negate :: Poly a -> Poly a #

abs :: Poly a -> Poly a #

signum :: Poly a -> Poly a #

fromInteger :: Integer -> Poly a #

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

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

compare :: Poly a -> Poly a -> Ordering #

(<) :: Poly a -> Poly a -> Bool #

(<=) :: Poly a -> Poly a -> Bool #

(>) :: Poly a -> Poly a -> Bool #

(>=) :: Poly a -> Poly a -> Bool #

max :: Poly a -> Poly a -> Poly a #

min :: Poly a -> Poly a -> Poly a #

Show a => Show (Poly a) Source # 
Instance details

Defined in Math.Tensor.LinearAlgebra.Scalar

Methods

showsPrec :: Int -> Poly a -> ShowS #

show :: Poly a -> String #

showList :: [Poly a] -> ShowS #

singletonPoly Source #

Arguments

:: a

constant

-> Int

variable number

-> a

prefactor

-> Poly a 

Produces an affine value \(c + a\cdot x_i\)

polyMap :: (a -> b) -> Poly a -> Poly b Source #

Maps over Poly

getVars :: Poly a -> [Int] Source #

Returns list of variable numbers present in the polynomial.

shiftVars :: Int -> Poly a -> Poly a Source #

Shifts variable numbers in the polynomial by a constant value.

normalize :: Fractional a => Poly a -> Poly a Source #

Normalizes a polynomial: \[ \mathrm{normalize}(c) = 1 \\ \mathrm{normalize}(c + a_1\cdot x_1 + a_2\cdot x_2 + \dots + a_n\cdot x_n) = \frac{c}{a_1} + 1\cdot x_1 + \frac{a_2}{a_1}\cdot x_2 + \dots + \frac{a_n}{a_1}\cdot x_n \]