module Numeric.LinearAlgebra.Array (
None(..),
Array,
listArray,
scalar,
index,
(!),(!>),(~>),
(.*),
printA
) where
import Numeric.LinearAlgebra.Array.Simple
import Numeric.LinearAlgebra.Array.Util
import Numeric.LinearAlgebra.Array.Internal(namesR)
import Numeric.LinearAlgebra.Array.Display(printA)
import Data.Packed(Vector)
index :: Coord t => Name -> [Array t] -> Array t
index = newIndex None
infixl 7 .*
(.*) :: (Coord a, Compat i) => NArray i a -> NArray i a -> NArray i a
(.*) = zipArray (*)
instance (Eq t, Coord t, Compat i) => Eq (NArray i t) where
t1 == t2 = sameStructure t1 t2 && coords t1 == coords (reorder (namesR t1) t2)
instance (Show (NArray i t), Coord t, Compat i) => Num (NArray i t) where
(+) = zipArray (+)
(*) = (|*|)
negate t = scalar (1) * t
fromInteger n = scalar (fromInteger n)
abs _ = error "abs for arrays not defined"
signum _ = error "signum for arrays not defined"
instance (Coord t, Compat i, Num (NArray i t)) => Fractional (NArray i t) where
fromRational = scalar . fromRational
(/) = zipArray (/)
recip = mapArray recip
instance (Coord t, Compat i, Fractional (NArray i t), Floating t, Floating (Vector t)) => Floating (NArray i t) where
sin = mapArray sin
cos = mapArray cos
tan = mapArray tan
asin = mapArray asin
acos = mapArray acos
atan = mapArray atan
sinh = mapArray sinh
cosh = mapArray cosh
tanh = mapArray tanh
asinh = mapArray asinh
acosh = mapArray acosh
atanh = mapArray atanh
exp = mapArray exp
log = mapArray log
(**) = zipArray (**)
sqrt = mapArray sqrt
pi = scalar pi