horde-ad-0.1.0.0: Higher Order Reverse Derivatives Efficiently - Automatic Differentiation
Safe HaskellNone
LanguageGHC2024

HordeAd.Core.Ast

Description

AST of corresponding to the horde-ad operations specified in the BaseTensor class and others. The AST is essential for efficient handling of second order operations such as build and map via BOT (bulk-operation transformation), and fold and mapAccum via symbolic nested derivatives. It also permits producing reusable reverse derivative terms, which can be simplified, fused, inlined once and then interpreted many times.

Note that Ast* modules rarely depend on Ops* and Carriers* modules (except for HordeAd.Core.AstInterpret and HordeAd.Core.AstEnv that describe how to go from Ast* to Ops*). Similarly, Ops* and Carriers* modules rarely depend on Ast* modules (except for HordeAd.Core.OpsAst and HordeAd.Core.CarriersAst that describe how to define Ops* in terms of Ast*). Syntax is relatively separated from semantics and they meet in the interpreter (HordeAd.Core.AstInterpret) and in the semantic model constructed from syntax (HordeAd.Core.OpsAst).

(A copy of the text above is in HordeAd.Core.Ops.)

Synopsis

The AstSpan tags and class

data AstSpanType Source #

A kind (a type intended to be promoted) marking whether an AST term is supposed to denote the primal part of a dual number, the dual part or the whole dual number. It's mainly used to index the terms of the AstTensor type and related GADTs.

Constructors

PrimalSpan 
DualSpan 
FullSpan 

class Typeable s => AstSpan (s :: AstSpanType) where Source #

Methods

fromPrimal :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms s y Source #

fromDual :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms s y Source #

primalPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms s y -> AstTensor ms 'PrimalSpan y Source #

dualPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms s y -> AstTensor ms 'DualSpan y Source #

Instances

Instances details
AstSpan 'DualSpan Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

fromPrimal :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms 'DualSpan y Source #

fromDual :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms 'DualSpan y Source #

primalPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms 'PrimalSpan y Source #

dualPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms 'DualSpan y Source #

AstSpan 'FullSpan Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

fromPrimal :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms 'FullSpan y Source #

fromDual :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms 'FullSpan y Source #

primalPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'FullSpan y -> AstTensor ms 'PrimalSpan y Source #

dualPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'FullSpan y -> AstTensor ms 'DualSpan y Source #

AstSpan 'PrimalSpan Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

fromPrimal :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms 'PrimalSpan y Source #

fromDual :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms 'PrimalSpan y Source #

primalPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms 'PrimalSpan y Source #

dualPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms 'DualSpan y Source #

sameAstSpan :: forall (s1 :: AstSpanType) (s2 :: AstSpanType). (AstSpan s1, AstSpan s2) => Maybe (s1 :~: s2) Source #

Variables and related types

type AstInt (ms :: AstMethodOfSharing) = AstTensor ms 'PrimalSpan ('TKScalar Int64) Source #

This is the (arbitrarily) chosen representation of terms denoting integers in the indexes of tensor operations.

data AstVarName (a :: AstSpanType) (b :: TK) Source #

Instances

Instances details
Enum1 (AstVarName s :: TK -> Type) Source # 
Instance details

Defined in HordeAd.Core.Ast

Associated Types

type Enum1Info (AstVarName s :: TK -> Type) 
Instance details

Defined in HordeAd.Core.Ast

type Enum1Info (AstVarName s :: TK -> Type)

Methods

fromEnum1 :: forall (a :: TK). AstVarName s a -> (Int, Enum1Info (AstVarName s)) #

toEnum1 :: Int -> Enum1Info (AstVarName s) -> Some (AstVarName s) #

TestEquality (AstVarName s :: TK -> Type) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

testEquality :: forall (a :: TK) (b :: TK). AstVarName s a -> AstVarName s b -> Maybe (a :~: b) #

Show (AstVarName s y) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

showsPrec :: Int -> AstVarName s y -> ShowS #

show :: AstVarName s y -> String #

showList :: [AstVarName s y] -> ShowS #

Eq (AstVarName s y) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

(==) :: AstVarName s y -> AstVarName s y -> Bool #

(/=) :: AstVarName s y -> AstVarName s y -> Bool #

type Enum1Info (AstVarName s :: TK -> Type) Source # 
Instance details

Defined in HordeAd.Core.Ast

type Enum1Info (AstVarName s :: TK -> Type)

mkAstVarName :: forall (s :: AstSpanType) (y :: TK). FullShapeTK y -> Maybe (Int64, Int64) -> AstVarId -> AstVarName s y Source #

varNameToAstVarId :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> AstVarId Source #

varNameToFTK :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> FullShapeTK y Source #

varNameToBounds :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> Maybe (Int64, Int64) Source #

astVar :: forall (s :: AstSpanType) (y :: TK) (ms :: AstMethodOfSharing). AstSpan s => AstVarName s y -> AstTensor ms s y Source #

data AstArtifactRev (x :: TK) (z :: TK) Source #

The reverse derivative artifact.

Instances

Instances details
Show (AstArtifactRev x z) Source # 
Instance details

Defined in HordeAd.Core.Ast

data AstArtifactFwd (x :: TK) (z :: TK) Source #

The forward derivative artifact.

Instances

Instances details
Show (AstArtifactFwd x z) Source # 
Instance details

Defined in HordeAd.Core.Ast

type AstIxS (ms :: AstMethodOfSharing) (sh :: [Nat]) = IxS sh (AstInt ms) Source #

type AstVarListS (sh :: [Nat]) = ListS sh (Const IntVarName :: Nat -> Type) Source #

pattern AstLeqInt :: AstInt ms -> AstInt ms -> AstBool ms Source #

AST

data AstTensor (a :: AstMethodOfSharing) (b :: AstSpanType) (c :: TK) where Source #

AST for tensors that are meant to be differentiated.

Constructors

