{-# 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
(+) = (a -> a -> a) -> 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 a -> a -> a
forall a. Num a => a -> a -> a
(+)
(-) = (a -> a -> a) -> 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 (-)
* :: Array sh a -> Array sh a -> Array sh a
(*) = (a -> a -> a) -> 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 a -> a -> a
forall a. Num a => a -> a -> a
(*)
negate :: Array sh a -> Array sh a
negate = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Num a => a -> a
negate
abs :: Array sh a -> Array sh a
abs = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Num a => a -> a
abs
signum :: Array sh a -> Array sh a
signum = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Num a => a -> a
signum
fromInteger :: Integer -> Array sh a
fromInteger = a -> Array sh a
forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant (a -> Array sh a) -> (Integer -> a) -> Integer -> Array sh a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> a
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
(/) = (a -> a -> a) -> 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 a -> a -> a
forall a. Fractional a => a -> a -> a
(/)
recip :: Array sh a -> Array sh a
recip = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Fractional a => a -> a
recip
fromRational :: Rational -> Array sh a
fromRational = a -> Array sh a
forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant (a -> Array sh a) -> (Rational -> a) -> Rational -> Array sh a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rational -> a
forall a. Fractional a => Rational -> a
fromRational
instance (Shape sh, Floating a) => Floating (Array sh a) where
pi :: Array sh a
pi = a -> Array sh a
forall (sh :: [Nat]) a. Shape sh => a -> Array sh a
constant a
forall a. Floating a => a
pi
exp :: Array sh a -> Array sh a
exp = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
exp
log :: Array sh a -> Array sh a
log = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
log
sqrt :: Array sh a -> Array sh a
sqrt = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
sqrt
** :: Array sh a -> Array sh a -> Array sh a
(**) = (a -> a -> a) -> 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 a -> a -> a
forall a. Floating a => a -> a -> a
(**)
logBase :: Array sh a -> Array sh a -> Array sh a
logBase = (a -> a -> a) -> 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 a -> a -> a
forall a. Floating a => a -> a -> a
logBase
sin :: Array sh a -> Array sh a
sin = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
sin
cos :: Array sh a -> Array sh a
cos = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
cos
tan :: Array sh a -> Array sh a
tan = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
tan
asin :: Array sh a -> Array sh a
asin = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
asin
acos :: Array sh a -> Array sh a
acos = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
acos
atan :: Array sh a -> Array sh a
atan = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
atan
sinh :: Array sh a -> Array sh a
sinh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
sinh
cosh :: Array sh a -> Array sh a
cosh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
cosh
tanh :: Array sh a -> Array sh a
tanh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
tanh
asinh :: Array sh a -> Array sh a
asinh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
asinh
acosh :: Array sh a -> Array sh a
acosh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
forall a. Floating a => a -> a
acosh
atanh :: Array sh a -> Array sh a
atanh = (a -> a) -> Array sh a -> Array sh a
forall (sh :: [Nat]) a b.
Shape sh =>
(a -> b) -> Array sh a -> Array sh b
mapA a -> a
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
_ = [Char] -> Rational
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
_ = [Char] -> Array sh a
forall a. HasCallStack => [Char] -> a
error [Char]
"toEnum of an Array"
fromEnum :: Array sh a -> Int
fromEnum Array sh a
_ = [Char] -> Int
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 = (a -> a -> a) -> 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 a -> a -> a
forall a. Integral a => a -> a -> a
quot
rem :: Array sh a -> Array sh a -> Array sh a
rem = (a -> a -> a) -> 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 a -> a -> a
forall a. Integral a => a -> a -> a
rem
div :: Array sh a -> Array sh a -> Array sh a
div = (a -> a -> a) -> 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 a -> a -> a
forall a. Integral a => a -> a -> a
div
mod :: Array sh a -> Array sh a -> Array sh a
mod = (a -> a -> a) -> 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 a -> a -> a
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 = (Array sh a -> Array sh a -> Array sh a
forall a. Integral a => a -> a -> a
quot Array sh a
x Array sh a
y, Array sh a -> Array sh a -> Array sh a
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 = (Array sh a -> Array sh a -> Array sh a
forall a. Integral a => a -> a -> a
div Array sh a
x Array sh a
y, Array sh a -> Array sh a -> Array sh a
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
_ = [Char] -> Integer
forall a. HasCallStack => [Char] -> a
error [Char]
"toInteger of an Array"