Safe Haskell | None |
---|---|
Language | GHC2024 |
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
- data AstSpanType
- class Typeable s => AstSpan (s :: AstSpanType) where
- fromPrimal :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'PrimalSpan y -> AstTensor ms s y
- fromDual :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms 'DualSpan y -> AstTensor ms s y
- primalPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms s y -> AstTensor ms 'PrimalSpan y
- dualPart :: forall (ms :: AstMethodOfSharing) (y :: TK). AstTensor ms s y -> AstTensor ms 'DualSpan y
- sameAstSpan :: forall (s1 :: AstSpanType) (s2 :: AstSpanType). (AstSpan s1, AstSpan s2) => Maybe (s1 :~: s2)
- data AstVarId
- intToAstVarId :: Int -> AstVarId
- type AstInt (ms :: AstMethodOfSharing) = AstTensor ms 'PrimalSpan ('TKScalar Int64)
- type IntVarName = AstVarName 'PrimalSpan ('TKScalar Int64)
- pattern AstIntVar :: IntVarName -> AstInt ms
- data AstVarName (a :: AstSpanType) (b :: TK)
- mkAstVarName :: forall (s :: AstSpanType) (y :: TK). FullShapeTK y -> Maybe (Int64, Int64) -> AstVarId -> AstVarName s y
- varNameToAstVarId :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> AstVarId
- varNameToFTK :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> FullShapeTK y
- varNameToBounds :: forall (s :: AstSpanType) (y :: TK). AstVarName s y -> Maybe (Int64, Int64)
- astVar :: forall (s :: AstSpanType) (y :: TK) (ms :: AstMethodOfSharing). AstSpan s => AstVarName s y -> AstTensor ms s y
- data AstArtifactRev (x :: TK) (z :: TK) = AstArtifactRev {}
- data AstArtifactFwd (x :: TK) (z :: TK) = AstArtifactFwd {}
- type AstIxS (ms :: AstMethodOfSharing) (sh :: [Nat]) = IxS sh (AstInt ms)
- type AstVarListS (sh :: [Nat]) = ListS sh (Const IntVarName :: Nat -> Type)
- pattern AstLeqInt :: AstInt ms -> AstInt ms -> AstBool ms
- data AstMethodOfSharing
- data AstTensor (a :: AstMethodOfSharing) (b :: AstSpanType) (c :: TK) where
- 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))
- data AstHFun (s :: AstSpanType) (s2 :: AstSpanType) (x :: TK) (z :: TK) where
- AstLambda :: forall (s :: AstSpanType) (x :: TK) (s2 :: AstSpanType) (z :: TK). ~(AstVarName s x) -> ~(AstTensor 'AstMethodLet s2 z) -> AstHFun s s2 x z
- data AstBool (ms :: AstMethodOfSharing) where
- 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
- data OpCodeNum1
- data OpCode1
- data OpCode2
- data OpCodeIntegral2
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
sameAstSpan :: forall (s1 :: AstSpanType) (s2 :: AstSpanType). (AstSpan s1, AstSpan s2) => Maybe (s1 :~: s2) Source #
Variables and related types
Instances
Enum AstVarId Source # | |
Show AstVarId Source # | |
Eq AstVarId Source # | |
Ord AstVarId Source # | |
Defined in HordeAd.Core.Ast |
intToAstVarId :: Int -> AstVarId Source #
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.
type IntVarName = AstVarName 'PrimalSpan ('TKScalar Int64) Source #
pattern AstIntVar :: IntVarName -> AstInt ms Source #
data AstVarName (a :: AstSpanType) (b :: TK) Source #
Instances
Enum1 (AstVarName s :: TK -> Type) Source # | |||||
Defined in HordeAd.Core.Ast Associated Types
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 # | |||||
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 # | |||||
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 # | |||||
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 # | |||||
Defined in HordeAd.Core.Ast |
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.
Constructors
AstArtifactRev | |
Fields
|
Instances
Show (AstArtifactRev x z) Source # | |
Defined in HordeAd.Core.Ast Methods showsPrec :: Int -> AstArtifactRev x z -> ShowS # show :: AstArtifactRev x z -> String # showList :: [AstArtifactRev x z] -> ShowS # |
data AstArtifactFwd (x :: TK) (z :: TK) Source #
The forward derivative artifact.
Constructors
AstArtifactFwd | |
Fields
|
Instances
Show (AstArtifactFwd x z) Source # | |
Defined in HordeAd.Core.Ast Methods showsPrec :: Int -> AstArtifactFwd x z -> ShowS # show :: AstArtifactFwd x z -> String # showList :: [AstArtifactFwd x z] -> ShowS # |
type AstVarListS (sh :: [Nat]) = ListS sh (Const IntVarName :: Nat -> Type) Source #
AST
data AstMethodOfSharing Source #
Constructors
AstMethodShare | |
AstMethodLet |
data AstTensor (a :: AstMethodOfSharing) (b :: AstSpanType) (c :: TK) where Source #
AST for tensors that are meant to be differentiated.
Constructors
Instances
data AstHFun (s :: AstSpanType) (s2 :: AstSpanType) (x :: TK) (z :: TK) where Source #
Constructors
AstLambda | |
Fields
|
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 |
data OpCodeNum1 Source #
Instances
Show OpCodeNum1 Source # | |
Defined in HordeAd.Core.Ast Methods showsPrec :: Int -> OpCodeNum1 -> ShowS # show :: OpCodeNum1 -> String # showList :: [OpCodeNum1] -> ShowS # | |
Eq OpCodeNum1 Source # | |
Defined in HordeAd.Core.Ast |
data OpCodeIntegral2 Source #
Instances
Show OpCodeIntegral2 Source # | |
Defined in HordeAd.Core.Ast Methods showsPrec :: Int -> OpCodeIntegral2 -> ShowS # show :: OpCodeIntegral2 -> String # showList :: [OpCodeIntegral2] -> ShowS # | |
Eq OpCodeIntegral2 Source # | |
Defined in HordeAd.Core.Ast Methods (==) :: OpCodeIntegral2 -> OpCodeIntegral2 -> Bool # (/=) :: OpCodeIntegral2 -> OpCodeIntegral2 -> Bool # |