AstPair :: forall (y :: TK) (z :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstTensor a b y -> AstTensor a b z -> AstTensor a b ('TKProduct y z) 
AstProject1 :: forall (c :: TK) (z :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstTensor a b ('TKProduct c z) -> AstTensor a b c 
AstProject2 :: forall (y :: TK) (c :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstTensor a b ('TKProduct y c) -> AstTensor a b c 
AstFromVector :: forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> SingletonTK y -> Vector (AstTensor a b y) -> AstTensor a b (BuildTensorKind k y) 
AstSum :: forall (c :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> SingletonTK c -> AstTensor a b (BuildTensorKind k c) -> AstTensor a b c 
AstReplicate :: forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> SingletonTK y -> AstTensor a b y -> AstTensor a b (BuildTensorKind k y) 
AstMapAccumRDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> FullShapeTK by -> FullShapeTK ey -> AstHFun b b ('TKProduct accy ey) ('TKProduct accy by) -> AstHFun b b ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> AstHFun b b ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> AstTensor a b accy -> AstTensor a b (BuildTensorKind k ey) -> AstTensor a b ('TKProduct accy (BuildTensorKind k by)) 
AstMapAccumLDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> FullShapeTK by -> FullShapeTK ey -> AstHFun b b ('TKProduct accy ey) ('TKProduct accy by) -> AstHFun b b ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> AstHFun b b ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> AstTensor a b accy -> AstTensor a b (BuildTensorKind k ey) -> AstTensor a b ('TKProduct accy (BuildTensorKind k by)) 
AstApply :: forall (s1 :: AstSpanType) (b :: AstSpanType) (x :: TK) (c :: TK) (a :: AstMethodOfSharing). (AstSpan s1, AstSpan b) => AstHFun s1 b x c -> AstTensor a s1 x -> AstTensor a b c 
AstVar :: forall (b :: AstSpanType) (c :: TK) (a :: AstMethodOfSharing). AstVarName b c -> AstTensor a b c 
AstCond :: forall (c :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstBool a -> AstTensor a b c -> AstTensor a b c -> AstTensor a b c 
AstBuild1 :: forall (y :: TK) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). SNat k -> SingletonTK y -> (IntVarName, AstTensor a b y) -> AstTensor a b (BuildTensorKind k y) 
AstLet :: forall (y :: TK) (c :: TK) (s :: AstSpanType) (b :: AstSpanType). AstSpan s => AstVarName s y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet b c -> AstTensor 'AstMethodLet b c 
AstShare :: forall (b :: AstSpanType) (c :: TK). AstVarName b c -> AstTensor 'AstMethodShare b c -> AstTensor 'AstMethodShare b c 
AstToShare :: forall (b :: AstSpanType) (c :: TK). AstTensor 'AstMethodLet b c -> AstTensor 'AstMethodShare b c 
AstPrimalPart :: forall (c :: TK) (a :: AstMethodOfSharing). AstTensor a 'FullSpan c -> AstTensor a 'PrimalSpan c 
AstDualPart :: forall (c :: TK) (a :: AstMethodOfSharing). AstTensor a 'FullSpan c -> AstTensor a 'DualSpan c 
AstFromPrimal :: forall (c :: TK) (a :: AstMethodOfSharing). AstTensor a 'PrimalSpan c -> AstTensor a 'FullSpan c 
AstFromDual :: forall (c :: TK) (a :: AstMethodOfSharing). AstTensor a 'DualSpan c -> AstTensor a 'FullSpan c 
AstPlusK :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). GoodScalar r => AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstTimesK :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). GoodScalar r => AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstN1K :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). GoodScalar r => OpCodeNum1 -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstR1K :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). (RealFloatH r, FloatElt r, GoodScalar r) => OpCode1 -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstR2K :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). (RealFloatH r, FloatElt r, GoodScalar r) => OpCode2 -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstI2K :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType). (IntegralH r, IntElt r, GoodScalar r) => OpCodeIntegral2 -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) -> AstTensor a b ('TKScalar r) 
AstConcreteK :: forall r (a :: AstMethodOfSharing). GoodScalar r => r -> AstTensor a 'PrimalSpan ('TKScalar r) 
AstFloorK :: forall r1 r2 (a :: AstMethodOfSharing). (GoodScalar r1, RealFrac r1, GoodScalar r2, Integral r2) => AstTensor a 'PrimalSpan ('TKScalar r1) -> AstTensor a 'PrimalSpan ('TKScalar r2) 
AstFromIntegralK :: forall r1 r2 (a :: AstMethodOfSharing). (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor a 'PrimalSpan ('TKScalar r1) -> AstTensor a 'PrimalSpan ('TKScalar r2) 
AstCastK :: forall r1 r2 (a :: AstMethodOfSharing) (b :: AstSpanType). (GoodScalar r1, RealFrac r1, RealFrac r2, GoodScalar r2) => AstTensor a b ('TKScalar r1) -> AstTensor a b ('TKScalar r2) 
AstPlusS :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). GoodScalar r => AstTensor a b (TKS sh r) -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstTimesS :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). GoodScalar r => AstTensor a b (TKS sh r) -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstN1S :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). GoodScalar r => OpCodeNum1 -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstR1S :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). (RealFloatH r, FloatElt r, GoodScalar r) => OpCode1 -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstR2S :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). (RealFloatH r, FloatElt r, GoodScalar r) => OpCode2 -> AstTensor a b (TKS sh r) -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstI2S :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). (IntegralH r, IntElt r, GoodScalar r) => OpCodeIntegral2 -> AstTensor a b (TKS sh r) -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstConcreteS :: forall r (sh :: [Nat]) (a :: AstMethodOfSharing). GoodScalar r => Shaped sh r -> AstTensor a 'PrimalSpan ('TKS2 sh ('TKScalar r)) 
AstFloorS :: forall r1 r2 (a :: AstMethodOfSharing) (sh :: [Nat]). (GoodScalar r1, RealFrac r1, Integral r2, GoodScalar r2) => AstTensor a 'PrimalSpan (TKS sh r1) -> AstTensor a 'PrimalSpan ('TKS2 sh ('TKScalar r2)) 
AstFromIntegralS :: forall r1 r2 (a :: AstMethodOfSharing) (sh :: [Nat]). (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor a 'PrimalSpan (TKS sh r1) -> AstTensor a 'PrimalSpan ('TKS2 sh ('TKScalar r2)) 
AstCastS :: forall r1 r2 (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). (GoodScalar r1, RealFrac r1, GoodScalar r2, RealFrac r2) => AstTensor a b (TKS sh r1) -> AstTensor a b ('TKS2 sh ('TKScalar r2)) 
AstIndexS :: forall (shm :: [Nat]) (shn :: [Nat]) (x :: TK) (b :: AstSpanType) (a :: AstMethodOfSharing). ShS shn -> AstTensor a b ('TKS2 (shm ++ shn) x) -> AstIxS a shm -> AstTensor a b ('TKS2 shn x) 
AstScatterS :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK) (b :: AstSpanType) (a :: AstMethodOfSharing). ShS shn -> AstTensor a b ('TKS2 (shm ++ shn) x) -> (AstVarListS shm, AstIxS a shp) -> AstTensor a b ('TKS2 (shp ++ shn) x) 
AstGatherS :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK) (b :: AstSpanType) (a :: AstMethodOfSharing). ShS shn -> AstTensor a b ('TKS2 (shp ++ shn) x) -> (AstVarListS shm, AstIxS a shp) -> AstTensor a b ('TKS2 (shm ++ shn) x) 
AstMinIndexS :: forall (n :: Nat) (sh :: [Nat]) r r2 (a :: AstMethodOfSharing). (GoodScalar r, GoodScalar r2) => AstTensor a 'PrimalSpan (TKS (n ': sh) r) -> AstTensor a 'PrimalSpan ('TKS2 (Init (n ': sh)) ('TKScalar r2)) 
AstMaxIndexS :: forall (n :: Nat) (sh :: [Nat]) r r2 (a :: AstMethodOfSharing). (GoodScalar r, GoodScalar r2) => AstTensor a 'PrimalSpan (TKS (n ': sh) r) -> AstTensor a 'PrimalSpan ('TKS2 (Init (n ': sh)) ('TKScalar r2)) 
AstIotaS :: forall (n :: Nat) r (a :: AstMethodOfSharing). GoodScalar r => SNat n -> AstTensor a 'PrimalSpan ('TKS2 '[n] ('TKScalar r)) 
AstAppendS :: forall (m :: Natural) (n :: Natural) (sh :: [Natural]) (x :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstTensor a b ('TKS2 (m ': sh) x) -> AstTensor a b ('TKS2 (n ': sh) x) -> AstTensor a b ('TKS2 ((m + n) ': sh) x) 
AstSliceS :: forall (i :: Nat) (n :: Nat) (k :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]) (x :: TK). SNat i -> SNat n -> SNat k -> AstTensor a b ('TKS2 (((i + n) + k) ': sh) x) -> AstTensor a b ('TKS2 (n ': sh) x) 
AstReverseS :: forall (n :: Nat) (sh :: [Nat]) (x :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). AstTensor a b ('TKS2 (n ': sh) x) -> AstTensor a b ('TKS2 (n ': sh) x) 
AstTransposeS :: forall (perm :: [Natural]) (sh :: [Nat]) (a :: AstMethodOfSharing) (b :: AstSpanType) (x :: TK). (IsPermutation perm, Rank perm <= Rank sh) => Perm perm -> AstTensor a b ('TKS2 sh x) -> AstTensor a b ('TKS2 (PermutePrefix perm sh) x) 
AstReshapeS :: forall (sh :: [Natural]) (sh2 :: [Natural]) (a :: AstMethodOfSharing) (b :: AstSpanType) (x :: TK). Product sh ~ Product sh2 => ShS sh2 -> AstTensor a b ('TKS2 sh x) -> AstTensor a b ('TKS2 sh2 x) 
AstConvert :: forall (a1 :: TK) (c :: TK) (a :: AstMethodOfSharing) (b :: AstSpanType). TKConversion a1 c -> AstTensor a b a1 -> AstTensor a b c 
AstSum0S :: forall (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]) (x :: TK). AstTensor a b ('TKS2 sh x) -> AstTensor a b ('TKS2 ('[] :: [Nat]) x) 
AstDot0S :: forall r (a :: AstMethodOfSharing) (b :: AstSpanType) (sh :: [Nat]). GoodScalar r => AstTensor a b (TKS sh r) -> AstTensor a b (TKS sh r) -> AstTensor a b ('TKS2 ('[] :: [Nat]) ('TKScalar r)) 
AstDot1InS :: forall (sh :: [Nat]) (n :: Nat) r (a :: AstMethodOfSharing) (b :: AstSpanType). GoodScalar r => ShS sh -> SNat n -> AstTensor a b (TKS (sh ++ '[n]) r) -> AstTensor a b (TKS (sh ++ '[n]) r) -> AstTensor a b ('TKS2 sh ('TKScalar r)) 
AstMatmul2S :: forall r (m :: Nat) (n :: Nat) (p :: Nat) (a :: AstMethodOfSharing) (b :: AstSpanType). GoodScalar r => SNat m -> SNat n -> SNat p -> AstTensor a b (TKS '[m, n] r) -> AstTensor a b (TKS '[n, p] r) -> AstTensor a b ('TKS2 '[m, p] ('TKScalar r)) 

Instances

Instances details
AstSpan s => ConvertTensor (AstTensor 'AstMethodLet s) Source # 
Instance details

Defined in HordeAd.Core.AstSimplify

Methods

tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> AstTensor 'AstMethodLet s a -> AstTensor 'AstMethodLet s b Source #

kfromR :: GoodScalar r => AstTensor 'AstMethodLet s (TKR 0 r) -> AstTensor 'AstMethodLet s ('TKScalar r) Source #

kfromS :: GoodScalar r => AstTensor 'AstMethodLet s (TKS ('[] :: [Nat]) r) -> AstTensor 'AstMethodLet s ('TKScalar r) Source #

kfromX :: GoodScalar r => AstTensor 'AstMethodLet s (TKX ('[] :: [Maybe Nat]) r) -> AstTensor 'AstMethodLet s ('TKScalar r) Source #

