{-# OPTIONS_GHC -Wno-orphans #-}
module Data.Array.Shaped.Instances where
import Data.Array.Shaped
instance (Shape sh, Num a) => Num (Array sh a) where
+ :: Array sh a -> Array sh a -> Array sh a
(+) = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Num a => a -> a -> a
(+)
(-) = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA (-)
* :: Array sh a -> Array sh a -> Array sh a
(*) = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Num a => a -> a -> a
(*)
negate :: Array sh a -> Array sh a
negate = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Num a => a -> a
negate
abs :: Array sh a -> Array sh a
abs = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Num a => a -> a
abs
signum :: Array sh a -> Array sh a
signum = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Num a => a -> a
signum
fromInteger :: Integer -> Array sh a
fromInteger = forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
instance (Shape sh, Fractional a) => Fractional (Array sh a) where
/ :: Array sh a -> Array sh a -> Array sh a
(/) = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Fractional a => a -> a -> a
(/)
recip :: Array sh a -> Array sh a
recip = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Fractional a => a -> a
recip
fromRational :: Rational -> Array sh a
fromRational = forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Fractional a => Rational -> a
fromRational
instance (Shape sh, Floating a) => Floating (Array sh a) where
pi :: Array sh a
pi = forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant forall a. Floating a => a
pi
exp :: Array sh a -> Array sh a
exp = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
exp
log :: Array sh a -> Array sh a
log = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
log
sqrt :: Array sh a -> Array sh a
sqrt = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
sqrt
** :: Array sh a -> Array sh a -> Array sh a
(**) = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Floating a => a -> a -> a
(**)
logBase :: Array sh a -> Array sh a -> Array sh a
logBase = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Floating a => a -> a -> a
logBase
sin :: Array sh a -> Array sh a
sin = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
sin
cos :: Array sh a -> Array sh a
cos = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
cos
tan :: Array sh a -> Array sh a
tan = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
tan
asin :: Array sh a -> Array sh a
asin = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
asin
acos :: Array sh a -> Array sh a
acos = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
acos
atan :: Array sh a -> Array sh a
atan = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
atan
sinh :: Array sh a -> Array sh a
sinh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
sinh
cosh :: Array sh a -> Array sh a
cosh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
cosh
tanh :: Array sh a -> Array sh a
tanh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
tanh
asinh :: Array sh a -> Array sh a
asinh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
asinh
acosh :: Array sh a -> Array sh a
acosh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
acosh
atanh :: Array sh a -> Array sh a
atanh = forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA forall a. Floating a => a -> a
atanh
instance (Shape sh, Real a) => Real (Array sh a) where
toRational :: Array sh a -> Rational
toRational Array sh a
_ = forall a. HasCallStack => [Char] -> a
error [Char]
"toRational of an Array"
instance (Shape sh, Enum a) => Enum (Array sh a) where
toEnum :: Int -> Array sh a
toEnum Int
_ = forall a. HasCallStack => [Char] -> a
error [Char]
"toEnum of an Array"
fromEnum :: Array sh a -> Int
fromEnum Array sh a
_ = forall a. HasCallStack => [Char] -> a
error [Char]
"fromEnum of an Array"
instance (Shape sh, Integral a) => Integral (Array sh a) where
quot :: Array sh a -> Array sh a -> Array sh a
quot = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Integral a => a -> a -> a
quot
rem :: Array sh a -> Array sh a -> Array sh a
rem = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Integral a => a -> a -> a
rem
div :: Array sh a -> Array sh a -> Array sh a
div = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Integral a => a -> a -> a
div
mod :: Array sh a -> Array sh a -> Array sh a
mod = forall (sh :: [Nat]) a b c.
Shape sh =>
(a -> b -> c) -> Array sh a -> Array sh b -> Array sh c
zipWithA forall a. Integral a => a -> a -> a
mod
quotRem :: Array sh a -> Array sh a -> (Array sh a, Array sh a)
quotRem Array sh a
x Array sh a
y = (forall a. Integral a => a -> a -> a
quot Array sh a
x Array sh a
y, forall a. Integral a => a -> a -> a
rem Array sh a
x Array sh a
y)
divMod :: Array sh a -> Array sh a -> (Array sh a, Array sh a)
divMod Array sh a
x Array sh a
y = (forall a. Integral a => a -> a -> a
div Array sh a
x Array sh a
y, forall a. Integral a => a -> a -> a
mod Array sh a
x Array sh a
y)
toInteger :: Array sh a -> Integer
toInteger Array sh a
_ = forall a. HasCallStack => [Char] -> a
error [Char]
"toInteger of an Array"