Safe Haskell | None |
---|---|
Language | GHC2024 |
HordeAd.Core.ConvertTensor
Description
A class for converting tensors between different forms that contain the same data but varying amounts of shape information.
Documentation
class ConvertTensor (target :: Target) where Source #
Minimal complete definition
tconvert, rfromX, sfromR, sfromX, xfromR, xfromS, rzip, runzip, szip, sunzip, xzip, xunzip, xnestR, xnestS, xnest, xunNestR, xunNestS, xunNest, tpairConv, tunpairConv
Methods
tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> target a -> target b Source #
The universal conversion function that can emulate all conversion methods below, but requires an explicit recipe in the first argument.
All conversion operations below could be defined in terms of tconvert
,
but they'd need additional singleton arguments or constraints
or we'd need to depend on BaseTensor
to use rshape
, etc.
kfromR :: GoodScalar r => target (TKR 0 r) -> target ('TKScalar r) Source #
The conversion from a rank 0 ranked tensor to a scalar.
kfromS :: GoodScalar r => target (TKS ('[] :: [Nat]) r) -> target ('TKScalar r) Source #
The conversion from an empty shape shaped tensor to a scalar.
kfromX :: GoodScalar r => target (TKX ('[] :: [Maybe Nat]) r) -> target ('TKScalar r) Source #
rfromK :: GoodScalar r => target ('TKScalar r) -> target (TKR 0 r) Source #
rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => target ('TKS2 sh x) -> target ('TKR2 (Rank sh) x) Source #
The conversion from a shaped tensor to the corresponding ranked tensor of the same rank.
rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => target ('TKX2 sh x) -> target ('TKR2 (Rank sh) x) Source #
sfromK :: GoodScalar r => target ('TKScalar r) -> target (TKS ('[] :: [Nat]) r) Source #
sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => target ('TKR2 (Rank sh) x) -> target ('TKS2 sh x) Source #
The conversion from a ranked tensor to the corresponding shaped tensor of the same rank.
sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => target ('TKX2 sh' x) -> target ('TKS2 sh x) Source #
xfromK :: GoodScalar r => target ('TKScalar r) -> target (TKX ('[] :: [Maybe Nat]) r) Source #
xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => target ('TKR2 (Rank sh') x) -> target ('TKX2 sh' x) Source #
xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => target ('TKS2 sh x) -> target ('TKX2 sh' x) Source #
rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => target ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> target ('TKR2 n ('TKProduct y z)) Source #
runzip :: forall (y :: TK) (z :: TK) (n :: Nat). target ('TKR2 n ('TKProduct y z)) -> target ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source #
szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> target ('TKS2 sh ('TKProduct y z)) Source #
sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). target ('TKS2 sh ('TKProduct y z)) -> target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source #
xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> target ('TKX2 sh ('TKProduct y z)) Source #
xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). target ('TKX2 sh ('TKProduct y z)) -> target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source #
rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> target ('TKR2 (n + m) x) -> target ('TKR2 n ('TKR2 m x)) Source #
rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> target ('TKR2 n ('TKS2 sh2 x)) Source #
rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> target ('TKR2 n ('TKX2 sh2 x)) Source #
snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> target ('TKS2 sh1 ('TKR2 m x)) Source #
snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> target ('TKS2 (sh1 ++ sh2) x) -> target ('TKS2 sh1 ('TKS2 sh2 x)) Source #
snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> target ('TKX2 (MapJust sh1 ++ sh2) x) -> target ('TKS2 sh1 ('TKX2 sh2 x)) Source #
xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> target ('TKX2 sh1 ('TKR2 m x)) Source #
xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> target ('TKX2 (sh1 ++ MapJust sh2) x) -> target ('TKX2 sh1 ('TKS2 sh2 x)) Source #
xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> target ('TKX2 (sh1 ++ sh2) x) -> target ('TKX2 sh1 ('TKX2 sh2 x)) Source #
runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => target ('TKR2 n ('TKR2 m x)) -> target ('TKR2 (n + m) x) Source #
runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => target ('TKR2 n ('TKS2 sh2 x)) -> target ('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) => target ('TKR2 n ('TKX2 sh2 x)) -> target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source #
sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => target ('TKS2 sh1 ('TKR2 m x)) -> target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source #
sunNest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x) => target ('TKS2 sh1 ('TKS2 sh2 x)) -> target ('TKS2 (sh1 ++ sh2) x) Source #
sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => target ('TKS2 sh1 ('TKX2 sh2 x)) -> target ('TKX2 (MapJust sh1 ++ sh2) x) Source #
xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => target ('TKX2 sh1 ('TKR2 m x)) -> target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source #
xunNestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShX sh1, KnownShS sh2, KnownSTK x) => target ('TKX2 sh1 ('TKS2 sh2 x)) -> target ('TKX2 (sh1 ++ MapJust sh2) x) Source #
xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => target ('TKX2 sh1 ('TKX2 sh2 x)) -> target ('TKX2 (sh1 ++ sh2) x) Source #
tpairConv :: forall (x :: TK) (z :: TK). target x -> target z -> target ('TKProduct x z) Source #
A clone of tpair, to make this class independent of BaseTensor
but sufficient for Unwind.
tunpairConv :: forall (x :: TK) (z :: TK). target ('TKProduct x z) -> (target x, target z) Source #
A clone of tunpair, if ShareTensor
is available, or an implementation
that duplicates the argument, otherwise.
Instances
ConvertTensor Concrete Source # | |
Defined in HordeAd.Core.OpsConcrete Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> Concrete a -> Concrete b Source # kfromR :: GoodScalar r => Concrete (TKR 0 r) -> Concrete ('TKScalar r) Source # kfromS :: GoodScalar r => Concrete (TKS ('[] :: [Nat]) r) -> Concrete ('TKScalar r) Source # kfromX :: GoodScalar r => Concrete (TKX ('[] :: [Maybe Nat]) r) -> Concrete ('TKScalar r) Source # rfromK :: GoodScalar r => Concrete ('TKScalar r) -> Concrete (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => Concrete ('TKS2 sh x) -> Concrete ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => Concrete ('TKX2 sh x) -> Concrete ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => Concrete ('TKScalar r) -> Concrete (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => Concrete ('TKR2 (Rank sh) x) -> Concrete ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => Concrete ('TKX2 sh' x) -> Concrete ('TKS2 sh x) Source # xfromK :: GoodScalar r => Concrete ('TKScalar r) -> Concrete (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => Concrete ('TKR2 (Rank sh') x) -> Concrete ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => Concrete ('TKS2 sh x) -> Concrete ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => Concrete ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> Concrete ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). Concrete ('TKR2 n ('TKProduct y z)) -> Concrete ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => Concrete ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> Concrete ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). Concrete ('TKS2 sh ('TKProduct y z)) -> Concrete ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => Concrete ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> Concrete ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). Concrete ('TKX2 sh ('TKProduct y z)) -> Concrete ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> Concrete ('TKR2 (n + m) x) -> Concrete ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> Concrete ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> Concrete ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> Concrete ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> Concrete ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> Concrete ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> Concrete ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> Concrete ('TKS2 (sh1 ++ sh2) x) -> Concrete ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> Concrete ('TKX2 (MapJust sh1 ++ sh2) x) -> Concrete ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> Concrete ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> Concrete ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> Concrete ('TKX2 (sh1 ++ MapJust sh2) x) -> Concrete ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> Concrete ('TKX2 (sh1 ++ sh2) x) -> Concrete ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => Concrete ('TKR2 n ('TKR2 m x)) -> Concrete ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => Concrete ('TKR2 n ('TKS2 sh2 x)) -> Concrete ('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) => Concrete ('TKR2 n ('TKX2 sh2 x)) -> Concrete ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => Concrete ('TKS2 sh1 ('TKR2 m x)) -> Concrete ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # sunNest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x) => Concrete ('TKS2 sh1 ('TKS2 sh2 x)) -> Concrete ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => Concrete ('TKS2 sh1 ('TKX2 sh2 x)) -> Concrete ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => Concrete ('TKX2 sh1 ('TKR2 m x)) -> Concrete ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # xunNestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShX sh1, KnownShS sh2, KnownSTK x) => Concrete ('TKX2 sh1 ('TKS2 sh2 x)) -> Concrete ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => Concrete ('TKX2 sh1 ('TKX2 sh2 x)) -> Concrete ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). Concrete x -> Concrete z -> Concrete ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). Concrete ('TKProduct x z) -> (Concrete x, Concrete z) Source # | |
(ADReadyNoLet target, ShareTensor target, ShareTensor (PrimalOf target)) => ConvertTensor (ADVal target) Source # | |
Defined in HordeAd.Core.OpsADVal Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> ADVal target a -> ADVal target b Source # kfromR :: GoodScalar r => ADVal target (TKR 0 r) -> ADVal target ('TKScalar r) Source # kfromS :: GoodScalar r => ADVal target (TKS ('[] :: [Nat]) r) -> ADVal target ('TKScalar r) Source # kfromX :: GoodScalar r => ADVal target (TKX ('[] :: [Maybe Nat]) r) -> ADVal target ('TKScalar r) Source # rfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => ADVal target ('TKS2 sh x) -> ADVal target ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => ADVal target ('TKX2 sh x) -> ADVal target ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => ADVal target ('TKR2 (Rank sh) x) -> ADVal target ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => ADVal target ('TKX2 sh' x) -> ADVal target ('TKS2 sh x) Source # xfromK :: GoodScalar r => ADVal target ('TKScalar r) -> ADVal target (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => ADVal target ('TKR2 (Rank sh') x) -> ADVal target ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => ADVal target ('TKS2 sh x) -> ADVal target ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> ADVal target ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). ADVal target ('TKR2 n ('TKProduct y z)) -> ADVal target ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> ADVal target ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). ADVal target ('TKS2 sh ('TKProduct y z)) -> ADVal target ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => ADVal target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> ADVal target ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). ADVal target ('TKX2 sh ('TKProduct y z)) -> ADVal target ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> ADVal target ('TKR2 (n + m) x) -> ADVal target ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> ADVal target ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> ADVal target ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> ADVal target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> ADVal target ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> ADVal target ('TKS2 (sh1 ++ sh2) x) -> ADVal target ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> ADVal target ('TKX2 (MapJust sh1 ++ sh2) x) -> ADVal target ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> ADVal target ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ MapJust sh2) x) -> ADVal target ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> ADVal target ('TKX2 (sh1 ++ sh2) x) -> ADVal target ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => ADVal target ('TKR2 n ('TKR2 m x)) -> ADVal target ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => ADVal target ('TKR2 n ('TKS2 sh2 x)) -> ADVal target ('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) => ADVal target ('TKR2 n ('TKX2 sh2 x)) -> ADVal target ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKR2 m x)) -> ADVal target ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # sunNest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh1, KnownShS sh2, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKS2 sh2 x)) -> ADVal target ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => ADVal target ('TKS2 sh1 ('TKX2 sh2 x)) -> ADVal target ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKR2 m x)) -> ADVal target ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) Source # xunNestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShX sh1, KnownShS sh2, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKS2 sh2 x)) -> ADVal target ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => ADVal target ('TKX2 sh1 ('TKX2 sh2 x)) -> ADVal target ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). ADVal target x -> ADVal target z -> ADVal target ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). ADVal target ('TKProduct x z) -> (ADVal target x, ADVal target z) Source # | |
AstSpan s => ConvertTensor (AstNoSimplify s) Source # | |
Defined in HordeAd.Core.OpsAst Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> AstNoSimplify s a -> AstNoSimplify s b Source # kfromR :: GoodScalar r => AstNoSimplify s (TKR 0 r) -> AstNoSimplify s ('TKScalar r) Source # kfromS :: GoodScalar r => AstNoSimplify s (TKS ('[] :: [Nat]) r) -> AstNoSimplify s ('TKScalar r) Source # kfromX :: GoodScalar r => AstNoSimplify s (TKX ('[] :: [Maybe Nat]) r) -> AstNoSimplify s ('TKScalar r) Source # rfromK :: GoodScalar r => AstNoSimplify s ('TKScalar r) -> AstNoSimplify s (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstNoSimplify s ('TKS2 sh x) -> AstNoSimplify s ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstNoSimplify s ('TKX2 sh x) -> AstNoSimplify s ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => AstNoSimplify s ('TKScalar r) -> AstNoSimplify s (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstNoSimplify s ('TKR2 (Rank sh) x) -> AstNoSimplify s ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => AstNoSimplify s ('TKX2 sh' x) -> AstNoSimplify s ('TKS2 sh x) Source # xfromK :: GoodScalar r => AstNoSimplify s ('TKScalar r) -> AstNoSimplify s (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => AstNoSimplify s ('TKR2 (Rank sh') x) -> AstNoSimplify s ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => AstNoSimplify s ('TKS2 sh x) -> AstNoSimplify s ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => AstNoSimplify s ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> AstNoSimplify s ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). AstNoSimplify s ('TKR2 n ('TKProduct y z)) -> AstNoSimplify s ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => AstNoSimplify s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> AstNoSimplify s ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). AstNoSimplify s ('TKS2 sh ('TKProduct y z)) -> AstNoSimplify s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => AstNoSimplify s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> AstNoSimplify s ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). AstNoSimplify s ('TKX2 sh ('TKProduct y z)) -> AstNoSimplify s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> AstNoSimplify s ('TKR2 (n + m) x) -> AstNoSimplify s ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> AstNoSimplify s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> AstNoSimplify s ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> AstNoSimplify s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> AstNoSimplify s ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> AstNoSimplify s ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstNoSimplify s ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> AstNoSimplify s ('TKS2 (sh1 ++ sh2) x) -> AstNoSimplify s ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> AstNoSimplify s ('TKX2 (MapJust sh1 ++ sh2) x) -> AstNoSimplify s ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> AstNoSimplify s ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstNoSimplify s ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> AstNoSimplify s ('TKX2 (sh1 ++ MapJust sh2) x) -> AstNoSimplify s ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> AstNoSimplify s ('TKX2 (sh1 ++ sh2) x) -> AstNoSimplify s ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => AstNoSimplify s ('TKR2 n ('TKR2 m x)) -> AstNoSimplify s ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => AstNoSimplify s ('TKR2 n ('TKS2 sh2 x)) -> AstNoSimplify 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) => AstNoSimplify s ('TKR2 n ('TKX2 sh2 x)) -> AstNoSimplify s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => AstNoSimplify s ('TKS2 sh1 ('TKR2 m x)) -> AstNoSimplify 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) => AstNoSimplify s ('TKS2 sh1 ('TKS2 sh2 x)) -> AstNoSimplify s ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => AstNoSimplify s ('TKS2 sh1 ('TKX2 sh2 x)) -> AstNoSimplify s ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => AstNoSimplify s ('TKX2 sh1 ('TKR2 m x)) -> AstNoSimplify 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) => AstNoSimplify s ('TKX2 sh1 ('TKS2 sh2 x)) -> AstNoSimplify s ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => AstNoSimplify s ('TKX2 sh1 ('TKX2 sh2 x)) -> AstNoSimplify s ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). AstNoSimplify s x -> AstNoSimplify s z -> AstNoSimplify s ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). AstNoSimplify s ('TKProduct x z) -> (AstNoSimplify s x, AstNoSimplify s z) Source # | |
AstSpan s => ConvertTensor (AstNoVectorize s) Source # | |
Defined in HordeAd.Core.OpsAst Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> AstNoVectorize s a -> AstNoVectorize s b Source # kfromR :: GoodScalar r => AstNoVectorize s (TKR 0 r) -> AstNoVectorize s ('TKScalar r) Source # kfromS :: GoodScalar r => AstNoVectorize s (TKS ('[] :: [Nat]) r) -> AstNoVectorize s ('TKScalar r) Source # kfromX :: GoodScalar r => AstNoVectorize s (TKX ('[] :: [Maybe Nat]) r) -> AstNoVectorize s ('TKScalar r) Source # rfromK :: GoodScalar r => AstNoVectorize s ('TKScalar r) -> AstNoVectorize s (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstNoVectorize s ('TKS2 sh x) -> AstNoVectorize s ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstNoVectorize s ('TKX2 sh x) -> AstNoVectorize s ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => AstNoVectorize s ('TKScalar r) -> AstNoVectorize s (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstNoVectorize s ('TKR2 (Rank sh) x) -> AstNoVectorize s ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => AstNoVectorize s ('TKX2 sh' x) -> AstNoVectorize s ('TKS2 sh x) Source # xfromK :: GoodScalar r => AstNoVectorize s ('TKScalar r) -> AstNoVectorize s (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => AstNoVectorize s ('TKR2 (Rank sh') x) -> AstNoVectorize s ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => AstNoVectorize s ('TKS2 sh x) -> AstNoVectorize s ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => AstNoVectorize s ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> AstNoVectorize s ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). AstNoVectorize s ('TKR2 n ('TKProduct y z)) -> AstNoVectorize s ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => AstNoVectorize s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> AstNoVectorize s ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). AstNoVectorize s ('TKS2 sh ('TKProduct y z)) -> AstNoVectorize s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => AstNoVectorize s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> AstNoVectorize s ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). AstNoVectorize s ('TKX2 sh ('TKProduct y z)) -> AstNoVectorize s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> AstNoVectorize s ('TKR2 (n + m) x) -> AstNoVectorize s ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> AstNoVectorize s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> AstNoVectorize s ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> AstNoVectorize s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> AstNoVectorize s ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> AstNoVectorize s ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstNoVectorize s ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> AstNoVectorize s ('TKS2 (sh1 ++ sh2) x) -> AstNoVectorize s ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> AstNoVectorize s ('TKX2 (MapJust sh1 ++ sh2) x) -> AstNoVectorize s ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> AstNoVectorize s ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstNoVectorize s ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> AstNoVectorize s ('TKX2 (sh1 ++ MapJust sh2) x) -> AstNoVectorize s ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> AstNoVectorize s ('TKX2 (sh1 ++ sh2) x) -> AstNoVectorize s ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => AstNoVectorize s ('TKR2 n ('TKR2 m x)) -> AstNoVectorize s ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => AstNoVectorize s ('TKR2 n ('TKS2 sh2 x)) -> AstNoVectorize 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) => AstNoVectorize s ('TKR2 n ('TKX2 sh2 x)) -> AstNoVectorize s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => AstNoVectorize s ('TKS2 sh1 ('TKR2 m x)) -> AstNoVectorize 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) => AstNoVectorize s ('TKS2 sh1 ('TKS2 sh2 x)) -> AstNoVectorize s ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => AstNoVectorize s ('TKS2 sh1 ('TKX2 sh2 x)) -> AstNoVectorize s ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => AstNoVectorize s ('TKX2 sh1 ('TKR2 m x)) -> AstNoVectorize 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) => AstNoVectorize s ('TKX2 sh1 ('TKS2 sh2 x)) -> AstNoVectorize s ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => AstNoVectorize s ('TKX2 sh1 ('TKX2 sh2 x)) -> AstNoVectorize s ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). AstNoVectorize s x -> AstNoVectorize s z -> AstNoVectorize s ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). AstNoVectorize s ('TKProduct x z) -> (AstNoVectorize s x, AstNoVectorize s z) Source # | |
AstSpan s => ConvertTensor (AstRaw s) Source # | |
Defined in HordeAd.Core.OpsAst Methods tconvert :: forall (a :: TK) (b :: TK). TKConversion a b -> SingletonTK a -> AstRaw s a -> AstRaw s b Source # kfromR :: GoodScalar r => AstRaw s (TKR 0 r) -> AstRaw s ('TKScalar r) Source # kfromS :: GoodScalar r => AstRaw s (TKS ('[] :: [Nat]) r) -> AstRaw s ('TKScalar r) Source # kfromX :: GoodScalar r => AstRaw s (TKX ('[] :: [Maybe Nat]) r) -> AstRaw s ('TKScalar r) Source # rfromK :: GoodScalar r => AstRaw s ('TKScalar r) -> AstRaw s (TKR 0 r) Source # rfromS :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstRaw s ('TKS2 sh x) -> AstRaw s ('TKR2 (Rank sh) x) Source # rfromX :: forall (sh :: [Maybe Nat]) (x :: TK). KnownSTK x => AstRaw s ('TKX2 sh x) -> AstRaw s ('TKR2 (Rank sh) x) Source # sfromK :: GoodScalar r => AstRaw s ('TKScalar r) -> AstRaw s (TKS ('[] :: [Nat]) r) Source # sfromR :: forall (sh :: [Nat]) (x :: TK). (KnownShS sh, KnownSTK x) => AstRaw s ('TKR2 (Rank sh) x) -> AstRaw s ('TKS2 sh x) Source # sfromX :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, Rank sh ~ Rank sh', KnownSTK x) => AstRaw s ('TKX2 sh' x) -> AstRaw s ('TKS2 sh x) Source # xfromK :: GoodScalar r => AstRaw s ('TKScalar r) -> AstRaw s (TKX ('[] :: [Maybe Nat]) r) Source # xfromR :: forall (sh' :: [Maybe Nat]) (x :: TK). (KnownShX sh', KnownSTK x) => AstRaw s ('TKR2 (Rank sh') x) -> AstRaw s ('TKX2 sh' x) Source # xfromS :: forall (sh :: [Nat]) (sh' :: [Maybe Nat]) (x :: TK). (KnownShS sh, KnownShX sh', Rank sh ~ Rank sh', KnownSTK x) => AstRaw s ('TKS2 sh x) -> AstRaw s ('TKX2 sh' x) Source # rzip :: forall (y :: TK) (z :: TK) (n :: Nat). (KnownSTK y, KnownSTK z) => AstRaw s ('TKProduct ('TKR2 n y) ('TKR2 n z)) -> AstRaw s ('TKR2 n ('TKProduct y z)) Source # runzip :: forall (y :: TK) (z :: TK) (n :: Nat). AstRaw s ('TKR2 n ('TKProduct y z)) -> AstRaw s ('TKProduct ('TKR2 n y) ('TKR2 n z)) Source # szip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). (KnownSTK y, KnownSTK z) => AstRaw s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) -> AstRaw s ('TKS2 sh ('TKProduct y z)) Source # sunzip :: forall (y :: TK) (z :: TK) (sh :: [Nat]). AstRaw s ('TKS2 sh ('TKProduct y z)) -> AstRaw s ('TKProduct ('TKS2 sh y) ('TKS2 sh z)) Source # xzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). (KnownSTK y, KnownSTK z) => AstRaw s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) -> AstRaw s ('TKX2 sh ('TKProduct y z)) Source # xunzip :: forall (y :: TK) (z :: TK) (sh :: [Maybe Nat]). AstRaw s ('TKX2 sh ('TKProduct y z)) -> AstRaw s ('TKProduct ('TKX2 sh y) ('TKX2 sh z)) Source # rnest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => SNat n -> AstRaw s ('TKR2 (n + m) x) -> AstRaw s ('TKR2 n ('TKR2 m x)) Source # rnestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => SNat n -> AstRaw s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ MapJust sh2) x) -> AstRaw s ('TKR2 n ('TKS2 sh2 x)) Source # rnestX :: forall (n :: Nat) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => SNat n -> AstRaw s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) -> AstRaw s ('TKR2 n ('TKX2 sh2 x)) Source # snestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => ShS sh1 -> AstRaw s ('TKX2 (MapJust sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstRaw s ('TKS2 sh1 ('TKR2 m x)) Source # snest :: forall (sh1 :: [Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => ShS sh1 -> AstRaw s ('TKS2 (sh1 ++ sh2) x) -> AstRaw s ('TKS2 sh1 ('TKS2 sh2 x)) Source # snestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => ShS sh1 -> AstRaw s ('TKX2 (MapJust sh1 ++ sh2) x) -> AstRaw s ('TKS2 sh1 ('TKX2 sh2 x)) Source # xnestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownNat m, KnownSTK x) => StaticShX sh1 -> AstRaw s ('TKX2 (sh1 ++ Replicate m ('Nothing :: Maybe Nat)) x) -> AstRaw s ('TKX2 sh1 ('TKR2 m x)) Source # xnestS :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Nat]) (x :: TK). (KnownShS sh2, KnownSTK x) => StaticShX sh1 -> AstRaw s ('TKX2 (sh1 ++ MapJust sh2) x) -> AstRaw s ('TKX2 sh1 ('TKS2 sh2 x)) Source # xnest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh2, KnownSTK x) => StaticShX sh1 -> AstRaw s ('TKX2 (sh1 ++ sh2) x) -> AstRaw s ('TKX2 sh1 ('TKX2 sh2 x)) Source # runNest :: forall (n :: Nat) (m :: Nat) (x :: TK). (KnownNat n, KnownNat m, KnownSTK x) => AstRaw s ('TKR2 n ('TKR2 m x)) -> AstRaw s ('TKR2 (n + m) x) Source # runNestS :: forall (n :: Nat) (sh2 :: [Nat]) (x :: TK). (KnownNat n, KnownShS sh2, KnownSTK x) => AstRaw s ('TKR2 n ('TKS2 sh2 x)) -> AstRaw 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) => AstRaw s ('TKR2 n ('TKX2 sh2 x)) -> AstRaw s ('TKX2 (Replicate n ('Nothing :: Maybe Nat) ++ sh2) x) Source # sunNestR :: forall (sh1 :: [Nat]) (m :: Nat) (x :: TK). (KnownShS sh1, KnownNat m, KnownSTK x) => AstRaw s ('TKS2 sh1 ('TKR2 m x)) -> AstRaw 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) => AstRaw s ('TKS2 sh1 ('TKS2 sh2 x)) -> AstRaw s ('TKS2 (sh1 ++ sh2) x) Source # sunNestX :: forall (sh1 :: [Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShS sh1, KnownShX sh2, KnownSTK x) => AstRaw s ('TKS2 sh1 ('TKX2 sh2 x)) -> AstRaw s ('TKX2 (MapJust sh1 ++ sh2) x) Source # xunNestR :: forall (sh1 :: [Maybe Nat]) (m :: Nat) (x :: TK). (KnownShX sh1, KnownNat m, KnownSTK x) => AstRaw s ('TKX2 sh1 ('TKR2 m x)) -> AstRaw 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) => AstRaw s ('TKX2 sh1 ('TKS2 sh2 x)) -> AstRaw s ('TKX2 (sh1 ++ MapJust sh2) x) Source # xunNest :: forall (sh1 :: [Maybe Nat]) (sh2 :: [Maybe Nat]) (x :: TK). (KnownShX sh1, KnownShX sh2, KnownSTK x) => AstRaw s ('TKX2 sh1 ('TKX2 sh2 x)) -> AstRaw s ('TKX2 (sh1 ++ sh2) x) Source # tpairConv :: forall (x :: TK) (z :: TK). AstRaw s x -> AstRaw s z -> AstRaw s ('TKProduct x z) Source # tunpairConv :: forall (x :: TK) (z :: TK). AstRaw s ('TKProduct x z) -> (AstRaw s x, AstRaw s z) Source # | |
AstSpan s => ConvertTensor (AstTensor 'AstMethodLet s) Source # | |
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 # |