rfromK :: GoodScalar r => AstTensor 'AstMethodLet s ('TKScalar r) -> AstTensor 'AstMethodLet s (TKR 0 r) Source #

rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKR2 (Rank sh) x) Source #

rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKR2 (Rank sh) x) Source #

sfromK :: GoodScalar r => AstTensor 'AstMethodLet s ('TKScalar r) -> AstTensor 'AstMethodLet s (TKS ('[] :: [Nat]) r) Source #

sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 (Rank sh) x) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 sh' x) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

xfromK :: GoodScalar r => AstTensor 'AstMethodLet s ('TKScalar r) -> AstTensor 'AstMethodLet s (TKX ('[] :: [Maybe Nat]) r) Source #

xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 (Rank sh') x) -> AstTensor 'AstMethodLet s ('TKX2 sh' x) Source #

xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 sh' x) Source #

rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => AstTensor 'AstMethodLet s ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> AstTensor 'AstMethodLet s ('TKR2 n ('TKProduct y z)) Source #

runzip :: forall (y :: TK) (z :: TK) (n :: Nat). AstTensor 'AstMethodLet s ('TKR2 n ('TKProduct y z)) -> AstTensor 'AstMethodLet s ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source #

szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => AstTensor 'AstMethodLet s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> AstTensor 'AstMethodLet s ('TKS2 sh ('TKProduct y z)) Source #

sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). AstTensor 'AstMethodLet s ('TKS2 sh ('TKProduct y z)) -> AstTensor 'AstMethodLet s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source #

xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => AstTensor 'AstMethodLet s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> AstTensor 'AstMethodLet s ('TKX2 sh ('TKProduct y z)) Source #

xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). AstTensor 'AstMethodLet s ('TKX2 sh ('TKProduct y z)) -> AstTensor 'AstMethodLet s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source #

rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> AstTensor 'AstMethodLet s ('TKR2 (n + m) x) -> AstTensor 'AstMethodLet s ('TKR2 n ('TKR2 m x)) Source #

rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> AstTensor 'AstMethodLet s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> AstTensor 'AstMethodLet s ('TKR2 n ('TKS2 sh2 x)) Source #

rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> AstTensor 'AstMethodLet s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> AstTensor 'AstMethodLet s ('TKR2 n ('TKX2 sh2 x)) Source #

snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> AstTensor 'AstMethodLet s ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKR2 m x)) Source #

snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> AstTensor 'AstMethodLet s ('TKS2 (sh1 ++ sh2) x) -> AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKS2 sh2 x)) Source #

snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> AstTensor 'AstMethodLet s ('TKX2 (MapJust sh1 ++ sh2) x) -> AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKX2 sh2 x)) Source #

xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKR2 m x)) Source #

xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ MapJust sh2) x) -> AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKS2 sh2 x)) Source #

xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ sh2) x) -> AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKX2 sh2 x)) Source #

runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 n ('TKR2 m x)) -> AstTensor 'AstMethodLet s ('TKR2 (n + m) x) Source #

runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 n ('TKS2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) Source #

runNestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 n ('TKX2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source #

sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKR2 m x)) -> AstTensor 'AstMethodLet s ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source #

sunNest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKS2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKS2 (sh1 ++ sh2) x) Source #

sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh1 ('TKX2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKX2 (MapJust sh1 ++ sh2) x) Source #

xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKR2 m x)) -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source #

xunNestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShX sh1, KnownShS sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKS2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ MapJust sh2) x) Source #

xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 sh1 ('TKX2 sh2 x)) -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ sh2) x) Source #

tpairConv :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s x -> AstTensor 'AstMethodLet s z -> AstTensor 'AstMethodLet s ('TKProduct x z) Source #

tunpairConv :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s ('TKProduct x z) -> (AstTensor 'AstMethodLet s x, AstTensor 'AstMethodLet s z) Source #

AstSpan s => BaseTensor (AstTensor 'AstMethodLet s) Source #

The checks and error messages in these functions result in complete shape-checking of the ranked and mixed user code (shaped is already fully checked by the Haskell type system).

Instance details

Defined in HordeAd.Core.OpsAst

Methods

rshape :: forall (n :: Nat) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 n x) -> IShR n Source #

rlength :: forall (n :: Nat) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 n x) -> Int Source #

rsize :: forall (n :: Nat) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 n x) -> Int Source #

rwidth :: forall (n :: Natural) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> Int Source #

sshape :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 sh x) -> ShS sh Source #

slength :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 sh x) -> Int Source #

ssize :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 sh x) -> Int Source #

swidth :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) -> Int Source #

xshape :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 sh x) -> IShX sh Source #

xlength :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 sh x) -> Int Source #

xsize :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 sh x) -> Int Source #

xwidth :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 (mn ': sh) x) -> Int Source #

tsize :: forall (y :: TK). SingletonTK y -> AstTensor 'AstMethodLet s y -> Int Source #

tftk :: forall (y :: TK). SingletonTK y -> AstTensor 'AstMethodLet s y -> FullShapeTK y Source #

tpair :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s x -> AstTensor 'AstMethodLet s z -> AstTensor 'AstMethodLet s ('TKProduct x z) Source #

tproject1 :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s ('TKProduct x z) -> AstTensor 'AstMethodLet s x Source #

tproject2 :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s ('TKProduct x z) -> AstTensor 'AstMethodLet s z Source #

tcond :: forall (y :: TK). Boolean (BoolOf (AstTensor 'AstMethodLet s)) => SingletonTK y -> BoolOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y Source #

trconcrete :: forall r (n :: Nat). GoodScalar r => Ranked n r -> AstTensor 'AstMethodLet s (TKR n r) Source #

tsconcrete :: forall r (sh :: [Nat]). GoodScalar r => Shaped sh r -> AstTensor 'AstMethodLet s (TKS sh r) Source #

txconcrete :: forall r (sh :: [Maybe Nat]). GoodScalar r => Mixed sh r -> AstTensor 'AstMethodLet s (TKX sh r) Source #

tkconcrete :: GoodScalar r => r -> AstTensor 'AstMethodLet s ('TKScalar r) Source #

tconcrete :: forall (y :: TK). FullShapeTK y -> Concrete y -> AstTensor 'AstMethodLet s y Source #

trfromVector :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Vector (AstTensor 'AstMethodLet s ('TKR2 n x)) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trfromVector0N :: forall (n :: Nat) (x :: TK). KnownSTK x => IShR n -> Vector (AstTensor 'AstMethodLet s ('TKR2 0 x)) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

trunravelToList :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> [AstTensor 'AstMethodLet s ('TKR2 n x)] Source #

tsfromVector :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => Vector (AstTensor 'AstMethodLet s ('TKS2 sh x)) -> AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) Source #

tsfromVector0N :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => Vector (AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x)) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

tsunravelToList :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) -> [AstTensor 'AstMethodLet s ('TKS2 sh x)] Source #

txfromVector :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => Vector (AstTensor 'AstMethodLet s ('TKX2 sh x)) -> AstTensor 'AstMethodLet s ('TKX2 ('Just n ': sh) x) Source #

