{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
module Data.Array.Accelerate.Numeric.LinearAlgebra.Type (
#if MIN_VERSION_accelerate(1,2,0)
Matrix,
#endif
module Data.Array.Accelerate.Numeric.LinearAlgebra.Type,
) where
import Data.Array.Accelerate as A
import Data.Array.Accelerate.Data.Complex as A
import qualified Prelude as P
data NumericR a where
NumericRfloat32 :: NumericR Float
NumericRfloat64 :: NumericR Double
NumericRcomplex32 :: NumericR (Complex Float)
NumericRcomplex64 :: NumericR (Complex Double)
class (Elt a, Num a) => Numeric a where
numericR :: NumericR a
instance Numeric Float where
numericR = NumericRfloat32
instance Numeric Double where
numericR = NumericRfloat64
instance Numeric (Complex Float) where
numericR = NumericRcomplex32
instance Numeric (Complex Double) where
numericR = NumericRcomplex64
type family NumericBaseT t where
NumericBaseT Float = Float
NumericBaseT Double = Double
NumericBaseT (Complex Float) = Float
NumericBaseT (Complex Double) = Double
#if !MIN_VERSION_accelerate(1,2,0)
type Matrix e = Array DIM2 e
#endif
data Orientation
= R
| C
deriving (P.Eq, P.Show)
data Transpose
= N
| T
| H
deriving (P.Eq, P.Show)