{-# LINE 1 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Foreign.CUDA.Solver.Internal.Types (
BLAS.Fill(..),
BLAS.Operation(..),
BLAS.Side(..),
EigType(..),
EigMode(..),
Sparse.MatrixDescriptor(..),
MatrixFormat(..),
NumericBoost(..),
ResetFastMode(..),
FactorizationAlgorithm(..),
TriangularSolveAlgorithm(..),
UnitDiagonal(..),
) where
import Foreign.CUDA.BLAS as BLAS
import Foreign.CUDA.BLAS.Sparse.Matrix.Descriptor as Sparse
import Prelude
import Foreign.Ptr
{-# LINE 45 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data EigType = EigType1
| EigType2
| EigType3
deriving (Eq,Show)
instance Enum EigType where
succ EigType1 = EigType2
succ EigType2 = EigType3
succ EigType3 = error "EigType.succ: EigType3 has no successor"
pred EigType2 = EigType1
pred EigType3 = EigType2
pred EigType1 = error "EigType.pred: EigType1 has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from EigType3
fromEnum EigType1 = 1
fromEnum EigType2 = 2
fromEnum EigType3 = 3
toEnum 1 = EigType1
toEnum 2 = EigType2
toEnum 3 = EigType3
toEnum unmatched = error ("EigType.toEnum: Cannot match " ++ show unmatched)
{-# LINE 63 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data EigMode = NoVector
| Vector
deriving (Eq,Show)
instance Enum EigMode where
succ NoVector = Vector
succ Vector = error "EigMode.succ: Vector has no successor"
pred Vector = NoVector
pred NoVector = error "EigMode.pred: NoVector has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from Vector
fromEnum NoVector = 0
fromEnum Vector = 1
toEnum 0 = NoVector
toEnum 1 = Vector
toEnum unmatched = error ("EigMode.toEnum: Cannot match " ++ show unmatched)
{-# LINE 78 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data MatrixFormat = CSR
| CSC
deriving (Eq,Show)
instance Enum MatrixFormat where
succ CSR = CSC
succ CSC = error "MatrixFormat.succ: CSC has no successor"
pred CSC = CSR
pred CSR = error "MatrixFormat.pred: CSR has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from CSC
fromEnum CSR = 0
fromEnum CSC = 1
toEnum 0 = CSR
toEnum 1 = CSC
toEnum unmatched = error ("MatrixFormat.toEnum: Cannot match " ++ show unmatched)
{-# LINE 87 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data NumericBoost = BoostNotUsed
| BoostUsed
deriving (Eq,Show)
instance Enum NumericBoost where
succ BoostNotUsed = BoostUsed
succ BoostUsed = error "NumericBoost.succ: BoostUsed has no successor"
pred BoostUsed = BoostNotUsed
pred BoostNotUsed = error "NumericBoost.pred: BoostNotUsed has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from BoostUsed
fromEnum BoostNotUsed = 0
fromEnum BoostUsed = 1
toEnum 0 = BoostNotUsed
toEnum 1 = BoostUsed
toEnum unmatched = error ("NumericBoost.toEnum: Cannot match " ++ show unmatched)
{-# LINE 96 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data ResetFastMode = FastModeOff
| FastModeOn
deriving (Eq,Show)
instance Enum ResetFastMode where
succ FastModeOff = FastModeOn
succ FastModeOn = error "ResetFastMode.succ: FastModeOn has no successor"
pred FastModeOn = FastModeOff
pred FastModeOff = error "ResetFastMode.pred: FastModeOff has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from FastModeOn
fromEnum FastModeOff = 0
fromEnum FastModeOn = 1
toEnum 0 = FastModeOff
toEnum 1 = FastModeOn
toEnum unmatched = error ("ResetFastMode.toEnum: Cannot match " ++ show unmatched)
{-# LINE 106 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data FactorizationAlgorithm = FactorizationAlg0
| FactorizationAlg1
| FactorizationAlg2
deriving (Eq,Show)
instance Enum FactorizationAlgorithm where
succ FactorizationAlg0 = FactorizationAlg1
succ FactorizationAlg1 = FactorizationAlg2
succ FactorizationAlg2 = error "FactorizationAlgorithm.succ: FactorizationAlg2 has no successor"
pred FactorizationAlg1 = FactorizationAlg0
pred FactorizationAlg2 = FactorizationAlg1
pred FactorizationAlg0 = error "FactorizationAlgorithm.pred: FactorizationAlg0 has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from FactorizationAlg2
fromEnum FactorizationAlg0 = 0
fromEnum FactorizationAlg1 = 1
fromEnum FactorizationAlg2 = 2
toEnum 0 = FactorizationAlg0
toEnum 1 = FactorizationAlg1
toEnum 2 = FactorizationAlg2
toEnum unmatched = error ("FactorizationAlgorithm.toEnum: Cannot match " ++ show unmatched)
{-# LINE 115 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data TriangularSolveAlgorithm = TriangularSolveAlg0
| TriangularSolveAlg1
| TriangularSolveAlg2
| TriangularSolveAlg3
deriving (Eq,Show)
instance Enum TriangularSolveAlgorithm where
succ TriangularSolveAlg0 = TriangularSolveAlg1
succ TriangularSolveAlg1 = TriangularSolveAlg2
succ TriangularSolveAlg2 = TriangularSolveAlg3
succ TriangularSolveAlg3 = error "TriangularSolveAlgorithm.succ: TriangularSolveAlg3 has no successor"
pred TriangularSolveAlg1 = TriangularSolveAlg0
pred TriangularSolveAlg2 = TriangularSolveAlg1
pred TriangularSolveAlg3 = TriangularSolveAlg2
pred TriangularSolveAlg0 = error "TriangularSolveAlgorithm.pred: TriangularSolveAlg0 has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from TriangularSolveAlg3
fromEnum TriangularSolveAlg0 = 0
fromEnum TriangularSolveAlg1 = 1
fromEnum TriangularSolveAlg2 = 2
fromEnum TriangularSolveAlg3 = 3
toEnum 0 = TriangularSolveAlg0
toEnum 1 = TriangularSolveAlg1
toEnum 2 = TriangularSolveAlg2
toEnum 3 = TriangularSolveAlg3
toEnum unmatched = error ("TriangularSolveAlgorithm.toEnum: Cannot match " ++ show unmatched)
{-# LINE 124 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}
data UnitDiagonal = StoredL
| StoredU
| AssumedL
| AssumedU
deriving (Eq,Show)
instance Enum UnitDiagonal where
succ StoredL = StoredU
succ StoredU = AssumedL
succ AssumedL = AssumedU
succ AssumedU = error "UnitDiagonal.succ: AssumedU has no successor"
pred StoredU = StoredL
pred AssumedL = StoredU
pred AssumedU = AssumedL
pred StoredL = error "UnitDiagonal.pred: StoredL has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from AssumedU
fromEnum StoredL = 0
fromEnum StoredU = 1
fromEnum AssumedL = 2
fromEnum AssumedU = 3
toEnum 0 = StoredL
toEnum 1 = StoredU
toEnum 2 = AssumedL
toEnum 3 = AssumedU
toEnum unmatched = error ("UnitDiagonal.toEnum: Cannot match " ++ show unmatched)
{-# LINE 133 "./Foreign/CUDA/Solver/Internal/Types.chs" #-}