txfromVector0N :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => IShX sh -> Vector (AstTensor 'AstMethodLet s ('TKX2 ('[] :: [Maybe Nat]) x)) -> AstTensor 'AstMethodLet s ('TKX2 sh x) Source #

txunravelToList :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 ('Just n ': sh) x) -> [AstTensor 'AstMethodLet s ('TKX2 sh x)] Source #

tfromVector :: forall (y :: TK) (k :: Nat). SNat k -> SingletonTK y -> Vector (AstTensor 'AstMethodLet s y) -> AstTensor 'AstMethodLet s (BuildTensorKind k y) Source #

tfromListR :: forall (y :: TK) (k :: Nat). SingletonTK y -> ListR k (AstTensor 'AstMethodLet s y) -> AstTensor 'AstMethodLet s (BuildTensorKind k y) Source #

trsum :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

trsum0 :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 n x) -> AstTensor 'AstMethodLet s ('TKR2 0 x) Source #

trdot0 :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => AstTensor 'AstMethodLet s (TKR n r) -> AstTensor 'AstMethodLet s (TKR n r) -> AstTensor 'AstMethodLet s (TKR 0 r) Source #

trdot1In :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => AstTensor 'AstMethodLet s (TKR (1 + n) r) -> AstTensor 'AstMethodLet s (TKR (1 + n) r) -> AstTensor 'AstMethodLet s (TKR n r) Source #

trmatvecmul :: GoodScalar r => AstTensor 'AstMethodLet s (TKR 2 r) -> AstTensor 'AstMethodLet s (TKR 1 r) -> AstTensor 'AstMethodLet s (TKR 1 r) Source #

trmatmul2 :: GoodScalar r => AstTensor 'AstMethodLet s (TKR 2 r) -> AstTensor 'AstMethodLet s (TKR 2 r) -> AstTensor 'AstMethodLet s (TKR 2 r) Source #

trreplicate :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Int -> AstTensor 'AstMethodLet s ('TKR2 n x) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trreplicate0N :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => IShR n -> AstTensor 'AstMethodLet s ('TKR2 0 x) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

tssum :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

tssum0 :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x) Source #

tsdot0 :: forall (sh :: [Nat]) r. (KnownShS sh, GoodScalar r) => AstTensor 'AstMethodLet s (TKS sh r) -> AstTensor 'AstMethodLet s (TKS sh r) -> AstTensor 'AstMethodLet s (TKS ('[] :: [Nat]) r) Source #

tsdot1In :: forall (sh :: [Nat]) r (n :: Nat). (KnownShS sh, GoodScalar r) => SNat n -> AstTensor 'AstMethodLet s (TKS (sh ++ '[n]) r) -> AstTensor 'AstMethodLet s (TKS (sh ++ '[n]) r) -> AstTensor 'AstMethodLet s (TKS sh r) Source #

tsmatvecmul :: forall (m :: Nat) (n :: Nat) r. (KnownNat m, KnownNat n, GoodScalar r) => AstTensor 'AstMethodLet s (TKS '[m, n] r) -> AstTensor 'AstMethodLet s (TKS '[n] r) -> AstTensor 'AstMethodLet s (TKS '[m] r) Source #

tsmatmul2 :: forall (m :: Nat) (n :: Nat) (p :: Nat) r. (KnownNat m, KnownNat n, KnownNat p, GoodScalar r) => AstTensor 'AstMethodLet s (TKS '[m, n] r) -> AstTensor 'AstMethodLet s (TKS '[n, p] r) -> AstTensor 'AstMethodLet s (TKS '[m, p] r) Source #

tsreplicate :: forall (sh :: [Nat]) (k :: Nat) (x :: TK). KnownSTK x => SNat k -> ShS sh -> AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKS2 (k ': sh) x) Source #

tsreplicate0N :: forall (sh :: [Nat]) (x :: TK). KnownSTK x => ShS sh -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

txsum :: forall (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat n, KnownShX sh, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 ('Just n ': sh) x) -> AstTensor 'AstMethodLet s ('TKX2 sh x) Source #

txsum0 :: forall (sh :: [Maybe Nat]) (x :: TK). (KnownShX sh, KnownSTK x, ConvertTensor (AstTensor 'AstMethodLet s)) => AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 ('[] :: [Maybe Nat]) x) Source #

