multilinear-0.3.0.0: Comprehensive and efficient (multi)linear algebra implementation.

Copyright(c) Artur M. Brodzki 2018
LicenseBSD3
Maintainerartur@brodzki.org
Stabilityexperimental
PortabilityWindows/POSIX
Safe HaskellNone
LanguageHaskell2010

Multilinear.Generic

Description

  • This module contains generic implementation of tensor defined as nested arrays
Synopsis

Documentation

data Tensor a where Source #

Tensor defined recursively as scalar or list of other tensors

c is type of a container, i is type of index size and a is type of tensor elements

Constructors

Scalar

Scalar

Fields

SimpleFinite

Simple, one-dimensional finite tensor

Fields

FiniteTensor

Finite array of other tensors

Fields

Instances
(Unbox a, Num a, NFData a) => Accessible Tensor a Source #

List allows for random access to tensor elements

Instance details

Defined in Multilinear.Generic

Methods

el :: Tensor a -> (String, [Int]) -> Tensor a Source #

($$|) :: Tensor a -> (String, [Int]) -> Tensor a Source #

(Unbox a, Num a, NFData a) => Multilinear Tensor a Source # 
Instance details

Defined in Multilinear.Generic

(Eq a, Unbox a) => Eq (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

(==) :: Tensor a -> Tensor a -> Bool #

(/=) :: Tensor a -> Tensor a -> Bool #

(Unbox a, Floating a, NFData a) => Floating (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

pi :: Tensor a #

exp :: Tensor a -> Tensor a #

log :: Tensor a -> Tensor a #

sqrt :: Tensor a -> Tensor a #

(**) :: Tensor a -> Tensor a -> Tensor a #

logBase :: Tensor a -> Tensor a -> Tensor a #

sin :: Tensor a -> Tensor a #

cos :: Tensor a -> Tensor a #

tan :: Tensor a -> Tensor a #

asin :: Tensor a -> Tensor a #

acos :: Tensor a -> Tensor a #

atan :: Tensor a -> Tensor a #

sinh :: Tensor a -> Tensor a #

cosh :: Tensor a -> Tensor a #

tanh :: Tensor a -> Tensor a #

asinh :: Tensor a -> Tensor a #

acosh :: Tensor a -> Tensor a #

atanh :: Tensor a -> Tensor a #

log1p :: Tensor a -> Tensor a #

expm1 :: Tensor a -> Tensor a #

log1pexp :: Tensor a -> Tensor a #

log1mexp :: Tensor a -> Tensor a #

(Unbox a, Fractional a, NFData a) => Fractional (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

(/) :: Tensor a -> Tensor a -> Tensor a #

recip :: Tensor a -> Tensor a #

fromRational :: Rational -> Tensor a #

(Unbox a, Num a, NFData a) => Num (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

(+) :: Tensor a -> Tensor a -> Tensor a #

(-) :: Tensor a -> Tensor a -> Tensor a #

(*) :: Tensor a -> Tensor a -> Tensor a #

negate :: Tensor a -> Tensor a #

abs :: Tensor a -> Tensor a #

signum :: Tensor a -> Tensor a #

fromInteger :: Integer -> Tensor a #

(Ord a, Unbox a) => Ord (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

compare :: Tensor a -> Tensor a -> Ordering #

(<) :: Tensor a -> Tensor a -> Bool #

(<=) :: Tensor a -> Tensor a -> Bool #

(>) :: Tensor a -> Tensor a -> Bool #

(>=) :: Tensor a -> Tensor a -> Bool #

max :: Tensor a -> Tensor a -> Tensor a #

min :: Tensor a -> Tensor a -> Tensor a #

(Unbox a, Show a, Num a, NFData a) => Show (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

showsPrec :: Int -> Tensor a -> ShowS #

show :: Tensor a -> String #

showList :: [Tensor a] -> ShowS #

Generic (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Associated Types

type Rep (Tensor a) :: Type -> Type #

Methods

from :: Tensor a -> Rep (Tensor a) x #

to :: Rep (Tensor a) x -> Tensor a #

NFData a => NFData (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

Methods

rnf :: Tensor a -> () #

type Rep (Tensor a) Source # 
Instance details

Defined in Multilinear.Generic

type Rep (Tensor a) = D1 (MetaData "Tensor" "Multilinear.Generic" "multilinear-0.3.0.0-CxKRGIgPe0wJsGTBUK17Mk" False) (C1 (MetaCons "Scalar" PrefixI True) (S1 (MetaSel (Just "scalarVal") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) :+: (C1 (MetaCons "SimpleFinite" PrefixI True) (S1 (MetaSel (Just "tensorFiniteIndex") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Index) :*: S1 (MetaSel (Just "tensorScalars") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Vector a))) :+: C1 (MetaCons "FiniteTensor" PrefixI True) (S1 (MetaSel (Just "tensorFiniteIndex") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Index) :*: S1 (MetaSel (Just "tensorsFinite") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Vector (Tensor a))))))

(!) Source #

Arguments

:: Unbox a 
=> Tensor a

tensor t

-> Int

index i

-> Tensor a

tensor t[i]

Recursive indexing on list tensor t ! i = t[i]

isScalar :: Unbox a => Tensor a -> Bool Source #

Return true if tensor is a scalar

isSimple :: Unbox a => Tensor a -> Bool Source #

Return true if tensor is a simple tensor

isFiniteTensor :: Unbox a => Tensor a -> Bool Source #

Return True if tensor is a complex tensor

dot Source #

Arguments

:: (Num a, Unbox a, NFData a) 
=> Tensor a

First dot product argument

-> Tensor a

Second dot product argument

-> Tensor a

Resulting dot product

_elemByElem Source #

Arguments

:: (Num a, Unbox a, NFData a) 
=> Tensor a

First argument of operator

-> Tensor a

Second argument of operator

-> (a -> a -> a)

Operator on tensor elements if indices are different

-> (Tensor a -> Tensor a -> Tensor a)

Tensor operator called if indices are the same

-> Tensor a

Result tensor

Apply a tensor operator elem by elem

contractionErr Source #

Arguments

:: TIndex

Index of first dot product parameter

-> TIndex

Index of second dot product parameter

-> Tensor a

Erorr message

tensorIndex :: Unbox a => Tensor a -> TIndex Source #

Return generic tensor index

_standardize :: (Num a, Unbox a, NFData a) => Tensor a -> Tensor a Source #