cifl-math-library-1.1.1.0: Math libraries
Safe HaskellTrustworthy
LanguageHaskell2010

Math.Matrix.SIMD

Description

This modules provides SIMD optimized versions of vectors. Relies heavily on GHC SIMD support. SIMD works only when using LLVM and GHC 8.x The only combinations of vectors supported are 4 * Int32, 8 * Int16 and 16 * Int8, 4*Float, 2*Double Conversions to and from optimized types and Vector4 Int32, (Vector2 :*: Vector2) Int32, (Vector4 Int16, Vector4 Int16) Vector4 Float, (Vector2 :*: Vector2) Float, and (Vector4 :*: Vector4) Int8 can be performed as appropriate for each type.

Documentation

data SIMDVec (len :: Nat) a Source #

Instances

Instances details
Num (SIMDVec 1 (Complex Double)) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Num (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Fractional (SIMDVec 2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

Fractional (SIMDVec 4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Show (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Show (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Show (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Show (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

showsPrec :: Int -> SIMDVec 16 Int8 -> ShowS #

show :: SIMDVec 16 Int8 -> String #

showList :: [SIMDVec 16 Int8] -> ShowS #

InnerProductSpace (SIMDVec 1 (Complex Double)) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Scalar (SIMDVec 2 Double) ~ Double => InnerProductSpace (SIMDVec 2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

InnerProductSpace (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

(%.) :: SIMDVec 16 Int8 -> SIMDVec 16 Int8 -> Scalar (SIMDVec 16 Int8) Source #

NormedSpace (SIMDVec 1 (Complex Double)) Source # 
Instance details

Defined in Math.Matrix.SIMD

NormedSpace (SIMDVec 2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

VectorSpace (SIMDVec 1 (Complex Double)) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 1 (Complex Double)) Source #

VectorSpace (SIMDVec 2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 2 (Complex Float)) Source #

VectorSpace (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 2 Int64) Source #

VectorSpace (SIMDVec 2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 2 Double) Source #

VectorSpace (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 4 Int32) Source #

VectorSpace (SIMDVec 4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 4 Float) Source #

VectorSpace (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 8 Int16) Source #

VectorSpace (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Scalar (SIMDVec 16 Int8) Source #

Eq (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

(==) :: SIMDVec 2 Int64 -> SIMDVec 2 Int64 -> Bool #

(/=) :: SIMDVec 2 Int64 -> SIMDVec 2 Int64 -> Bool #

Eq (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

(==) :: SIMDVec 4 Int32 -> SIMDVec 4 Int32 -> Bool #

(/=) :: SIMDVec 4 Int32 -> SIMDVec 4 Int32 -> Bool #

Eq (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

(==) :: SIMDVec 8 Int16 -> SIMDVec 8 Int16 -> Bool #

(/=) :: SIMDVec 8 Int16 -> SIMDVec 8 Int16 -> Bool #

Eq (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Methods

(==) :: SIMDVec 16 Int8 -> SIMDVec 16 Int8 -> Bool #

(/=) :: SIMDVec 16 Int8 -> SIMDVec 16 Int8 -> Bool #

type Scalar (SIMDVec 1 (Complex Double)) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 8 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 16 Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

type Scalar (SIMDVec 16 Int8) = Int8

makeSVec16 :: Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> Int8 -> SIMDVec 16 Int8 Source #

class VectorSpace a => Optimal a where Source #

Associated Types

type Optimized a Source #

Instances

Instances details
Optimal (Complex Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Complex Double) Source #

Optimal (Vector2 (Complex Float)) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector2 (Complex Float)) Source #

Optimal (Vector2 Int64) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector2 Int64) Source #

Optimal (Vector2 Double) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector2 Double) Source #

Optimal (Vector3 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector3 Float) Source #

Optimal (Vector4 Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector4 Int32) Source #

Optimal (Vector4 Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector4 Float) Source #

Optimal (Vector4 Int16, Vector4 Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized (Vector4 Int16, Vector4 Int16) Source #

Optimal ((Vector2 :*: Vector2) Int32) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized ((Vector2 :*: Vector2) Int32) Source #

Optimal ((Vector2 :*: Vector2) Float) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized ((Vector2 :*: Vector2) Float) Source #

Optimal ((Vector2 :*: Vector4) Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized ((Vector2 :*: Vector4) Int16) Source #

Optimal ((Vector4 :*: Vector2) Int16) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized ((Vector4 :*: Vector2) Int16) Source #

Optimal ((Vector4 :*: Vector4) Int8) Source # 
Instance details

Defined in Math.Matrix.SIMD

Associated Types

type Optimized ((Vector4 :*: Vector4) Int8) Source #

Orphan instances

Scalar (SIMDVec 2 Double) ~ Double => LinearTransform Vector2 Vector2 Double Source # 
Instance details

LinearTransform Vector3 Vector3 Float Source # 
Instance details

LinearTransform Vector4 Vector4 Float Source # 
Instance details

Scalar (SIMDVec 2 Double) ~ Double => InnerProductSpace (Vector2 Double) Source # 
Instance details

InnerProductSpace (Vector3 Float) Source # 
Instance details

InnerProductSpace (Vector4 Float) Source # 
Instance details

NormedSpace (Complex Double) Source # 
Instance details

NormedSpace (Vector2 (Complex Float)) Source # 
Instance details