txdot0 :: forall (sh :: [Maybe Nat]) r. (KnownShX sh, GoodScalar r, ConvertTensor (AstTensor 'AstMethodLet s)) => AstTensor 'AstMethodLet s (TKX sh r) -> AstTensor 'AstMethodLet s (TKX sh r) -> AstTensor 'AstMethodLet s (TKX ('[] :: [Maybe Nat]) r) Source #

txdot1In :: forall (sh :: [Maybe Nat]) r (n :: Nat). (KnownShX sh, GoodScalar r) => SNat n -> AstTensor 'AstMethodLet s (TKX (sh ++ '['Just n]) r) -> AstTensor 'AstMethodLet s (TKX (sh ++ '['Just n]) r) -> AstTensor 'AstMethodLet s (TKX sh r) Source #

txmatvecmul :: forall (mm :: Maybe Nat) (mn :: Maybe Nat) r. (GoodScalar r, ConvertTensor (AstTensor 'AstMethodLet s)) => SMayNat Int SNat mm -> SMayNat Int SNat mn -> AstTensor 'AstMethodLet s (TKX '[mm, mn] r) -> AstTensor 'AstMethodLet s (TKX '[mn] r) -> AstTensor 'AstMethodLet s (TKX '[mm] r) Source #

txmatmul2 :: forall (m :: Nat) (n :: Nat) (p :: Nat) r. (KnownNat m, KnownNat n, KnownNat p, GoodScalar r, ConvertTensor (AstTensor 'AstMethodLet s)) => AstTensor 'AstMethodLet s (TKX '['Just m, 'Just n] r) -> AstTensor 'AstMethodLet s (TKX '['Just n, 'Just p] r) -> AstTensor 'AstMethodLet s (TKX '['Just m, 'Just p] r) Source #

txreplicate :: forall (sh :: [Maybe Nat]) (k :: Nat) (x :: TK). KnownSTK x => SNat k -> StaticShX sh -> AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 ('Just k ': sh) x) Source #

txreplicate0N :: forall (sh :: [Maybe Nat]) (x :: TK). (KnownShX sh, KnownSTK x) => IShX sh -> AstTensor 'AstMethodLet s ('TKX2 ('[] :: [Maybe Nat]) x) -> AstTensor 'AstMethodLet s ('TKX2 sh x) Source #

trindex :: forall (m :: Nat) (n :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 (m + n) x) -> IxROf (AstTensor 'AstMethodLet s) m -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

trindex0 :: forall (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => AstTensor 'AstMethodLet s ('TKR2 m x) -> IxROf (AstTensor 'AstMethodLet s) m -> AstTensor 'AstMethodLet s ('TKR2 0 x) Source #

troneHot :: forall (m :: Nat) (n :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownSTK x, BoolOf (PrimalOf (AstTensor 'AstMethodLet s)) ~ BoolOf (AstTensor 'AstMethodLet s), EqH (PrimalOf (AstTensor 'AstMethodLet s)) ('TKScalar Int64)) => IShR m -> AstTensor 'AstMethodLet s ('TKR2 n x) -> IxROf (AstTensor 'AstMethodLet s) m -> AstTensor 'AstMethodLet s ('TKR2 (m + n) x) Source #

trscatter :: forall (m :: Nat) (n :: Nat) (p :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownNat p, KnownSTK x) => IShR (p + n) -> AstTensor 'AstMethodLet s ('TKR2 (m + n) x) -> (IxROf (AstTensor 'AstMethodLet s) m -> IxROf (AstTensor 'AstMethodLet s) p) -> AstTensor 'AstMethodLet s ('TKR2 (p + n) x) Source #

trscatter1 :: forall (n :: Nat) (p :: Nat) (x :: TK). (KnownNat n, KnownNat p, KnownSTK x) => IShR (p + n) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxROf (AstTensor 'AstMethodLet s) p) -> AstTensor 'AstMethodLet s ('TKR2 (p + n) x) Source #

trgather :: forall (m :: Nat) (n :: Nat) (p :: Nat) (x :: TK). (KnownNat m, KnownNat n, KnownNat p, KnownSTK x) => IShR (m + n) -> AstTensor 'AstMethodLet s ('TKR2 (p + n) x) -> (IxROf (AstTensor 'AstMethodLet s) m -> IxROf (AstTensor 'AstMethodLet s) p) -> AstTensor 'AstMethodLet s ('TKR2 (m + n) x) Source #

trgather1 :: forall (n :: Nat) (p :: Nat) (x :: TK). (KnownNat n, KnownNat p, KnownSTK x) => Int -> AstTensor 'AstMethodLet s ('TKR2 (p + n) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxROf (AstTensor 'AstMethodLet s) p) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

tsindex :: forall (shm :: [Nat]) (shn :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (shm ++ shn) x) -> IxSOf (AstTensor 'AstMethodLet s) shm -> AstTensor 'AstMethodLet s ('TKS2 shn x) Source #

tsindex0 :: forall (sh1 :: [Nat]) (x :: TK). (KnownShS sh1, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 sh1 x) -> IxSOf (AstTensor 'AstMethodLet s) sh1 -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x) Source #

tsoneHot :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x, BoolOf (PrimalOf (AstTensor 'AstMethodLet s)) ~ BoolOf (AstTensor 'AstMethodLet s), EqH (PrimalOf (AstTensor 'AstMethodLet s)) ('TKScalar Int64)) => AstTensor 'AstMethodLet s ('TKS2 sh2 x) -> IxSOf (AstTensor 'AstMethodLet s) sh1 -> AstTensor 'AstMethodLet s ('TKS2 (sh1 ++ sh2) x) Source #

tsscatter :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownShS shp, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (shm ++ shn) x) -> (IxSOf (AstTensor 'AstMethodLet s) shm -> IxSOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKS2 (shp ++ shn) x) Source #

tsscatter1 :: forall (n2 :: Nat) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownNat n2, KnownShS shn, KnownShS shp, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (n2 ': shn) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxSOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKS2 (shp ++ shn) x) Source #

tsgather :: forall (shm :: [Nat]) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownShS shm, KnownShS shn, KnownShS shp, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (shp ++ shn) x) -> (IxSOf (AstTensor 'AstMethodLet s) shm -> IxSOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKS2 (shm ++ shn) x) Source #

tsgather1 :: forall (n2 :: Nat) (shn :: [Nat]) (shp :: [Nat]) (x :: TK). (KnownNat n2, KnownShS shn, KnownShS shp, KnownSTK x) => AstTensor 'AstMethodLet s ('TKS2 (shp ++ shn) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxSOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKS2 (n2 ': shn) x) Source #

txindex :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ sh2) x) -> IxXOf (AstTensor 'AstMethodLet s) sh1 -> AstTensor 'AstMethodLet s ('TKX2 sh2 x) Source #

txindex0 :: forall (sh1 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownSTK x) => AstTensor 'AstMethodLet s ('TKX2 sh1 x) -> IxXOf (AstTensor 'AstMethodLet s) sh1 -> AstTensor 'AstMethodLet s ('TKX2 ('[] :: [Maybe Nat]) x) Source #

txoneHot :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x, BoolOf (PrimalOf (AstTensor 'AstMethodLet s)) ~ BoolOf (AstTensor 'AstMethodLet s), EqH (PrimalOf (AstTensor 'AstMethodLet s)) ('TKScalar Int64), ConvertTensor (AstTensor 'AstMethodLet s)) => IShX sh1 -> AstTensor 'AstMethodLet s ('TKX2 sh2 x) -> IxXOf (AstTensor 'AstMethodLet s) sh1 -> AstTensor 'AstMethodLet s ('TKX2 (sh1 ++ sh2) x) Source #

txscatter :: forall (shm :: [Maybe Nat]) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownShX shm, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shp ++ shn) -> AstTensor 'AstMethodLet s ('TKX2 (shm ++ shn) x) -> (IxXOf (AstTensor 'AstMethodLet s) shm -> IxXOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKX2 (shp ++ shn) x) Source #

txscatter1 :: forall (n2 :: Nat) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownNat n2, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shp ++ shn) -> AstTensor 'AstMethodLet s ('TKX2 ('Just n2 ': shn) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxXOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKX2 (shp ++ shn) x) Source #

txgather :: forall (shm :: [Maybe Nat]) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownShX shm, KnownShX shn, KnownShX shp, KnownSTK x) => IShX (shm ++ shn) -> AstTensor 'AstMethodLet s ('TKX2 (shp ++ shn) x) -> (IxXOf (AstTensor 'AstMethodLet s) shm -> IxXOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKX2 (shm ++ shn) x) Source #

txgather1 :: forall (n2 :: Nat) (shn :: [Maybe Nat]) (shp :: [Maybe Nat]) (x :: TK). (KnownNat n2, KnownShX shn, KnownShX shp, KnownSTK x) => SNat n2 -> AstTensor 'AstMethodLet s ('TKX2 (shp ++ shn) x) -> (IntOf (AstTensor 'AstMethodLet s) -> IxXOf (AstTensor 'AstMethodLet s) shp) -> AstTensor 'AstMethodLet s ('TKX2 ('Just n2 ': shn) x) Source #

trfloor :: forall r r2 (n :: Nat). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => AstTensor 'AstMethodLet s (TKR n r) -> AstTensor 'AstMethodLet s (TKR n r2) Source #

trfromIntegral :: forall r1 r2 (n :: Nat). (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor 'AstMethodLet s (TKR n r1) -> AstTensor 'AstMethodLet s (TKR n r2) Source #

trcast :: forall r1 r2 (n :: Nat). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => AstTensor 'AstMethodLet s (TKR n r1) -> AstTensor 'AstMethodLet s (TKR n r2) Source #

trminIndex :: forall (n :: Natural) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKR (1 + n) r) -> AstTensor 'AstMethodLet s (TKR n r2) Source #

trmaxIndex :: forall (n :: Natural) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKR (1 + n) r) -> AstTensor 'AstMethodLet s (TKR n r2) Source #

triota :: GoodScalar r => Int -> AstTensor 'AstMethodLet s (TKR 1 r) Source #

tsfloor :: forall r r2 (sh :: [Nat]). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => AstTensor 'AstMethodLet s (TKS sh r) -> AstTensor 'AstMethodLet s (TKS sh r2) Source #

tsfromIntegral :: forall r1 r2 (sh :: [Nat]). (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor 'AstMethodLet s (TKS sh r1) -> AstTensor 'AstMethodLet s (TKS sh r2) Source #

tscast :: forall r1 r2 (sh :: [Nat]). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => AstTensor 'AstMethodLet s (TKS sh r1) -> AstTensor 'AstMethodLet s (TKS sh r2) Source #

tsminIndex :: forall (n :: Nat) (sh :: [Nat]) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKS (n ': sh) r) -> AstTensor 'AstMethodLet s (TKS (Init (n ': sh)) r2) Source #

tsmaxIndex :: forall (n :: Nat) (sh :: [Nat]) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKS (n ': sh) r) -> AstTensor 'AstMethodLet s (TKS (Init (n ': sh)) r2) Source #

tsiota :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => AstTensor 'AstMethodLet s (TKS '[n] r) Source #

txfloor :: forall r r2 (sh :: [Maybe Nat]). (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => AstTensor 'AstMethodLet s (TKX sh r) -> AstTensor 'AstMethodLet s (TKX sh r2) Source #

txfromIntegral :: forall r1 r2 (sh :: [Maybe Nat]). (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor 'AstMethodLet s (TKX sh r1) -> AstTensor 'AstMethodLet s (TKX sh r2) Source #

txcast :: forall r1 r2 (sh :: [Maybe Nat]). (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => AstTensor 'AstMethodLet s (TKX sh r1) -> AstTensor 'AstMethodLet s (TKX sh r2) Source #

txminIndex :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKX (mn ': sh) r) -> AstTensor 'AstMethodLet s (TKX (Init (mn ': sh)) r2) Source #

txmaxIndex :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) r r2. (GoodScalar r, GoodScalar r2) => AstTensor 'AstMethodLet s (TKX (mn ': sh) r) -> AstTensor 'AstMethodLet s (TKX (Init (mn ': sh)) r2) Source #

txiota :: forall (n :: Nat) r. (KnownNat n, GoodScalar r) => AstTensor 'AstMethodLet s (TKX '['Just n] r) Source #

tkfloor :: (GoodScalar r, RealFrac r, GoodScalar r2, Integral r2) => AstTensor 'AstMethodLet s ('TKScalar r) -> AstTensor 'AstMethodLet s ('TKScalar r2) Source #

tkfromIntegral :: (GoodScalar r1, Integral r1, GoodScalar r2) => AstTensor 'AstMethodLet s ('TKScalar r1) -> AstTensor 'AstMethodLet s ('TKScalar r2) Source #

tkcast :: (RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2) => AstTensor 'AstMethodLet s ('TKScalar r1) -> AstTensor 'AstMethodLet s ('TKScalar r2) Source #

trappend :: forall (n :: Natural) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trslice :: forall (n :: Natural) (x :: TK). KnownSTK x => Int -> Int -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trreverse :: forall (n :: Natural) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trtranspose :: forall (n :: Nat) (x :: TK). KnownSTK x => PermR -> AstTensor 'AstMethodLet s ('TKR2 n x) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

trreshape :: forall (n :: Nat) (m :: Nat) (x :: TK). KnownSTK x => IShR m -> AstTensor 'AstMethodLet s ('TKR2 n x) -> AstTensor 'AstMethodLet s ('TKR2 m x) Source #

tsappend :: forall (m :: Nat) (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 (m ': sh) x) -> AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) -> AstTensor 'AstMethodLet s ('TKS2 ((m + n) ': sh) x) Source #

tsslice :: forall (i :: Nat) (n :: Nat) (k :: Nat) (sh :: [Natural]) (x :: TK). KnownSTK x => SNat i -> SNat n -> SNat k -> AstTensor 'AstMethodLet s ('TKS2 (((i + n) + k) ': sh) x) -> AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) Source #

tsreverse :: forall (n :: Nat) (sh :: [Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) -> AstTensor 'AstMethodLet s ('TKS2 (n ': sh) x) Source #

tstranspose :: forall (perm :: [Natural]) (sh :: [Nat]) (x :: TK). (IsPermutation perm, Rank perm <= Rank sh, KnownSTK x) => Perm perm -> AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKS2 (PermutePrefix perm sh) x) Source #

tsreshape :: forall (sh :: [Natural]) (sh2 :: [Natural]) (x :: TK). (Product sh ~ Product sh2, KnownSTK x) => ShS sh2 -> AstTensor 'AstMethodLet s ('TKS2 sh x) -> AstTensor 'AstMethodLet s ('TKS2 sh2 x) Source #

txappend :: forall (m :: Nat) (n :: Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 ('Just m ': sh) x) -> AstTensor 'AstMethodLet s ('TKX2 ('Just n ': sh) x) -> AstTensor 'AstMethodLet s ('TKX2 ('Just (m + n) ': sh) x) Source #

txslice :: forall (i :: Nat) (n :: Nat) (k :: Nat) (sh :: [Maybe Natural]) (x :: TK). KnownSTK x => SNat i -> SNat n -> SNat k -> AstTensor 'AstMethodLet s ('TKX2 ('Just ((i + n) + k) ': sh) x) -> AstTensor 'AstMethodLet s ('TKX2 ('Just n ': sh) x) Source #

txreverse :: forall (mn :: Maybe Nat) (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstTensor 'AstMethodLet s ('TKX2 (mn ': sh) x) -> AstTensor 'AstMethodLet s ('TKX2 (mn ': sh) x) Source #

txtranspose :: forall (perm :: [Natural]) (sh :: [Maybe Nat]) (x :: TK). (IsPermutation perm, Rank perm <= Rank sh, KnownSTK x) => Perm perm -> AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 (PermutePrefix perm sh) x) Source #

txreshape :: forall (sh :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). KnownSTK x => IShX sh2 -> AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 sh2 x) Source #

trbuild1 :: forall (n :: Nat) (x :: TK). (KnownNat n, KnownSTK x) => Int -> (IntOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s ('TKR2 n x)) -> AstTensor 'AstMethodLet s ('TKR2 (1 + n) x) Source #

trmap0N :: forall (n :: Nat) (x :: TK) (x1 :: TK). (KnownNat n, KnownSTK x, KnownSTK x1) => (AstTensor 'AstMethodLet s ('TKR2 0 x1) -> AstTensor 'AstMethodLet s ('TKR2 0 x)) -> AstTensor 'AstMethodLet s ('TKR2 n x1) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

trzipWith0N :: forall (n :: Nat) (x :: TK) (x1 :: TK) (x2 :: TK). (KnownNat n, KnownSTK x, KnownSTK x1, KnownSTK x2) => (AstTensor 'AstMethodLet s ('TKR2 0 x1) -> AstTensor 'AstMethodLet s ('TKR2 0 x2) -> AstTensor 'AstMethodLet s ('TKR2 0 x)) -> AstTensor 'AstMethodLet s ('TKR2 n x1) -> AstTensor 'AstMethodLet s ('TKR2 n x2) -> AstTensor 'AstMethodLet s ('TKR2 n x) Source #

tsbuild1 :: forall (k :: Nat) (sh :: [Nat]) (x :: TK). (KnownNat k, KnownShS sh, KnownSTK x) => (IntOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s ('TKS2 sh x)) -> AstTensor 'AstMethodLet s ('TKS2 (k ': sh) x) Source #

tsmap0N :: forall (sh :: [Nat]) (x :: TK) (x1 :: TK). (KnownShS sh, KnownSTK x, KnownSTK x1) => (AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x1) -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x)) -> AstTensor 'AstMethodLet s ('TKS2 sh x1) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

tszipWith0N :: forall (sh :: [Nat]) (x :: TK) (x1 :: TK) (x2 :: TK). (KnownShS sh, KnownSTK x, KnownSTK x1, KnownSTK x2) => (AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x1) -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x2) -> AstTensor 'AstMethodLet s ('TKS2 ('[] :: [Nat]) x)) -> AstTensor 'AstMethodLet s ('TKS2 sh x1) -> AstTensor 'AstMethodLet s ('TKS2 sh x2) -> AstTensor 'AstMethodLet s ('TKS2 sh x) Source #

txbuild1 :: forall (k :: Nat) (sh :: [Maybe Nat]) (x :: TK). (KnownNat k, KnownShX sh, KnownSTK x) => (IntOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s ('TKX2 sh x)) -> AstTensor 'AstMethodLet s ('TKX2 ('Just k ': sh) x) Source #

tbuild1 :: forall (y :: TK) (k :: Nat). ConvertTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK y -> (IntOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s y) -> AstTensor 'AstMethodLet s (BuildTensorKind k y) Source #

tmapAccumRDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat). Proxy (AstTensor 'AstMethodLet s) -> SNat k -> FullShapeTK accy -> FullShapeTK by -> FullShapeTK ey -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct accy ey) ('TKProduct accy by) -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> AstTensor 'AstMethodLet s accy -> AstTensor 'AstMethodLet s (BuildTensorKind k ey) -> AstTensor 'AstMethodLet s ('TKProduct accy (BuildTensorKind k by)) Source #

tmapAccumLDer :: forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat). Proxy (AstTensor 'AstMethodLet s) -> SNat k -> FullShapeTK accy -> FullShapeTK by -> FullShapeTK ey -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct accy ey) ('TKProduct accy by) -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind ('TKProduct accy ey)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy by)) -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind ('TKProduct accy by)) ('TKProduct accy ey)) (ADTensorKind ('TKProduct accy ey)) -> AstTensor 'AstMethodLet s accy -> AstTensor 'AstMethodLet s (BuildTensorKind k ey) -> AstTensor 'AstMethodLet s ('TKProduct accy (BuildTensorKind k by)) Source #

tApply :: forall (x :: TK) (z :: TK). HFunOf (AstTensor 'AstMethodLet s) x z -> AstTensor 'AstMethodLet s x -> AstTensor 'AstMethodLet s z Source #

tlambda :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (AstTensor 'AstMethodLet s) x z Source #

tgrad :: forall (x :: TK) r. FullShapeTK x -> HFun x ('TKScalar r) -> HFunOf (AstTensor 'AstMethodLet s) x (ADTensorKind x) Source #

tvjp :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind z) x) (ADTensorKind x) Source #

tjvp :: forall (x :: TK) (z :: TK). FullShapeTK x -> HFun x z -> HFunOf (AstTensor 'AstMethodLet s) ('TKProduct (ADTensorKind x) x) (ADTensorKind z) Source #

tprimalPart :: forall (y :: TK). AstTensor 'AstMethodLet s y -> PrimalOf (AstTensor 'AstMethodLet s) y Source #

tdualPart :: forall (y :: TK). SingletonTK y -> AstTensor 'AstMethodLet s y -> DualOf (AstTensor 'AstMethodLet s) y Source #

tfromPrimal :: forall (y :: TK). SingletonTK y -> PrimalOf (AstTensor 'AstMethodLet s) y -> AstTensor 'AstMethodLet s y Source #

tfromDual :: forall (y :: TK). DualOf (AstTensor 'AstMethodLet s) y -> AstTensor 'AstMethodLet s y Source #

tScale :: forall (y :: TK). (Num (AstTensor 'AstMethodLet s y), Num (PrimalOf (AstTensor 'AstMethodLet s) y)) => SingletonTK y -> PrimalOf (AstTensor 'AstMethodLet s) y -> DualOf (AstTensor 'AstMethodLet s) y -> DualOf (AstTensor 'AstMethodLet s) y Source #

tsum :: forall (z :: TK) (k :: Nat). ConvertTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK z -> AstTensor 'AstMethodLet s (BuildTensorKind k z) -> AstTensor 'AstMethodLet s z Source #

treplicate :: forall (z :: TK) (k :: Nat). ConvertTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK z -> AstTensor 'AstMethodLet s z -> AstTensor 'AstMethodLet s (BuildTensorKind k z) Source #

tindexBuild :: forall (z :: TK) (k :: Nat). ConvertTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK z -> AstTensor 'AstMethodLet s (BuildTensorKind k z) -> IntOf (AstTensor 'AstMethodLet s) -> AstTensor 'AstMethodLet s z Source #

treplTarget :: forall (y :: TK). (forall r. GoodScalar r => r) -> FullShapeTK y -> AstTensor 'AstMethodLet s y Source #

tdefTarget :: forall (y :: TK). FullShapeTK y -> AstTensor 'AstMethodLet s y Source #

taddTarget :: forall (y :: TK). SingletonTK y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y Source #

tmultTarget :: forall (y :: TK). SingletonTK y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y Source #

tsum0Target :: forall (y :: TK). FullShapeTK y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s ('TKScalar Double) Source #

tdot0Target :: forall (y :: TK). FullShapeTK y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s y -> AstTensor 'AstMethodLet s ('TKScalar Double) Source #

xmcast :: forall (x :: TK) (sh :: [Maybe Nat]) (sh2 :: [Maybe Nat]). (KnownSTK x, KnownShX sh, Rank sh ~ Rank sh2, ConvertTensor (AstTensor 'AstMethodLet s)) => StaticShX sh2 -> AstTensor 'AstMethodLet s ('TKX2 sh x) -> AstTensor 'AstMethodLet s ('TKX2 sh2 x) Source #

AstSpan s => LetTensor (AstTensor 'AstMethodLet s) Source # 
Instance details

Defined in HordeAd.Core.OpsAst

Methods

ttlet :: forall (x :: TK) (z :: TK). AstTensor 'AstMethodLet s x -> (AstTensor 'AstMethodLet s x -> AstTensor 'AstMethodLet s z) -> AstTensor 'AstMethodLet s z Source #

ttletPrimal :: forall (x :: TK) (z :: TK). PrimalOf (AstTensor 'AstMethodLet s) x -> (PrimalOf (AstTensor 'AstMethodLet s) x -> AstTensor 'AstMethodLet s z) -> AstTensor 'AstMethodLet s z Source #

toShare :: forall (y :: TK). AstTensor 'AstMethodLet s y -> ShareOf (AstTensor 'AstMethodLet s) y Source #

tunshare :: forall (y :: TK). ShareOf (AstTensor 'AstMethodLet s) y -> AstTensor 'AstMethodLet s y Source #

tappend :: forall (m :: Nat) (n :: Nat) (y :: TK). BaseTensor (AstTensor 'AstMethodLet s) => SNat m -> SNat n -> SingletonTK y -> AstTensor 'AstMethodLet s (BuildTensorKind m y) -> AstTensor 'AstMethodLet s (BuildTensorKind n y) -> AstTensor 'AstMethodLet s (BuildTensorKind (m + n) y) Source #

tD :: forall (y :: TK). BaseTensor (AstTensor 'AstMethodLet s) => SingletonTK y -> PrimalOf (AstTensor 'AstMethodLet s) y -> DualOf (AstTensor 'AstMethodLet s) y -> AstTensor 'AstMethodLet s y Source #

tfold :: forall (yn :: TK) (ym :: TK) (k :: Nat). BaseTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK yn -> SingletonTK ym -> (forall (f :: Target). ADReady f => f yn -> f ym -> f yn) -> AstTensor 'AstMethodLet s yn -> AstTensor 'AstMethodLet s (BuildTensorKind k ym) -> AstTensor 'AstMethodLet s yn Source #

tscan :: forall (yn :: TK) (ym :: TK) (k :: Nat). BaseTensor (AstTensor 'AstMethodLet s) => SNat k -> SingletonTK yn -> SingletonTK ym -> (forall (f :: Target). ADReady f => f yn -> f ym -> f yn) -> AstTensor 'AstMethodLet s yn -> AstTensor 'AstMethodLet s (BuildTensorKind k ym) -> AstTensor 'AstMethodLet s (BuildTensorKind (1 + k) yn) Source #

(AstSpan s, GoodScalar r) => EqH (AstTensor ms s) ('TKScalar r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(==.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(/=.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => OrdH (AstTensor ms s) ('TKScalar r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(<.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(<=.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(>.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(>=.) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => EqH (AstTensor ms s) (TKR n r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(==.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(/=.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => EqH (AstTensor ms s) (TKS sh r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(==.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(/=.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => EqH (AstTensor ms s) (TKX sh r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(==.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(/=.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => OrdH (AstTensor ms s) (TKR n r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(<.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(<=.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(>.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(>=.) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => OrdH (AstTensor ms s) (TKS sh r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(<.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(<=.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(>.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(>=.) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> BoolOf (AstTensor ms s) Source #

(AstSpan s, GoodScalar r) => OrdH (AstTensor ms s) (TKX sh r) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(<.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(<=.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(>.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(>=.) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> BoolOf (AstTensor ms s) Source #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Floating (AstTensor ms s (TKR n r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

pi :: AstTensor ms s (TKR n r) #

exp :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

log :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

sqrt :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

(**) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

logBase :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

sin :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

cos :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

tan :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

asin :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

acos :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

atan :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

sinh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

cosh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

tanh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

asinh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

acosh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

atanh :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

log1p :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

expm1 :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

log1pexp :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

log1mexp :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Floating (AstTensor ms s (TKS sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

pi :: AstTensor ms s (TKS sh r) #

exp :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

log :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

sqrt :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

(**) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

logBase :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

sin :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

cos :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

tan :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

asin :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

acos :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

atan :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

sinh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

cosh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

tanh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

asinh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

acosh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

atanh :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

log1p :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

expm1 :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

log1pexp :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

log1mexp :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Floating (AstTensor ms s ('TKScalar r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

pi :: AstTensor ms s ('TKScalar r) #

exp :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

log :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

sqrt :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

(**) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

logBase :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

sin :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

cos :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

tan :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

asin :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

acos :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

atan :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

sinh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

cosh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

tanh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

asinh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

acosh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

atanh :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

log1p :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

expm1 :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

log1pexp :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

log1mexp :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Floating (AstTensor ms s (TKX sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

pi :: AstTensor ms s (TKX sh r) #

exp :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

log :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

sqrt :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

(**) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

logBase :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

sin :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

cos :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

tan :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

asin :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

acos :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

atan :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

sinh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

cosh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

tanh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

asinh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

acosh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

atanh :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

log1p :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

expm1 :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

log1pexp :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

log1mexp :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

(GoodScalar r, AstSpan s) => Num (AstTensor ms s (TKR n r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(+) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

(-) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

(*) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

negate :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

abs :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

signum :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

fromInteger :: Integer -> AstTensor ms s (TKR n r) #

(GoodScalar r, AstSpan s) => Num (AstTensor ms s (TKS sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(+) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

(-) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

(*) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

negate :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

abs :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

signum :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

fromInteger :: Integer -> AstTensor ms s (TKS sh r) #

(GoodScalar r, AstSpan s) => Num (AstTensor ms s ('TKScalar r)) Source #

Integer terms need to be simplified, because large ones are sometimes created due to vectorization, e.g., via astTransposeAsGather or astReshapeAsGather and can be a deciding factor in whether the other tensor terms can be simplified in turn.

The normal form has AstConcreteK, if any, as the first argument of the constructor. No flattening is performed beyond that.

Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(+) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

(-) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

(*) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

negate :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

abs :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

signum :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

fromInteger :: Integer -> AstTensor ms s ('TKScalar r) #

(GoodScalar r, AstSpan s) => Num (AstTensor ms s (TKX sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(+) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

(-) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

(*) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

negate :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

abs :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

signum :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

fromInteger :: Integer -> AstTensor ms s (TKX sh r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Fractional (AstTensor ms s (TKR n r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(/) :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

recip :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) #

fromRational :: Rational -> AstTensor ms s (TKR n r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Fractional (AstTensor ms s (TKS sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(/) :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

recip :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) #

fromRational :: Rational -> AstTensor ms s (TKS sh r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Fractional (AstTensor ms s ('TKScalar r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(/) :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

recip :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) #

fromRational :: Rational -> AstTensor ms s ('TKScalar r) #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => Fractional (AstTensor ms s (TKX sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(/) :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

recip :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) #

fromRational :: Rational -> AstTensor ms s (TKX sh r) #

Show (AstTensor ms s y) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

showsPrec :: Int -> AstTensor ms s y -> ShowS #

show :: AstTensor ms s y -> String #

showList :: [AstTensor ms s y] -> ShowS #

Eq (AstTensor ms s y) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

(==) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

(/=) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

Ord (AstTensor ms s y) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

compare :: AstTensor ms s y -> AstTensor ms s y -> Ordering #

(<) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

(<=) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

(>) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

(>=) :: AstTensor ms s y -> AstTensor ms s y -> Bool #

max :: AstTensor ms s y -> AstTensor ms s y -> AstTensor ms s y #

min :: AstTensor ms s y -> AstTensor ms s y -> AstTensor ms s y #

KnownSTK y => TermValue (AstTensor 'AstMethodLet 'FullSpan y) Source # 
Instance details

Defined in HordeAd.Core.Adaptor

Associated Types

type Value (AstTensor 'AstMethodLet 'FullSpan y) 
Instance details

Defined in HordeAd.Core.Adaptor

(GoodScalar r, IntegralH r, IntElt r, AstSpan s) => IntegralH (AstTensor ms s (TKR n r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

quotH :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) Source #

remH :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) Source #

(GoodScalar r, IntegralH r, IntElt r, AstSpan s) => IntegralH (AstTensor ms s (TKS sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

quotH :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) Source #

remH :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) Source #

(GoodScalar r, IntegralH r, IntElt r, AstSpan s) => IntegralH (AstTensor ms s ('TKScalar r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

quotH :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) Source #

remH :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) Source #

(GoodScalar r, IntegralH r, IntElt r, AstSpan s) => IntegralH (AstTensor ms s (TKX sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

quotH :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) Source #

remH :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) Source #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => RealFloatH (AstTensor ms s (TKR n r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

atan2H :: AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) -> AstTensor ms s (TKR n r) Source #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => RealFloatH (AstTensor ms s (TKS sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

atan2H :: AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) -> AstTensor ms s (TKS sh r) Source #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => RealFloatH (AstTensor ms s ('TKScalar r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

atan2H :: AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) -> AstTensor ms s ('TKScalar r) Source #

(GoodScalar r, RealFloatH r, FloatElt r, AstSpan s) => RealFloatH (AstTensor ms s (TKX sh r)) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

atan2H :: AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) -> AstTensor ms s (TKX sh r) Source #

type BoolOf (AstTensor ms s) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

type BoolOf (AstTensor ms s) = AstBool ms
type DualOf (AstTensor ms s) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

type PrimalOf (AstTensor ms s) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

type ShareOf (AstTensor ms s) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

type ShareOf (AstTensor ms s) = AstRaw s
type HFunOf (AstTensor 'AstMethodLet s) x z Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

type HFunOf (AstTensor 'AstMethodLet s) x z = AstHFun s s x z
type Value (AstTensor 'AstMethodLet 'FullSpan y) Source # 
Instance details

Defined in HordeAd.Core.Adaptor

data AstHFun (s :: AstSpanType) (s2 :: AstSpanType) (x :: TK) (z :: TK) where Source #

Constructors

AstLambda 

Fields

  • :: forall (s :: AstSpanType) (x :: TK) (s2 :: AstSpanType) (z :: TK). ~(AstVarName s x)
     
  • -> ~(AstTensor 'AstMethodLet s2 z)
     
  • -> AstHFun s s2 x z

    The function body can't have any free variables outside those listed in the first component of the pair; this reflects the quantification in rrev and prevents "perturbation confusion".

    The constructor is non-strict in order not to pre-compute higher derivatives (e.g., inside folds) that are never going to be used. As a side effect, all lambdas (closed functions) are processed lazily, which makes no harm, since they have no outside free variables and so can't easiliy induce leaks by retaining outside values (e.g., big environments from which values for the variables would be drawn). The cost of computing a reverse derivative of a fold nested inside the function argument n times is reduced by the laziness from 20^n to under 2^n (old experimental results). Note, however, that if the n-th forward and reverse derivative is taken, the laziness is defeated.

Instances

Instances details
Show (AstHFun s s2 x z) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

showsPrec :: Int -> AstHFun s s2 x z -> ShowS #

show :: AstHFun s s2 x z -> String #

showList :: [AstHFun s s2 x z] -> ShowS #

data AstBool (ms :: AstMethodOfSharing) where Source #

Constructors

AstBoolConst :: forall (ms :: AstMethodOfSharing). Bool -> AstBool ms 
AstBoolNot :: forall (ms :: AstMethodOfSharing). AstBool ms -> AstBool ms 
AstBoolAnd :: forall (ms :: AstMethodOfSharing). AstBool ms -> AstBool ms -> AstBool ms 
AstLeqK :: forall r (ms :: AstMethodOfSharing). GoodScalar r => AstTensor ms 'PrimalSpan ('TKScalar r) -> AstTensor ms 'PrimalSpan ('TKScalar r) -> AstBool ms 
AstLeqS :: forall (sh :: [Nat]) r (ms :: AstMethodOfSharing). GoodScalar r => AstTensor ms 'PrimalSpan (TKS sh r) -> AstTensor ms 'PrimalSpan (TKS sh r) -> AstBool ms 

Instances

Instances details
Boolean (AstBool ms) Source # 
Instance details

Defined in HordeAd.Core.CarriersAst

Methods

true :: AstBool ms #

false :: AstBool ms #

notB :: AstBool ms -> AstBool ms #

(&&*) :: AstBool ms -> AstBool ms -> AstBool ms #

(||*) :: AstBool ms -> AstBool ms -> AstBool ms #

Show (AstBool ms) Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

showsPrec :: Int -> AstBool ms -> ShowS #

show :: AstBool ms -> String #

showList :: [AstBool ms] -> ShowS #

data OpCodeNum1 Source #

Constructors

NegateOp 
AbsOp 
SignumOp 

Instances

Instances details
Show OpCodeNum1 Source # 
Instance details

Defined in HordeAd.Core.Ast

Eq OpCodeNum1 Source # 
Instance details

Defined in HordeAd.Core.Ast

data OpCode1 Source #

Instances

Instances details
Show OpCode1 Source # 
Instance details

Defined in HordeAd.Core.Ast

Eq OpCode1 Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

(==) :: OpCode1 -> OpCode1 -> Bool #

(/=) :: OpCode1 -> OpCode1 -> Bool #

data OpCode2 Source #

Instances

Instances details
Show OpCode2 Source # 
Instance details

Defined in HordeAd.Core.Ast

Eq OpCode2 Source # 
Instance details

Defined in HordeAd.Core.Ast

Methods

(==) :: OpCode2 -> OpCode2 -> Bool #

(/=) :: OpCode2 -> OpCode2 -> Bool #

data OpCodeIntegral2 Source #

Constructors

QuotOp 
RemOp 

Instances

Instances details
Show OpCodeIntegral2 Source # 
Instance details

Defined in HordeAd.Core.Ast

Eq OpCodeIntegral2 Source # 
Instance details

Defined in HordeAd.Core.Ast