{-# LANGUAGE AllowAmbiguousTypes, OverloadedLists #-}
{-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-}
{-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise #-}
module TestRevFwdFold
( testTrees
) where
import Prelude
import Data.Proxy (Proxy (Proxy))
import GHC.TypeLits (KnownNat, type (+))
import Test.Tasty
import Test.Tasty.HUnit hiding (assert)
import Data.Array.Nested qualified as Nested
import Data.Array.Nested.Ranked.Shape
import Data.Array.Nested.Shaped.Shape
import HordeAd
import HordeAd.Core.AstFreshId (resetVarCounter)
import HordeAd.Core.Ops (tbuild1, treplicate)
import HordeAd.Core.OpsConcrete ()
import CrossTesting
import EqEpsilon
testTrees :: [TestTree]
testTrees :: [TestTree]
testTrees =
[ String -> Assertion -> TestTree
testCase String
"4SRrev" Assertion
testFooRgrad
, String -> Assertion -> TestTree
testCase String
"4SRrev2" Assertion
testFooRrev2
, String -> Assertion -> TestTree
testCase String
"4SRrevPP1" Assertion
testFooRrevPP1
, String -> Assertion -> TestTree
testCase String
"4SRrevPP2" Assertion
testFooRrevPP2
, String -> Assertion -> TestTree
testCase String
"4SRrev3" Assertion
testFooRrev3
, String -> Assertion -> TestTree
testCase String
"4S0Rrev" Assertion
testSin0Rgrad
, String -> Assertion -> TestTree
testCase String
"4S0RrevPP1" Assertion
testSin0RrevPP1
, String -> Assertion -> TestTree
testCase String
"4S0RrevPP2" Assertion
testSin0RrevPP2
, String -> Assertion -> TestTree
testCase String
"4S0Rrev3" Assertion
testSin0Rrev3
, String -> Assertion -> TestTree
testCase String
"4S0Rrev4" Assertion
testSin0Rrev4
, String -> Assertion -> TestTree
testCase String
"4S0RrevPP4" Assertion
testSin0RrevPP4
, String -> Assertion -> TestTree
testCase String
"4S0Rrev5" Assertion
testSin0Rrev5
, String -> Assertion -> TestTree
testCase String
"4S0RrevPP5" Assertion
testSin0RrevPP5
, String -> Assertion -> TestTree
testCase String
"4S0Rrev3'" Assertion
testSin0Rrev3'
, String -> Assertion -> TestTree
testCase String
"4S0Rrev4'" Assertion
testSin0Rrev4'
, String -> Assertion -> TestTree
testCase String
"4S0Rrev5'" Assertion
testSin0Rrev5'
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd" Assertion
testSin0Rjvp
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP0" Assertion
testSin0RfwdPP0
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP1" Assertion
testSin0RfwdPP1
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP1FullUnsimp" Assertion
testSin0RfwdPP1FullUnsimp
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP1Full" Assertion
testSin0RfwdPP1Full
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd3" Assertion
testSin0Rfwd3
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd4" Assertion
testSin0Rfwd4
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP4P" Assertion
testSin0RfwdPP4P
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP4Dual" Assertion
testSin0RfwdPP4Dual
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd5" Assertion
testSin0Rfwd5
, String -> Assertion -> TestTree
testCase String
"4S0RfwdPP5" Assertion
testSin0RfwdPP5
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd3'" Assertion
testSin0Rfwd3'
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd4'" Assertion
testSin0Rfwd4'
, String -> Assertion -> TestTree
testCase String
"4S0Rfwd5'" Assertion
testSin0Rfwd5'
, String -> Assertion -> TestTree
testCase String
"4S0Rrev5S" Assertion
testSin0Rrev5S
, String -> Assertion -> TestTree
testCase String
"4S0RrevPP5S" Assertion
testSin0RrevPP5S
, String -> Assertion -> TestTree
testCase String
"4S0Fold0" Assertion
testSin0Fold0
, String -> Assertion -> TestTree
testCase String
"4S0Fold0ForComparison" Assertion
testSin0Fold0ForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Fold1" Assertion
testSin0Fold1
, String -> Assertion -> TestTree
testCase String
"4S0FoldB1" Assertion
testSin0FoldB1
, String -> Assertion -> TestTree
testCase String
"4S0FoldB1PP" Assertion
testSin0FoldB1PP
, String -> Assertion -> TestTree
testCase String
"4S0FoldB2" Assertion
testSin0FoldB2
, String -> Assertion -> TestTree
testCase String
"4S0FoldB3" Assertion
testSin0FoldB3
, String -> Assertion -> TestTree
testCase String
"4S0FoldB4" Assertion
testSin0FoldB4
, String -> Assertion -> TestTree
testCase String
"4S0Fold2" Assertion
testSin0Fold2
, String -> Assertion -> TestTree
testCase String
"4S0FoldForComparison" Assertion
testSin0FoldForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Fold3" Assertion
testSin0Fold3
, String -> Assertion -> TestTree
testCase String
"4S0Fold4" Assertion
testSin0Fold4
, String -> Assertion -> TestTree
testCase String
"4S0Fold5" Assertion
testSin0Fold5
, String -> Assertion -> TestTree
testCase String
"4S0Fold6" Assertion
testSin0Fold6
, String -> Assertion -> TestTree
testCase String
"4S0Fold7" Assertion
testSin0Fold7
, String -> Assertion -> TestTree
testCase String
"4S0Fold8" Assertion
testSin0Fold8
, String -> Assertion -> TestTree
testCase String
"4S0Fold0S" Assertion
testSin0Fold0S
, String -> Assertion -> TestTree
testCase String
"4S0Fold1S" Assertion
testSin0Fold1S
, String -> Assertion -> TestTree
testCase String
"4S0Fold2S" Assertion
testSin0Fold2S
, String -> Assertion -> TestTree
testCase String
"4S0FoldForComparisonS" Assertion
testSin0FoldForComparisonS
, String -> Assertion -> TestTree
testCase String
"4S0Fold3S" Assertion
testSin0Fold3S
, String -> Assertion -> TestTree
testCase String
"4S0Fold4S" Assertion
testSin0Fold4S
, String -> Assertion -> TestTree
testCase String
"4S0Fold5S" Assertion
testSin0Fold5S
, String -> Assertion -> TestTree
testCase String
"4S0Fold6S" Assertion
testSin0Fold6S
, String -> Assertion -> TestTree
testCase String
"4S0Fold7S" Assertion
testSin0Fold7S
, String -> Assertion -> TestTree
testCase String
"4S0Fold8S" Assertion
testSin0Fold8S
, String -> Assertion -> TestTree
testCase String
"4S0Fold8rev" Assertion
testSin0Fold8grad
, String -> Assertion -> TestTree
testCase String
"4S0Fold8rev2" Assertion
testSin0Fold8rev2
, String -> Assertion -> TestTree
testCase String
"4S0Fold8Srev" Assertion
testSin0Fold8Sgrad
, String -> Assertion -> TestTree
testCase String
"4S0Fold8Srev2" Assertion
testSin0Fold8Srev2
, String -> Assertion -> TestTree
testCase String
"4S0Fold182Srev" Assertion
testSin0Fold182Sgrad
, String -> Assertion -> TestTree
testCase String
"4S0Fold182SrevPP" Assertion
testSin0Fold182SrevPP
, String -> Assertion -> TestTree
testCase String
"4S0Fold18Srev" Assertion
testSin0Fold18Sgrad
, String -> Assertion -> TestTree
testCase String
"4S0Fold8fwd" Assertion
testSin0Fold8jvp
, String -> Assertion -> TestTree
testCase String
"4S0Fold8fwd2" Assertion
testSin0Fold8fwd2
, String -> Assertion -> TestTree
testCase String
"4S0Fold8Sfwd" Assertion
testSin0Fold8Sjvp
, String -> Assertion -> TestTree
testCase String
"4S0Fold8Sfwd2" Assertion
testSin0Fold8Sfwd2
, String -> Assertion -> TestTree
testCase String
"4S0Fold5Sfwd" Assertion
testSin0Fold5Sjvp
, String -> Assertion -> TestTree
testCase String
"4S0Fold5Sfwds" Assertion
testSin0Fold5Sfwds
, String -> Assertion -> TestTree
testCase String
"4S0Scan0" Assertion
testSin0Scan0
, String -> Assertion -> TestTree
testCase String
"4S0Scan1" Assertion
testSin0Scan1
, String -> Assertion -> TestTree
testCase String
"4S0Scan1ForComparison" Assertion
testSin0Scan1ForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Scan2" Assertion
testSin0Scan2
, String -> Assertion -> TestTree
testCase String
"4S0Scan3" Assertion
testSin0Scan3
, String -> Assertion -> TestTree
testCase String
"4S0Scan4" Assertion
testSin0Scan4
, String -> Assertion -> TestTree
testCase String
"4S0Scan5" Assertion
testSin0Scan5
, String -> Assertion -> TestTree
testCase String
"4S0Scan6" Assertion
testSin0Scan6
, String -> Assertion -> TestTree
testCase String
"4S0Scan7" Assertion
testSin0Scan7
, String -> Assertion -> TestTree
testCase String
"4S0Scan8" Assertion
testSin0Scan8
, String -> Assertion -> TestTree
testCase String
"4S0Scan8rev" Assertion
testSin0Scan8grad
, String -> Assertion -> TestTree
testCase String
"4S0Scan8rev2" Assertion
testSin0Scan8rev2
, String -> Assertion -> TestTree
testCase String
"4S0Scan8Srev2" Assertion
testSin0Scan8Srev2
, String -> Assertion -> TestTree
testCase String
"4S0Scan1RevPP1" Assertion
testSin0Scan1RevPP1
, String -> Assertion -> TestTree
testCase String
"4S0Scan1RevPPForComparison" Assertion
testSin0Scan1RevPPForComparison
, String -> Assertion -> TestTree
testCase String
"4S0ScanFwdPP" Assertion
testSin0ScanFwdPP
, String -> Assertion -> TestTree
testCase String
"4S0ScanFwdPPFull" Assertion
testSin0ScanFwdPPFull
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev2PP1" Assertion
testSin0Scan1Rev2PP1
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev2PPA" Assertion
testSin0Scan1Rev2PPA
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev2PPForComparison" Assertion
testSin0Scan1Rev2PPForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev2" Assertion
testSin0Scan1Rev2
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev2ForComparison" Assertion
testSin0Scan1Rev2ForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev3PP0" Assertion
testSin0Scan1Rev3PP0
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev3PPForComparison" Assertion
testSin0Scan1Rev3PPForComparison
, String -> Assertion -> TestTree
testCase String
"4S0ScanFwd3PP" Assertion
testSin0ScanFwd3PP
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev3" Assertion
testSin0Scan1Rev3
, String -> Assertion -> TestTree
testCase String
"4S0Scan1Rev3ForComparison" Assertion
testSin0Scan1Rev3ForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Scan0fwd" Assertion
testSin0Scan0jvp
, String -> Assertion -> TestTree
testCase String
"4S0Scan1fwd" Assertion
testSin0Scan1jvp
, String -> Assertion -> TestTree
testCase String
"4S0Scan1FwdForComparison" Assertion
testSin0Scan1FwdForComparison
, String -> Assertion -> TestTree
testCase String
"4S0Scan8fwd" Assertion
testSin0Scan8jvp
, String -> Assertion -> TestTree
testCase String
"4S0Scan8fwd2" Assertion
testSin0Scan8fwd2
, String -> Assertion -> TestTree
testCase String
"4SUnitriangular0PP" Assertion
testUnitriangular0PP
, String -> Assertion -> TestTree
testCase String
"4SUnitriangular1PP" Assertion
testUnitriangular1PP
, String -> Assertion -> TestTree
testCase String
"4SUnitriangular2PP" Assertion
testUnitriangular2PP
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD0S" Assertion
testSin0rmapAccumRD0S
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00SC" Assertion
testSin0rmapAccumRD00SC
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00S0" Assertion
testSin0rmapAccumRD00S0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00S" Assertion
testSin0rmapAccumRD00S
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00S7" Assertion
testSin0rmapAccumRD00S7
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00SCacc0" Assertion
testSin0rmapAccumRD00SCacc0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00SCacc" Assertion
testSin0rmapAccumRD00SCacc
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00Sacc0" Assertion
testSin0rmapAccumRD00Sacc0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00Sacc" Assertion
testSin0rmapAccumRD00Sacc
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00SCall0" Assertion
testSin0rmapAccumRD00SCall0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00SCall" Assertion
testSin0rmapAccumRD00SCall
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00Sall0" Assertion
testSin0rmapAccumRD00Sall0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD00Sall" Assertion
testSin0rmapAccumRD00Sall
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD0R" Assertion
testSin0rmapAccumRD0R
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN" Assertion
testSin0rmapAccumRD01SN
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN3" Assertion
testSin0rmapAccumRD01SN3
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN5" Assertion
testSin0rmapAccumRD01SN5
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN51" Assertion
testSin0rmapAccumRD01SN51
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531a" Assertion
testSin0rmapAccumRD01SN531a
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531b0" Assertion
testSin0rmapAccumRD01SN531b0
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531b0PPj" Assertion
testSin0rmapAccumRD01SN531b0PPj
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531bRPPj" Assertion
testSin0rmapAccumRD01SN531bRPPj
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531c" Assertion
testSin0rmapAccumRD01SN531c
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN531Slice" Assertion
testSin0rmapAccumRD01SN531Slice
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN55" Assertion
testSin0rmapAccumRD01SN55
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN55acc" Assertion
testSin0rmapAccumRD01SN55acc
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN58" Assertion
testSin0rmapAccumRD01SN58
, String -> Assertion -> TestTree
testCase String
"4S0rmapAccumRD01SN7" Assertion
testSin0rmapAccumRD01SN7
, String -> Assertion -> TestTree
testCase String
"4S0ScanD51" Assertion
testSin0ScanD51
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8" Assertion
testSin0ScanD8
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8MapAccum" Assertion
testSin0ScanD8MapAccum
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8rev" Assertion
testSin0ScanD8grad
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8rev4" Assertion
testSin0ScanD8rev4
, String -> Assertion -> TestTree
testCase String
"4S0ScanD1RevPP" Assertion
testSin0ScanD1RevPP
, String -> Assertion -> TestTree
testCase String
"4S0ScanDFwdPP" Assertion
testSin0ScanDFwdPP
, String -> Assertion -> TestTree
testCase String
"4S0ScanD1Rev2PP" Assertion
testSin0ScanD1Rev2PP
, String -> Assertion -> TestTree
testCase String
"4S0ScanDFwd2PP" Assertion
testSin0ScanDFwd2PP
, String -> Assertion -> TestTree
testCase String
"4S0ScanDFwd3PP" Assertion
testSin0ScanDFwd3PP
, String -> Assertion -> TestTree
testCase String
"4S0ScanD1fwd" Assertion
testSin0ScanD1jvp
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8fwd" Assertion
testSin0ScanD8jvp
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8fwdMapAccum" Assertion
testSin0ScanD8fwdMapAccum
, String -> Assertion -> TestTree
testCase String
"4S0ScanD8fwd2" Assertion
testSin0ScanD8fwd2
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS1" Assertion
testSin0FoldNestedS1
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS1PP" Assertion
testSin0FoldNestedS1PP
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR1PP" Assertion
testSin0FoldNestedR1PP
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR0LengthPPs" Assertion
testSin0FoldNestedR0LengthPPs
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR1LengthPPs" Assertion
testSin0FoldNestedR1LengthPPs
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2LengthPPs" Assertion
testSin0FoldNestedR2LengthPPs
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR3LengthPPs" Assertion
testSin0FoldNestedR3LengthPPs
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2LengthPPsDummy7" Assertion
testSin0FoldNestedR2LengthPPsDummy7
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2Dummy7" Assertion
testSin0FoldNestedR2Dummy7
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2Tan" Assertion
testSin0FoldNestedR2Tan
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS1FwdFwd0" Assertion
testSin0FoldNestedS1FwdFwd0
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS1FwdFwd" Assertion
testSin0FoldNestedS1FwdFwd
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS1RevRev" Assertion
testSin0FoldNestedS1RevRev
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS2" Assertion
testSin0FoldNestedS2
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS3" Assertion
testSin0FoldNestedS3
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS4" Assertion
testSin0FoldNestedS4
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS5" Assertion
testSin0FoldNestedS5
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS5rev" Assertion
testSin0FoldNestedS5grad
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedS5fwd" Assertion
testSin0FoldNestedS5jvp
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedSi" Assertion
testSin0FoldNestedSi
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR1" Assertion
testSin0FoldNestedR1
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR1RevFwd" Assertion
testSin0FoldNestedR1RevFwd
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2" Assertion
testSin0FoldNestedR2
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR2RevFwd" Assertion
testSin0FoldNestedR2RevFwd
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR3" Assertion
testSin0FoldNestedR3
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR4" Assertion
testSin0FoldNestedR4
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR41" Assertion
testSin0FoldNestedR41
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR40" Assertion
testSin0FoldNestedR40
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR400" Assertion
testSin0FoldNestedR400
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedRi" Assertion
testSin0FoldNestedRi
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR22" Assertion
testSin0FoldNestedR22
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR21" Assertion
testSin0FoldNestedR21
, String -> Assertion -> TestTree
testCase String
"4S0FoldNestedR21PP" Assertion
testSin0FoldNestedR21PP
, String -> Assertion -> TestTree
testCase String
"4S0revhV" Assertion
testSin0revhV
, String -> Assertion -> TestTree
testCase String
"4S0revhVPP" Assertion
testSin0revhVPP
, String -> Assertion -> TestTree
testCase String
"4S0revhV4" Assertion
testSin0revhV4
, String -> Assertion -> TestTree
testCase String
"4S0revhV5" Assertion
testSin0revhV5
, String -> Assertion -> TestTree
testCase String
"4S0revhV6" Assertion
testSin0revhV6
, String -> Assertion -> TestTree
testCase String
"4S0revhV7" Assertion
testSin0revhV7
]
foo :: RealFloatH a => (a, a, a) -> a
foo :: forall a. RealFloatH a => (a, a, a) -> a
foo (a
x, a
y, a
z) =
let w :: a
w = a
x a -> a -> a
forall a. Num a => a -> a -> a
* a -> a
forall a. Floating a => a -> a
sin a
y
in a -> a -> a
forall a. RealFloatH a => a -> a -> a
atan2H a
z a
w a -> a -> a
forall a. Num a => a -> a -> a
+ a
z a -> a -> a
forall a. Num a => a -> a -> a
* a
w
fooRgrad :: forall g a.
(ADReady g, GoodScalar a, Differentiable a, ADTensorScalar a ~ a)
=> (a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad :: forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad (a
x, a
y, a
z) =
let f :: forall f. ADReady f => f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)) -> f (TKR 0 a)
f :: forall (f :: Target).
ADReady f =>
f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKR 0 a)
f f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v = (f (TKR 0 a), f (TKR 0 a), f (TKR 0 a)) -> f (TKR 0 a)
forall a. RealFloatH a => (a, a, a) -> a
foo (f (TKProduct (TKR 0 a) (TKR 0 a)) -> f (TKR 0 a)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKProduct (TKR 0 a) (TKR 0 a))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v), f (TKProduct (TKR 0 a) (TKR 0 a)) -> f (TKR 0 a)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKProduct (TKR 0 a) (TKR 0 a))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v), f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKR 0 a)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v)
shapes :: FullShapeTK (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
shapes = FullShapeTK (TKProduct (TKR 0 a) (TKR 0 a))
-> FullShapeTK (TKR 0 a)
-> FullShapeTK
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (FullShapeTK (TKR 0 a)
-> FullShapeTK (TKR 0 a)
-> FullShapeTK (TKProduct (TKR 0 a) (TKR 0 a))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (IShR 0 -> FullShapeTK (TKScalar a) -> FullShapeTK (TKR 0 a)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar a)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (IShR 0 -> FullShapeTK (TKScalar a) -> FullShapeTK (TKR 0 a)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar a)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)) (IShR 0 -> FullShapeTK (TKScalar a) -> FullShapeTK (TKR 0 a)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar a)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
domsOf :: g (ADTensorKind
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)))
domsOf = (forall (f :: Target).
ADReady f =>
f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKScalar a))
-> FullShapeTK
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (ADTensorKind
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 a) -> f (TKScalar a)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 a) -> f (TKScalar a))
-> (f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKR 0 a))
-> f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKScalar a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKR 0 a)
forall (f :: Target).
ADReady f =>
f (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> f (TKR 0 a)
f) FullShapeTK (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
shapes
(g (TKProduct (TKR 0 a) (TKR 0 a))
-> g (TKR 0 a)
-> g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKR 0 a) -> g (TKR 0 a) -> g (TKProduct (TKR 0 a) (TKR 0 a))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Ranked 0 a -> g (TKR 0 a)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 a -> g (TKR 0 a)) -> Ranked 0 a -> g (TKR 0 a)
forall a b. (a -> b) -> a -> b
$ a -> Ranked 0 a
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar a
x)
(Ranked 0 a -> g (TKR 0 a)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 a -> g (TKR 0 a)) -> Ranked 0 a -> g (TKR 0 a)
forall a b. (a -> b) -> a -> b
$ a -> Ranked 0 a
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar a
y))
(Ranked 0 a -> g (TKR 0 a)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 a -> g (TKR 0 a)) -> Ranked 0 a -> g (TKR 0 a)
forall a b. (a -> b) -> a -> b
$ a -> Ranked 0 a
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar a
z))
in ( g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> (g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKR 0 a))
-> g (TKR 0 a)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet g (ADTensorKind
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)))
g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
domsOf (\g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v -> g (TKProduct (TKR 0 a) (TKR 0 a)) -> g (TKR 0 a)
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKProduct (TKR 0 a) (TKR 0 a))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v))
, g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> (g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKR 0 a))
-> g (TKR 0 a)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet g (ADTensorKind
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)))
g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
domsOf (\g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v -> g (TKProduct (TKR 0 a) (TKR 0 a)) -> g (TKR 0 a)
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKProduct (TKR 0 a) (TKR 0 a))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v))
, g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> (g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKR 0 a))
-> g (TKR 0 a)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet g (ADTensorKind
(TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a)))
g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
domsOf (\g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v -> g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
-> g (TKR 0 a)
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct (TKProduct (TKR 0 a) (TKR 0 a)) (TKR 0 a))
v) )
testFooRgrad :: Assertion
testFooRgrad :: Assertion
testFooRgrad = do
Rational
-> (Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double))
-> (Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.4396285219055063, Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
1.953374825727421), Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.9654825811012627)
(forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad @Concrete @Double (Double
1.1, Double
2.2, Double
3.3))
testFooRrev2 :: Assertion
testFooRrev2 :: Assertion
testFooRrev2 = do
Rational
-> (Concrete (TKR 0 Float), Concrete (TKR 0 Float),
Concrete (TKR 0 Float))
-> (Concrete (TKR 0 Float), Concrete (TKR 0 Float),
Concrete (TKR 0 Float))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Float -> Concrete (TKR 0 Float)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Float
2.4396284, Float -> Concrete (TKR 0 Float)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Float
1.9533751), Float -> Concrete (TKR 0 Float)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Float
0.96548253)
(forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad @Concrete @Float (Float
1.1, Float
2.2, Float
3.3))
testFooRrevPP1 :: Assertion
testFooRrevPP1 :: Assertion
testFooRrevPP1 = do
Assertion
resetVarCounter
let (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1, AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
_, AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
_) = forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad @(AstTensor AstMethodLet PrimalSpan) @Double (Double
1.1, Double
2.2, Double
3.3)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let x15 = let x10 = sin (sscalar 2.2) ; x11 = sscalar 1.1 * x10 ; x12 = recip (sscalar 10.889999999999999 + x11 * x11) ; x13 = sin (sscalar 2.2) ; x14 = sscalar (-3.3) * x12 in tpair (tpair (x10 * x14 + sscalar 3.3 * x13) (sscalar 1.1 * (cos (sscalar 2.2) * x14) + sscalar 3.63 * cos (sscalar 2.2))) (x11 * x12 + sscalar 1.1 * x13) in tproject1 (tproject1 x15))"
testFooRrevPP2 :: Assertion
testFooRrevPP2 :: Assertion
testFooRrevPP2 = do
let (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1, AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
_, AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
_) = forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad @(AstTensor AstMethodLet PrimalSpan) @Double (Double
1.1, Double
2.2, Double
3.3)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 2.668038132604647 + sscalar (-2.668038132604647) * recip (sscalar 11.680936386336942))"
testFooRrev3 :: Assertion
testFooRrev3 :: Assertion
testFooRrev3 = do
let f :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f (D Concrete (TKR 0 Double)
a Delta Concrete (TKR 0 Double)
_) =
let (ADVal Concrete (TKR 0 Double)
a1, ADVal Concrete (TKR 0 Double)
_, ADVal Concrete (TKR 0 Double)
_) = forall (g :: Target) a.
(ADReady g, GoodScalar a, Differentiable a,
(ADTensorScalar a :: Type) ~ (a :: Type)) =>
(a, a, a) -> (g (TKR 0 a), g (TKR 0 a), g (TKR 0 a))
fooRgrad @(ADVal Concrete) @Double
(Ranked 0 Double -> Double
forall a. Elt a => Ranked 0 a -> a
Nested.runScalar (Concrete (TKR 0 Double) -> RepConcrete (TKR 0 Double)
forall (y :: TK). Concrete y -> RepConcrete y
unConcrete Concrete (TKR 0 Double)
a), Double
2.2, Double
3.3)
in ADVal Concrete (TKR 0 Double)
a1
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0)
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rgrad :: Assertion
testSin0Rgrad :: Assertion
testSin0Rgrad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773)
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RrevPP1 :: Assertion
testSin0RrevPP1 :: Assertion
testSin0RrevPP1 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (sscalar 1.1))"
testSin0RrevPP2 :: Assertion
testSin0RrevPP2 :: Assertion
testSin0RrevPP2 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (sscalar 1.1))"
testSin0Rrev3 :: Assertion
testSin0Rrev3 :: Assertion
testSin0Rrev3 = do
let f :: ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (ADTensorKind (TKR 0 Double))
f = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(ADVal Concrete) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.8912073600614354))
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rrev4 :: Assertion
testSin0Rrev4 :: Assertion
testSin0Rrev4 = do
Rational
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(ADTensorScalar Double
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar ADTensorScalar Double
0.8988770945225438)
(((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> Concrete (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Concrete (TKR 0 Double)
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> (Concrete (TKR 0 Double) -> Concrete (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RrevPP4 :: Assertion
testSin0RrevPP4 :: Assertion
testSin0RrevPP4 = do
let a1 :: AstTensor
AstMethodLet PrimalSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
a1 = ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet
PrimalSpan
(TKR2 0 (TKScalar (ADTensorScalar Double))))
-> (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet PrimalSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (cos (sscalar 1.1)))"
testSin0Rrev5 :: Assertion
testSin0Rrev5 :: Assertion
testSin0Rrev5 = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.8912073600614354))
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @0 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RrevPP5 :: Assertion
testSin0RrevPP5 :: Assertion
testSin0RrevPP5 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar (-0.8912073600614354))"
testSin0Rrev3' :: Assertion
testSin0Rrev3' :: Assertion
testSin0Rrev3' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.8912073600614354) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rrev4' :: Assertion
testSin0Rrev4' :: Assertion
testSin0Rrev4' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.39052780643689855 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (f (TKR 0 Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rrev5' :: Assertion
testSin0Rrev5' :: Assertion
testSin0Rrev5' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.4535961214255773) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rjvp :: Assertion
testSin0Rjvp :: Assertion
testSin0Rjvp = do
Rational
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(ADTensorScalar Double
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar ADTensorScalar Double
0.4535961214255773)
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RfwdPP0 :: Assertion
testSin0RfwdPP0 :: Assertion
testSin0RfwdPP0 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (sscalar 1.1))"
testSin0RfwdPP1 :: Assertion
testSin0RfwdPP1 :: Assertion
testSin0RfwdPP1 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (sscalar 1.1))"
testSin0RfwdPP1FullUnsimp :: Assertion
testSin0RfwdPP1FullUnsimp :: Assertion
testSin0RfwdPP1FullUnsimp = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet FullSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet FullSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 * cos (sscalar 1.1))"
testSin0RfwdPP1Full :: Assertion
testSin0RfwdPP1Full :: Assertion
testSin0RfwdPP1Full = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet FullSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin (Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet FullSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 0.4535961214255773)"
testSin0Rfwd3 :: Assertion
testSin0Rfwd3 :: Assertion
testSin0Rfwd3 = do
let f :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(ADVal Concrete) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.9803280960675791))
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> Concrete (ADTensorKind (TKR 0 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> DValue src -> Concrete (ADTensorKind ztgt)
cjvp ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
f (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rfwd4 :: Assertion
testSin0Rfwd4 :: Assertion
testSin0Rfwd4 = do
Rational
-> Concrete (TKR 0 (ADTensorScalar (ADTensorScalar Double)))
-> Concrete (TKR 0 (ADTensorScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(ADTensorScalar (ADTensorScalar Double)
-> Concrete (TKR 0 (ADTensorScalar (ADTensorScalar Double)))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar ADTensorScalar (ADTensorScalar Double)
0.8988770945225438)
(((forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Concrete
(ADTensorKind (TKR2 0 (TKScalar (ADTensorScalar Double))))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
sin (Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR 0 (ADTensorScalar (ADTensorScalar Double))))
-> (Concrete (TKR 0 Double)
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> Concrete (TKR 0 Double)
-> Concrete (TKR 0 (ADTensorScalar (ADTensorScalar Double)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RfwdPP4P :: Assertion
testSin0RfwdPP4P :: Assertion
testSin0RfwdPP4P = do
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 = ((forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> AstTensor
AstMethodLet
PrimalSpan
(ADTensorKind (TKR2 0 (TKScalar (ADTensorScalar Double))))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
sin (AstTensor
AstMethodLet PrimalSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor
AstMethodLet
PrimalSpan
(TKR2 0 (TKScalar (ADTensorScalar Double))))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (cos (sscalar 1.1)))"
testSin0RfwdPP4Dual :: Assertion
testSin0RfwdPP4Dual :: Assertion
testSin0RfwdPP4Dual = do
let a1 :: AstTensor AstMethodLet DualSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet DualSpan (TKR 0 Double)
a1 = ((forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> AstTensor
AstMethodLet DualSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> AstTensor
AstMethodLet
DualSpan
(ADTensorKind (TKR2 0 (TKScalar (ADTensorScalar Double))))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
sin (AstTensor
AstMethodLet DualSpan (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> AstTensor AstMethodLet DualSpan (TKR 0 Double))
-> (AstTensor AstMethodLet DualSpan (TKR 0 Double)
-> AstTensor
AstMethodLet DualSpan (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> AstTensor AstMethodLet DualSpan (TKR 0 Double)
-> AstTensor AstMethodLet DualSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet DualSpan) @Double @0 @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> AstTensor AstMethodLet DualSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet DualSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet DualSpan (TKR 0 Double)
-> AstTensor AstMethodLet DualSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet DualSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sdualPart (sscalar 0.0) * cos (sdualPart (sscalar 0.0) * cos (sdualPart (sscalar 0.0))))"
testSin0Rfwd5 :: Assertion
testSin0Rfwd5 :: Assertion
testSin0Rfwd5 = do
Rational
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(ADTensorScalar Double
-> Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-ADTensorScalar Double
0.8912073600614354))
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @0 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0RfwdPP5 :: Assertion
testSin0RfwdPP5 :: Assertion
testSin0RfwdPP5 = do
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar (-0.8912073600614354))"
testSin0Rfwd3' :: Assertion
testSin0Rfwd3' :: Assertion
testSin0Rfwd3' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.8912073600614354) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rfwd4' :: Assertion
testSin0Rfwd4' :: Assertion
testSin0Rfwd4' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.39052780643689855 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (ADTensorKind (TKR2 0 (TKScalar (ADTensorScalar Double))))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR2 0 (TKScalar (ADTensorScalar Double)))
-> f (TKR2 0 (TKScalar (ADTensorScalar Double)))
sin (f (TKR2 0 (TKScalar (ADTensorScalar Double))) -> f (TKR 0 Double))
-> (f (TKR 0 Double)
-> f (TKR2 0 (TKScalar (ADTensorScalar Double))))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rfwd5' :: Assertion
testSin0Rfwd5' :: Assertion
testSin0Rfwd5' = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.4535961214255773) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
sin)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Rrev5S :: Assertion
testSin0Rrev5S :: Assertion
testSin0Rrev5S = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl (-Double
0.8912073600614354))
(forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 @Concrete @Double @'[] @'[] ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
sin) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0RrevPP5S :: Assertion
testSin0RrevPP5S :: Assertion
testSin0RrevPP5S = do
Assertion
resetVarCounter
let a1 :: AstTensor
AstMethodLet PrimalSpan (ADTensorKind (TKS ('[] @Nat) Double))
a1 = forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 @(AstTensor AstMethodLet PrimalSpan) @Double @'[] @'[] ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
sin) (Double -> AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"negate (sin (sscalar 1.1))"
testSin0Fold0 :: Assertion
testSin0Fold0 :: Assertion
testSin0Fold0 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @_ @Double (Int
0 Int -> IShR 0 -> IShR (1 + 0)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) Double
0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold0ForComparison :: Assertion
testSin0Fold0ForComparison :: Assertion
testSin0Fold0ForComparison = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target). f (TKR 0 Double) -> f (TKR 0 Double)
f = f (TKR 0 Double) -> f (TKR 0 Double)
forall a. a -> a
id
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target). f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold1 :: Assertion
testSin0Fold1 :: Assertion
testSin0Fold1 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
1] Double
42)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldB1 :: Assertion
testSin0FoldB1 :: Assertion
testSin0FoldB1 = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> Concrete (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
_a -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldB1PP :: Assertion
testSin0FoldB1PP :: Assertion
testSin0FoldB1PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan)
(let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
_a -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rsum (tproject2 (tmapAccumRDer (SNat @1) <lambda> <lambda> <lambda> (tconvert (ConvCmp (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp ConvXS (Conv0X STKScalar))) (STKScalar) 1.0) (tpair (sconcrete (sfromListLinear [1] [Z1])) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @1) <lambda> <lambda> <lambda> (sscalar 5.0) (sconcrete (sfromListLinear [1] [1.1]))))) (sconcrete (sfromListLinear [1] [1.1]))))))"
testSin0FoldB2 :: Assertion
testSin0FoldB2 :: Assertion
testSin0FoldB2 = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0 :: Concrete (TKR 0 Double))
((AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
_a -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x0)
in AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKR 0 r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldB3 :: Assertion
testSin0FoldB3 :: Assertion
testSin0FoldB3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
_a -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldB4 :: Assertion
testSin0FoldB4 :: Assertion
testSin0FoldB4 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
_a -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
1] Double
42)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold2 :: Assertion
testSin0Fold2 :: Assertion
testSin0Fold2 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.12389721944941383 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
5] Double
42)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldForComparison :: Assertion
testSin0FoldForComparison :: Assertion
testSin0FoldForComparison = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.12389721944941383 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold3 :: Assertion
testSin0Fold3 :: Assertion
testSin0Fold3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
a)
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
84) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold4 :: Assertion
testSin0Fold4 :: Assertion
testSin0Fold4 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.7053476446727861) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x) (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
a))
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold5 :: Assertion
testSin0Fold5 :: Assertion
testSin0Fold5 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.2992412552109085 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + (1 + 1)) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR2 (1 + 1) (TKScalar Double))
a -> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR 1 Double) -> f (TKR 1 Double)
forall a. Floating a => a -> a
sin (f (TKR 1 Double) -> f (TKR 1 Double))
-> f (TKR 1 Double) -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR 0 Double)
x)
(f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double))
-> f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 1) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double))
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 1) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR2 (1 + 1) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + (1 + 1)) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + (1 + 1)) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR2 (1 + (1 + 1)) (TKScalar Double))
-> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (2 + 1) (TKScalar Double))
-> f (TKR2 (2 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 1) (TKScalar Double))
-> f (TKR2 (2 + 1) (TKScalar Double)))
-> f (TKR2 (2 + 1) (TKScalar Double))
-> f (TKR2 (2 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 (1 + 1) (TKScalar Double))
-> f (TKR2 (1 + (1 + 1)) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR2 (1 + 1) (TKScalar Double))
a))
(Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)
(Int
-> f (TKR2 (1 + 1) (TKScalar Double))
-> f (TKR2 (1 + (1 + 1)) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR 0 Double)
a0)))) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold6 :: Assertion
testSin0Fold6 :: Assertion
testSin0Fold6 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
6 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr
(f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr f (TKR 2 Double)
f (TKR2 (2 + 0) (TKScalar Double))
x f (TKR 2 Double) -> f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Num a => a -> a -> a
+ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
a0))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold7 :: Assertion
testSin0Fold7 :: Assertion
testSin0Fold7 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
250 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
_a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr f (TKR 2 Double)
f (TKR2 (2 + 0) (TKScalar Double))
x))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR 0 Double)
a0))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8 :: Assertion
testSin0Fold8 :: Assertion
testSin0Fold8 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
2.200311410593445) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold0S :: Assertion
testSin0Fold0S :: Assertion
testSin0Fold0S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @0 @'[] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
_a -> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f (TKS ('[] @Nat) Double)
x)
f (TKS ('[] @Nat) Double)
x0 (Double -> f (TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold1S :: Assertion
testSin0Fold1S :: Assertion
testSin0Fold1S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' ((let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (let g :: forall f2. ADReady f2
=> f2 (TKS '[] Double) -> f2 (TKS '[] Double)
-> f2 (TKS '[] Double)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
g f2 (TKS ('[] @Nat) Double)
x f2 (TKS ('[] @Nat) Double)
_a = f2 (TKS ('[] @Nat) Double) -> f2 (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f2 (TKS ('[] @Nat) Double)
x
in f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
g)
f (TKS ('[] @Nat) Double)
x0 (forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl @'[1] Double
42)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold2S :: Assertion
testSin0Fold2S :: Assertion
testSin0Fold2S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.12389721944941383 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
_a -> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f (TKS ('[] @Nat) Double)
x)
f (TKS ('[] @Nat) Double)
x0 (forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl @'[5] @Double Double
42)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldForComparisonS :: Assertion
testSin0FoldForComparisonS :: Assertion
testSin0FoldForComparisonS = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.12389721944941383 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f = f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold3S :: Assertion
testSin0Fold3S :: Assertion
testSin0Fold3S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
_x f (TKS ('[] @Nat) Double)
a -> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f (TKS ('[] @Nat) Double)
a)
(Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
84) (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @f f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold4S :: Assertion
testSin0Fold4S :: Assertion
testSin0Fold4S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.7053476446727861) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a -> f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f (TKS ('[] @Nat) Double)
x) (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin f (TKS ('[] @Nat) Double)
a))
(Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0) (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @f f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold5S :: Assertion
testSin0Fold5S :: Assertion
testSin0Fold5S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.2992412552109085 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 3 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (let g :: forall f2. ADReady f2
=> f2 (TKS '[] Double) -> f2 (TKS '[2, 5] Double)
-> f2 (TKS '[] Double)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g f2 (TKS ('[] @Nat) Double)
x f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a = f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. Floating a => a -> a
sin (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f2 f2 (TKS ('[] @Nat) Double)
x)
(f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double)))
-> f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 @_ @_ @f2 f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a)
in f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g)
(Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f f (TKS ('[] @Nat) Double)
a0)))
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold6S :: Assertion
testSin0Fold6S :: Assertion
testSin0Fold6S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
6 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 1] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @2 @'[2, 1] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str
(f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall a b. (a -> b) -> a -> b
$ f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
x f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a. Num a => a -> a -> a
+ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKR 2 Double)
f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold7S :: Assertion
testSin0Fold7S :: Assertion
testSin0Fold7S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
250 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @2 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
_a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 f (TKS ('[] @Nat) Double)
a0))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8S :: Assertion
testSin0Fold8S :: Assertion
testSin0Fold8S = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
2.200311410593445) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @3 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8grad :: Assertion
testSin0Fold8grad :: Assertion
testSin0Fold8grad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
2.200311410593445) :: Concrete (TKR 0 Double))
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @2
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8rev2 :: Assertion
testSin0Fold8rev2 :: Assertion
testSin0Fold8rev2 = do
let h :: ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (ADTensorKind (TKR 0 Double))
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(ADVal Concrete) @Double @0 @2
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
98.72666469795736)
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
h) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8Sgrad :: Assertion
testSin0Fold8Sgrad :: Assertion
testSin0Fold8Sgrad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
2.200311410593445) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> Concrete (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @3 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8Srev2 :: Assertion
testSin0Fold8Srev2 :: Assertion
testSin0Fold8Srev2 = do
let h :: ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (ADTensorKind (TKS ('[] @Nat) Double))
h = forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 @(ADVal Concrete)
(let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @3 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f)
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(RepConcrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
forall (y :: TK). RepConcrete y -> Concrete y
Concrete (RepConcrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double))
-> RepConcrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ Double -> Shaped ('[] @Nat) Double
forall a. Elt a => a -> Shaped ('[] @Nat) a
Nested.sscalar Double
6.182232283434464e-2)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
h) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.0001))
testSin0Fold182Sgrad :: Assertion
testSin0Fold182Sgrad :: Assertion
testSin0Fold182Sgrad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.4409160296923509) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> Concrete (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @1 @'[5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
_x f (TKS ('[] @Nat) Double)
a -> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 f (TKS ('[] @Nat) Double)
a)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 f (TKS ('[] @Nat) Double)
a0)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ((':) @Nat 5 ('[] @Nat)) Double) -> f (TKR 1 Double)
f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKR2 (Rank @Nat ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ((':) @Nat 5 ('[] @Nat)) Double) -> f (TKR 1 Double))
-> (f (TKR 0 Double) -> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKR 0 Double)
-> f (TKR 1 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold182SrevPP :: Assertion
testSin0Fold182SrevPP :: Assertion
testSin0Fold182SrevPP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan)
(let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @1 @'[5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
_x f (TKS ('[] @Nat) Double)
a -> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 f (TKS ('[] @Nat) Double)
a)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 f (TKS ('[] @Nat) Double)
a0)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ((':) @Nat 5 ('[] @Nat)) Double) -> f (TKR 1 Double)
f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f (TKR2 (Rank @Nat ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ((':) @Nat 5 ('[] @Nat)) Double) -> f (TKR 1 Double))
-> (f (TKR 0 Double) -> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKR 0 Double)
-> f (TKR 1 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let v6 = tmapAccumRDer (SNat @1) <lambda> <lambda> <lambda> (sconcrete (sreplicate [5] 1.0)) (tpair (sconcrete (sfromListLinear [1] [Z1])) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @1) <lambda> <lambda> <lambda> (sconcrete (sreplicate [5] 1.1)) (sconcrete (sfromListLinear [1] [1.1]))))) (sconcrete (sfromListLinear [1] [1.1])))) in ssum @5 (tproject1 v6) + tproject2 v6 !$ [0])"
testSin0Fold18Sgrad :: Assertion
testSin0Fold18Sgrad :: Assertion
testSin0Fold18Sgrad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
2.4026418024701366) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> Concrete (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @2 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8jvp :: Assertion
testSin0Fold8jvp :: Assertion
testSin0Fold8jvp = do
Rational
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))))
-> Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
forall a b. (a -> b) -> a -> b
$ IShR 2
-> [ADTensorScalar Double] -> Ranked 2 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 2)
2, Int
Item (IShR 2)
5] (Int -> ADTensorScalar Double -> [ADTensorScalar Double]
forall a. Int -> a -> [a]
replicate Int
10 (-ADTensorScalar Double
0.2200311410593445)))
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @2
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8fwd2 :: Assertion
testSin0Fold8fwd2 :: Assertion
testSin0Fold8fwd2 = do
let h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(ADVal Concrete) @Double @0 @2
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 2 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
98.72666469795735)
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 2 Double) -> ADVal Concrete (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR 2 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8Sjvp :: Assertion
testSin0Fold8Sjvp :: Assertion
testSin0Fold8Sjvp = do
Rational
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))))
-> Ranked 2 (ADTensorScalar Double)
-> Concrete (TKR2 2 (TKScalar (ADTensorScalar Double)))
forall a b. (a -> b) -> a -> b
$ IShR 2
-> [ADTensorScalar Double] -> Ranked 2 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 2)
2, Int
Item (IShR 2)
5] (Int -> ADTensorScalar Double -> [ADTensorScalar Double]
forall a. Int -> a -> [a]
replicate Int
10 (-ADTensorScalar Double
0.2200311410593445)))
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete
(let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @3 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold8Sfwd2 :: Assertion
testSin0Fold8Sfwd2 :: Assertion
testSin0Fold8Sfwd2 = do
let h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(ADVal Concrete)
(let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[2, 5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold @3 @'[2, 5] @'[] @(TKScalar Double) @(TKScalar Double)
(\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR)
Rational
-> Concrete (TKR 2 Double) -> Concrete (TKR 2 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 2 Double -> Concrete (TKR 2 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 2 Double -> Concrete (TKR 2 Double))
-> Ranked 2 Double -> Concrete (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ IShR 2 -> [Double] -> Ranked 2 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 2)
2, Int
Item (IShR 2)
5] (Int -> Double -> [Double]
forall a. Int -> a -> [a]
replicate Int
10 Double
10.859933116775313))
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> Concrete (ADTensorKind (TKR 2 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> DValue src -> Concrete (ADTensorKind ztgt)
cjvp ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 2 Double)
h (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold5Sjvp :: Assertion
testSin0Fold5Sjvp :: Assertion
testSin0Fold5Sjvp = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.4291653807319993)
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> Concrete (ADTensorKind (TKR 0 Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> DValue src -> Concrete (ADTensorKind ztgt)
cjvp (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 3 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (let g :: forall f2. ADReady f2
=> f2 (TKS '[] Double) -> f2 (TKS '[2, 5] Double)
-> f2 (TKS '[] Double)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g f2 (TKS ('[] @Nat) Double)
x f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a = f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. Floating a => a -> a
sin (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f2 f2 (TKS ('[] @Nat) Double)
x)
(f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double)))
-> f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 @_ @_ @f2 f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a)
in f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g)
(Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f f (TKS ('[] @Nat) Double)
a0)))
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKR 0 Double)
ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
ADVal Concrete (TKS2 sh x)
-> ADVal Concrete (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> (ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
ADVal Concrete (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
ADVal Concrete (TKR2 (Rank @Nat sh) x)
-> ADVal Concrete (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Fold5Sfwds :: Assertion
testSin0Fold5Sfwds :: Assertion
testSin0Fold5Sfwds = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.4291653807319993)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> Concrete (ADTensorKind (TKS ('[] @Nat) Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> DValue src -> Concrete (ADTensorKind ztgt)
cjvp (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 3 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (let g :: forall f2. ADReady f2
=> f2 (TKS '[] Double) -> f2 (TKS '[2, 5] Double)
-> f2 (TKS '[] Double)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g f2 (TKS ('[] @Nat) Double)
x f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a = f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a. Floating a => a -> a
sin (f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f2 f2 (TKS ('[] @Nat) Double)
x)
(f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2 (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin (f2 (TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double)))
-> f2
(TKS2
((':) @Nat 7 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
-> f2
(TKS2
((':) @Nat 2 ((':) @Nat 7 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 @_ @_ @f2 f2 (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
a)
in f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
g)
(Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 @_ @_ @f
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 @_ @_ @f f (TKS ('[] @Nat) Double)
a0)))
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0Scan0 :: Assertion
testSin0Scan0 :: Assertion
testSin0Scan0 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 1 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @_ @Double (Int
0 Int -> IShR 0 -> IShR (1 + 0)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) Double
0)
in f (TKR 0 Double) -> f (TKR 1 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1 :: Assertion
testSin0Scan1 :: Assertion
testSin0Scan1 = do
Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.4535961214255773] :: Concrete (TKR 5 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 6 Double))
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 5 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 0 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 5 Double)
x f (TKR 0 Double)
_a -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
x)
f (TKR 5 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
1] Double
42))
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.1]))
testSin0Scan1ForComparison :: Assertion
testSin0Scan1ForComparison :: Assertion
testSin0Scan1ForComparison = do
Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.4535961214255773] :: Concrete (TKR 5 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 6 Double))
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 5 Double)
x0 -> NonEmpty (f (TKR 5 Double)) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 5 Double)
Item (NonEmpty (f (TKR 5 Double)))
x0, f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
x0])
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.1]))
testSin0Scan2 :: Assertion
testSin0Scan2 :: Assertion
testSin0Scan2 = do
Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
2.2207726343670955] :: Concrete (TKR 5 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 6 Double))
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 5 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 0 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 5 Double)
x f (TKR 0 Double)
_a -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
x)
f (TKR 5 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
5] Double
42))
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.1]))
testSin0Scan3 :: Assertion
testSin0Scan3 :: Assertion
testSin0Scan3 = do
Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.360788364276732] :: Concrete (TKR 5 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 6 Double))
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 5 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 5 Double)
_x f (TKR 5 Double)
a -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
a)
(IShR 5 -> f (TKR 0 Double) -> f (TKR 5 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
84))
(Int -> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 5 Double)
a0)) (IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.1]))
testSin0Scan4 :: Assertion
testSin0Scan4 :: Assertion
testSin0Scan4 = do
Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [-Double
0.4458209450295252] :: Concrete (TKR 5 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 6 Double))
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 5 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 5 Double)
x f (TKR 5 Double)
a -> f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
x) (f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin f (TKR 5 Double)
a))
(IShR 5 -> f (TKR 0 Double) -> f (TKR 5 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Num a => a -> a -> a
* f (TKR 5 Double)
a0)
(Int -> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 5 Double)
a0)) (IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1,Int
Item (IShR 5)
1] [Double
Item [Double]
1.1]))
testSin0Scan5 :: Assertion
testSin0Scan5 :: Assertion
testSin0Scan5 = do
Rational
-> Concrete (TKR2 4 (TKScalar Double))
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR2 4 (TKScalar Double))
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] [Double
Item [Double]
4.126141830000979] :: Concrete (TKR 4 Double))
((forall (f :: Target).
ADReady f =>
f (TKR2 4 (TKScalar Double)) -> f (TKR 5 Double))
-> Concrete (TKR2 4 (TKScalar Double))
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR2 4 (TKScalar Double))
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)))
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR2 4 (TKScalar Double))
x f (TKR2 (1 + 5) (TKScalar Double))
a -> f (TKR2 (1 + 4) (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)))
-> f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin (f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double) -> f (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR2 4 (TKScalar Double))
x)
(f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double))
-> f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double)))
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double)))
-> f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double)))
-> f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + (1 + 5)) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR2 (1 + 5) (TKScalar Double))
a))
(IShR 4 -> f (TKR 0 Double) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR2 4 (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall a. Num a => a -> a -> a
* f (TKR2 4 (TKScalar Double))
a0)
(Int
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + (1 + 5)) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (Int -> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR2 4 (TKScalar Double))
a0))))
(IShR 4 -> [Double] -> Concrete (TKR2 4 (TKScalar Double))
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] [Double
Item [Double]
1.1]))
testSin0Scan6 :: Assertion
testSin0Scan6 :: Assertion
testSin0Scan6 = do
Rational
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
1,Int
Item (IShR 2)
1] [Double
Item [Double]
12] :: Concrete (TKR 2 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 5 Double))
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 2 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 (1 + 3) (TKScalar Double))
-> f (TKR 2 Double) -> f (TKR2 (1 + 3) (TKScalar Double)))
-> f (TKR2 (1 + 3) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
-> f (TKR2 (1 + (1 + 3)) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR2 (1 + 3) (TKScalar Double))
x f (TKR 2 Double)
a -> f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr
(f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double)))
-> f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr f (TKR2 (1 + 3) (TKScalar Double))
f (TKR2 (2 + 2) (TKScalar Double))
x f (TKR2 4 (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall a. Num a => a -> a -> a
+ Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 (Int -> f (TKR 2 Double) -> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 2 Double)
a))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 2 Double) -> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 2 Double)
a0))
(Int -> f (TKR 2 Double) -> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 2 Double)
a0)) (IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
1,Int
Item (IShR 2)
1] [Double
Item [Double]
1.1]))
testSin0Scan7 :: Assertion
testSin0Scan7 :: Assertion
testSin0Scan7 = do
Rational
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
1,Int
Item (IShR 2)
1] [Double
Item [Double]
310] :: Concrete (TKR 2 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 5 Double))
-> Concrete (TKR 2 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 2 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 (1 + 3) (TKScalar Double))
-> f (TKR 2 Double) -> f (TKR2 (1 + 3) (TKScalar Double)))
-> f (TKR2 (1 + 3) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
-> f (TKR2 (1 + (1 + 3)) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR2 (1 + 3) (TKScalar Double))
x f (TKR 2 Double)
_a -> f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double)))
-> f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double)))
-> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 3) (TKScalar Double)) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 2) (TKScalar Double))
-> f (TKR2 (2 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr f (TKR2 (1 + 3) (TKScalar Double))
f (TKR2 (2 + 2) (TKScalar Double))
x))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 2 Double) -> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR 2 Double)
a0))
(Int -> f (TKR 2 Double) -> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 2 Double)
a0)) (IShR 2 -> [Double] -> Concrete (TKR 2 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 2)
1,Int
Item (IShR 2)
1] [Double
Item [Double]
1.1]))
testSin0Scan8 :: Assertion
testSin0Scan8 :: Assertion
testSin0Scan8 = do
Rational
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
9.532987357352765] :: Concrete (TKR 3 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 3 Double) -> f (TKR 6 Double))
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 3 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR 3 Double) -> f (TKR2 (1 + 4) (TKScalar Double)))
-> f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 (1 + 3) (TKScalar Double))
-> f (TKR2 (1 + (1 + 4)) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR2 (1 + 4) (TKScalar Double))
x f (TKR 3 Double)
a -> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double)))
-> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double)))
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 4 (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 4) (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double)))
-> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKR2 (1 + 4) (TKScalar Double))
x))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double)))
-> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 3 Double) -> f (TKR 3 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 3) (TKScalar Double)) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 3) (TKScalar Double)) -> f (TKR 3 Double))
-> f (TKR2 (1 + 3) (TKScalar Double)) -> f (TKR 3 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 3 Double)
a)))
(Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (IShR 3 -> f (TKR 0 Double) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR 3 Double) -> f (TKR 3 Double) -> f (TKR 3 Double)
forall a. Num a => a -> a -> a
* f (TKR 3 Double)
a0)))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 3 Double)
a0)) (IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
1.1]))
testSin0Scan8grad :: Assertion
testSin0Scan8grad :: Assertion
testSin0Scan8grad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 0 Double -> Concrete (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> Ranked 0 Double -> Concrete (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR 0 -> [Double] -> Ranked 0 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [] [Double
Item [Double]
9.53298735735276])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan8rev2 :: Assertion
testSin0Scan8rev2 :: Assertion
testSin0Scan8rev2 = do
let h :: ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (ADTensorKind (TKR 0 Double))
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(ADVal Concrete) @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 0 Double -> Concrete (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> Ranked 0 Double -> Concrete (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR 0 -> [Double] -> Ranked 0 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [] [Double
Item [Double]
285.9579482947575])
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double)
h) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan8Srev2 :: Assertion
testSin0Scan8Srev2 :: Assertion
testSin0Scan8Srev2 = do
let h :: ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (ADTensorKind (TKS ('[] @Nat) Double))
h = forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 @(ADVal Concrete) @Double @'[]
(\f (TKS ('[] @Nat) Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat (1 + 3) ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))))
(TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan (\f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKS2 ((':) @Nat 2 ((':) @Nat 5 ('[] @Nat))) (TKScalar Double))
x))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
a)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0))
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Shaped ('[] @Nat) Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target) (sh :: [Nat]).
(GoodScalar r, BaseTensor target) =>
Shaped sh r -> target (TKS sh r)
sconcrete (Shaped ('[] @Nat) Double -> Concrete (TKS ('[] @Nat) Double))
-> Shaped ('[] @Nat) Double -> Concrete (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ ShS ('[] @Nat) -> [Double] -> Shaped ('[] @Nat) Double
forall a (sh :: [Nat]). PrimElt a => ShS sh -> [a] -> Shaped sh a
Nested.sfromListPrimLinear [] [Double
Item [Double]
285.9579482947575])
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
h) (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1))
testSin0Scan1RevPP1 :: Assertion
testSin0Scan1RevPP1 :: Assertion
testSin0Scan1RevPP1 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x) f (TKR 0 Double)
x0
(forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
2] Double
42)) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPrettyButNested (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 + tproject1 (tmapAccumRDer (SNat @2) (\\x6 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (tpair (cos (sfromR (tproject1 (tproject2 (tproject2 x6)))) * (tproject1 (tproject2 x6) + tproject1 x6)) (sscalar 0.0))) (\\x13 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (tpair ((sfromR (tproject1 (tproject2 (tproject2 (tproject1 x13)))) * negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x13))))))) * (tproject1 (tproject2 (tproject2 x13)) + tproject1 (tproject2 x13)) + (tproject1 (tproject2 (tproject1 x13)) + tproject1 (tproject1 x13)) * cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x13)))))) (sscalar 0.0))) (\\x22 -> tconvert (ConvCmp (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) (ConvT2 ConvId (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX)))) (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) ConvSX)))))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)))) (let x30 = cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x22))))) * tproject1 (tproject1 x22) in tpair x30 (tpair x30 (tpair (negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x22)))))) * ((tproject1 (tproject2 (tproject2 x22)) + tproject1 (tproject2 x22)) * tproject1 (tproject1 x22))) (sscalar 0.0))))) (sscalar 0.0) (tpair (sconcrete (sreplicate [2] 1.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) (\\x31 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvCmp (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) ConvId)))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar))) (let x37 = sin (tproject1 x31) in tpair x37 (tpair (tproject1 x31) x37))) (\\x38 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvCmp (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) ConvId)))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar))) (let x49 = tproject1 (tproject1 x38) * cos (tproject1 (tproject2 x38)) in tpair x49 (tpair (tproject1 (tproject1 x38)) x49))) (\\x50 -> tpair (cos (tproject1 (tproject2 x50)) * (sfromR (tproject2 (tproject2 (tproject1 x50))) + tproject1 (tproject1 x50)) + sfromR (tproject1 (tproject2 (tproject1 x50)))) (sscalar 0.0)) (sscalar 1.1) (sconcrete (sreplicate [2] 42.0))))) (sconcrete (sreplicate [2] 42.0))))))"
testSin0Scan1RevPPForComparison :: Assertion
testSin0Scan1RevPPForComparison :: Assertion
testSin0Scan1RevPPForComparison = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0), f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0, f (TKR 0 Double)
Item (NonEmpty (f (TKR 0 Double)))
x0]) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 + (cos (sscalar 1.1) * cos (sin (sscalar 1.1)) + cos (sscalar 1.1)))"
testSin0ScanFwdPP :: Assertion
testSin0ScanFwdPP :: Assertion
testSin0ScanFwdPP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 1 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x) f (TKR 0 Double)
x0
(forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
2] Double
42)) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPrettyButNested (AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) (\\x7 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (let x17 = tproject1 x7 * cos (sfromR (tproject1 (tproject2 (tproject2 x7)))) in tpair x17 x17)) (\\x18 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (let x28 = tproject1 (tproject1 x18) * cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x18))))) + (sfromR (tproject1 (tproject2 (tproject2 (tproject1 x18)))) * negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x18))))))) * tproject1 (tproject2 x18) in tpair x28 x28)) (\\x29 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvCmp (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) (ConvT2 ConvId (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX)))) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) ConvSX)))))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)))) (let x38 = sfromR (tproject2 (tproject1 x29)) + tproject1 (tproject1 x29) in tpair (cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x29))))) * x38) (tpair (sscalar 0.0) (tpair (negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x29)))))) * (tproject1 (tproject2 x29) * x38)) (sscalar 0.0))))) (sscalar 1.0) (tpair (sconcrete (sreplicate [2] 0.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) (\\x39 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvCmp (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) ConvId)))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar))) (let x45 = sin (tproject1 x39) in tpair x45 (tpair (tproject1 x39) x45))) (\\x46 -> tconvert (ConvCmp (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) ConvId) (ConvCmp (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) ConvId)))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar))) (let x50 = tproject1 (tproject1 x46) * cos (tproject1 (tproject2 x46)) in tpair x50 (tpair (tproject1 (tproject1 x46)) x50))) (\\x51 -> tpair (cos (tproject1 (tproject2 x51)) * (sfromR (tproject2 (tproject2 (tproject1 x51))) + tproject1 (tproject1 x51)) + sfromR (tproject1 (tproject2 (tproject1 x51)))) (sscalar 0.0)) (sscalar 1.1) (sconcrete (sreplicate [2] 42.0))))) (sconcrete (sreplicate [2] 42.0))))))))"
testSin0ScanFwdPPFull :: Assertion
testSin0ScanFwdPPFull :: Assertion
testSin0ScanFwdPPFull = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet FullSpan (ADTensorKind (TKR 1 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet FullSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x) f (TKR 0 Double)
x0
(forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
2] Double
42)) (Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet FullSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPrettyButNested (AstTensor AstMethodLet FullSpan (TKR 1 Double)
-> AstTensor AstMethodLet FullSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet FullSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) (\\x7 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvCmp (ConvXR STKScalar) ConvSX)) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (let x17 = sfromR (tproject1 x7) * cos (sfromR (tproject1 (tproject2 (tproject2 x7)))) in tpair x17 x17)) (\\x18 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvCmp (ConvXR STKScalar) ConvSX)) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (let x28 = sfromR (tproject1 (tproject1 x18)) * cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x18))))) + (sfromR (tproject1 (tproject2 (tproject2 (tproject1 x18)))) * negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x18))))))) * sfromR (tproject1 (tproject2 x18)) in tpair x28 x28)) (\\x29 -> tconvert (ConvCmp (ConvT2 ConvId (ConvT2 (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX) (ConvT2 ConvId (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX)))) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp (ConvXR STKScalar) ConvSX))))) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)))) (let x38 = tproject2 (tconvert (ConvT2 (ConvCmp ConvXS (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvRX)) (ConvCmp ConvXS (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvRX))) (STKProduct (STKR (SNat @0) STKScalar) (STKR (SNat @0) STKScalar)) (tproject1 x29)) + tproject1 (tconvert (ConvT2 (ConvCmp ConvXS (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvRX)) (ConvCmp ConvXS (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvRX))) (STKProduct (STKR (SNat @0) STKScalar) (STKR (SNat @0) STKScalar)) (tproject1 x29)) in tpair (cos (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x29))))) * x38) (tpair (sscalar 0.0) (tpair (negate (sin (sfromR (tproject1 (tproject2 (tproject2 (tproject2 x29)))))) * (sfromR (tproject1 (tproject2 x29)) * x38)) (sscalar 0.0))))) (rfromS (sscalar 1.0)) (tpair (sconcrete (sreplicate [2] 0.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) (\\x39 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKProduct (STKR (SNat @0) STKScalar) (STKS [] STKScalar))) (let x45 = sin (sfromR (tproject1 x39)) in tpair x45 (tpair (tproject1 x39) x45))) (\\x46 -> tconvert (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvT2 ConvId (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKProduct (STKR (SNat @0) STKScalar) (STKS [] STKScalar))) (let x50 = sfromR (tproject1 (tproject1 x46)) * cos (sfromR (tproject1 (tproject2 x46))) in tpair x50 (tpair (tproject1 (tproject1 x46)) x50))) (\\x51 -> tconvert (ConvCmp (ConvT2 ConvId (ConvCmp (ConvXS' (FTKS [] FTKScalar)) ConvRX)) (ConvT2 (ConvCmp (ConvXR STKScalar) ConvSX) (ConvCmp (ConvXR STKScalar) ConvSX))) (STKProduct (STKS [] STKScalar) (STKS [] STKScalar)) (tpair (cos (sfromR (tproject1 (tproject2 x51))) * (sfromR (tproject2 (tproject2 (tproject1 x51))) + sfromR (tproject1 (tproject1 x51))) + sfromR (tproject1 (tproject2 (tproject1 x51)))) (sscalar 0.0))) (rfromS (sscalar 1.1)) (sconcrete (sreplicate [2] 42.0))))) (sconcrete (sreplicate [2] 42.0))))))))"
testSin0Scan1Rev2PP1 :: Assertion
testSin0Scan1Rev2PP1 :: Assertion
testSin0Scan1Rev2PP1 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) f (TKR 0 Double)
x0
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear @Double @1 [Int
Item (IShR 1)
2] [Double
Item [Double]
5, Double
Item [Double]
7]))) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 + tproject1 (tmapAccumRDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 0.0) (tpair (sconcrete (sreplicate [2] 1.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.0,7.0]))))) (sconcrete (sfromListLinear [2] [5.0,7.0]))))))"
testSin0Scan1Rev2PPA :: Assertion
testSin0Scan1Rev2PPA :: Assertion
testSin0Scan1Rev2PPA = do
Assertion
resetVarCounter
let art :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
(TKR2 (1 + 0) (TKScalar Double))
art = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor
AstMethodLet FullSpan (TKR2 (1 + 0) (TKScalar Double)))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
(TKR2 (1 + 0) (TKScalar Double))
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt
IncomingCotangentHandling
UseIncomingCotangent
(\AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0 -> forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan @_ @_ @_ @(TKScalar Double) (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0
(Ranked 1 Double -> AstTensor AstMethodLet FullSpan (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear @Double @1 [Int
Item (IShR 1)
2] [Double
Item [Double]
5, Double
Item [Double]
7])))
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
AstArtifactRev (TKR 0 Double) (TKR 1 Double) -> String
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty (AstArtifactRev (TKR 0 Double) (TKR 1 Double)
-> AstArtifactRev (TKR 0 Double) (TKR 1 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 0 Double) (TKR 1 Double)
art)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret x1 -> rfromS (sfromR dret !$ [0] + tproject1 (tmapAccumRDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 0.0) (tpair (sslice (SNat @1) (SNat @2) (sfromR dret)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> x1 (sconcrete (sfromListLinear [2] [5.0,7.0]))))) (sconcrete (sfromListLinear [2] [5.0,7.0]))))))"
testSin0Scan1Rev2PPForComparison :: Assertion
testSin0Scan1Rev2PPForComparison :: Assertion
testSin0Scan1Rev2PPForComparison = do
Assertion
resetVarCounter
let art :: AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
(TKR2 (1 + 0) (TKScalar Double))
art = IncomingCotangentHandling
-> (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor
AstMethodLet FullSpan (TKR2 (1 + 0) (TKScalar Double)))
-> FullShapeTK (X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
-> AstArtifactRev
(X (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
(TKR2 (1 + 0) (TKScalar Double))
forall src (ztgt :: TK) tgt.
(AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
(tgt :: Type) ~ (AstTensor AstMethodLet FullSpan ztgt :: Type)) =>
IncomingCotangentHandling
-> (src -> tgt)
-> FullShapeTK (X src)
-> AstArtifactRev (X src) ztgt
revArtifactAdapt
IncomingCotangentHandling
UseIncomingCotangent
(\AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0 -> NonEmpty (AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Floating a => a -> a
sin (AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Floating a => a -> a
sin AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0 AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7, AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Floating a => a -> a
sin AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0 AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, Item (NonEmpty (AstTensor AstMethodLet FullSpan (TKR 0 Double)))
AstTensor AstMethodLet FullSpan (TKR 0 Double)
x0])
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
forall (x :: TK) (z :: TK). AstArtifactRev x z -> String
printArtifactPretty @_ @(TKR 1 Double) (AstArtifactRev (TKR 0 Double) (TKR 1 Double)
-> AstArtifactRev (TKR 0 Double) (TKR 1 Double)
forall (x :: TK) (z :: TK).
AstArtifactRev x z -> AstArtifactRev x z
simplifyArtifact AstArtifactRev (TKR 0 Double) (TKR 1 Double)
art)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"\\dret x1 -> rfromS (cos (sfromR x1) * (cos (sscalar (-5.0) + sin (sfromR x1)) * sfromR dret !$ [0]) + (cos (sfromR x1) * sfromR dret !$ [1] + sfromR dret !$ [2]))"
testSin0Scan1Rev2 :: Assertion
testSin0Scan1Rev2 :: Assertion
testSin0Scan1Rev2 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 0 -> [Double] -> Concrete (TKR 0 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [] [Double
Item [Double]
1.1961317861865948] :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) f (TKR 0 Double)
x0
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear @Double @1 [Int
Item (IShR 1)
2] [Double
Item [Double]
5, Double
Item [Double]
7]))) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1Rev2ForComparison :: Assertion
testSin0Scan1Rev2ForComparison :: Assertion
testSin0Scan1Rev2ForComparison = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 0 -> [Double] -> Concrete (TKR 0 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [] [Double
Item [Double]
1.1961317861865948] :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7, f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
Item (NonEmpty (f (TKR 0 Double)))
x0]) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1Rev3PP0 :: Assertion
testSin0Scan1Rev3PP0 :: Assertion
testSin0Scan1Rev3PP0 = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) f (TKR 0 Double)
x0
(NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7])) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let v11 = tmapAccumRDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 0.0) (tpair (sconcrete (sreplicate [2] 1.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001]))))) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001])))) in sscalar 1.0 + (sscalar 5.0 * tproject2 v11 !$ [0] + (sscalar 7.0 * tproject2 v11 !$ [1] + tproject1 v11)))"
testSin0Scan1Rev3PPForComparison :: Assertion
testSin0Scan1Rev3PPForComparison :: Assertion
testSin0Scan1Rev3PPForComparison = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7, f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
Item (NonEmpty (f (TKR 0 Double)))
x0]) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let x9 = cos (sscalar (-5.5) + sin (sscalar 1.1)) in sscalar (-11.0) + (cos (sscalar 1.1) * x9 + (sscalar (-5.0) * x9 + cos (sscalar 1.1))))"
testSin0ScanFwd3PP :: Assertion
testSin0ScanFwd3PP :: Assertion
testSin0ScanFwd3PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) f (TKR 0 Double)
x0
(NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7])) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.0) (tpair (sconcrete (sfromListLinear [2] [5.0,7.0])) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001]))))) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001]))))))))"
testSin0Scan1Rev3 :: Assertion
testSin0Scan1Rev3 :: Assertion
testSin0Scan1Rev3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-5
(IShR 0 -> [Double] -> Concrete (TKR 0 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [] [-Double
10.076255083995068] :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a) f (TKR 0 Double)
x0
(NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7])) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1Rev3ForComparison :: Assertion
testSin0Scan1Rev3ForComparison :: Assertion
testSin0Scan1Rev3ForComparison = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-5
(IShR 0 -> [Double] -> Concrete (TKR 0 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [] [-Double
10.076255083995068] :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 0 Double)
x0 -> NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7, f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
Item (NonEmpty (f (TKR 0 Double)))
x0]) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan0jvp :: Assertion
testSin0Scan0jvp :: Assertion
testSin0Scan0jvp = do
Rational
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double)))
-> Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 1
-> [ADTensorScalar Double] -> Ranked 1 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
1] [Item [ADTensorScalar Double]
ADTensorScalar Double
1.0])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @1
(let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 1 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f f (TKR 0 Double)
x0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @_ @Double (Int
0 Int -> IShR 0 -> IShR (1 + 0)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) Double
0)
in f (TKR 0 Double) -> f (TKR 1 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1jvp :: Assertion
testSin0Scan1jvp :: Assertion
testSin0Scan1jvp = do
Rational
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double)))
-> Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 1
-> [ADTensorScalar Double] -> Ranked 1 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
2] [Item [ADTensorScalar Double]
ADTensorScalar Double
1.0,Item [ADTensorScalar Double]
ADTensorScalar Double
0.4535961214255773])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
1] Double
42))
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan1FwdForComparison :: Assertion
testSin0Scan1FwdForComparison :: Assertion
testSin0Scan1FwdForComparison = do
Rational
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double)))
-> Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 1
-> [ADTensorScalar Double] -> Ranked 1 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
2] [Item [ADTensorScalar Double]
ADTensorScalar Double
1.0,Item [ADTensorScalar Double]
ADTensorScalar Double
0.4535961214255773])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @1
(\f (TKR 0 Double)
x0 -> NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double)
Item (NonEmpty (f (TKR 0 Double)))
x0, f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x0]) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan8jvp :: Assertion
testSin0Scan8jvp :: Assertion
testSin0Scan8jvp = do
Rational
-> Concrete (TKR 3 (ADTensorScalar Double))
-> Concrete (TKR 3 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double)))
-> Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 3
-> [ADTensorScalar Double] -> Ranked 3 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 3)
4,Int
Item (IShR 3)
2,Int
Item (IShR 3)
5] [Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0Scan8fwd2 :: Assertion
testSin0Scan8fwd2 :: Assertion
testSin0Scan8fwd2 = do
let h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(ADVal Concrete) @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double))
-> f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a)))
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 0 Double -> Concrete (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> Ranked 0 Double -> Concrete (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR 0 -> [Double] -> Ranked 0 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [] [Double
Item [Double]
285.95794829475744])
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 3 Double) -> ADVal Concrete (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR 3 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testUnitriangular0PP :: Assertion
testUnitriangular0PP :: Assertion
testUnitriangular0PP = do
Assertion
resetVarCounter
let k :: Int
k = Int
1000000
a1 :: AstTensor AstMethodLet PrimalSpan (TKR2 (1 + 1) (TKScalar Double))
a1 = forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 @1 @(TKScalar Double) @(AstTensor AstMethodLet PrimalSpan) Int
k
((IntOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 (1 + 1) (TKScalar Double)))
-> (IntOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ \IntOf (AstTensor AstMethodLet PrimalSpan)
i -> Int
-> (IntOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
k
((IntOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 (1 + 0) (TKScalar Double)))
-> (IntOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor
AstMethodLet PrimalSpan (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ \IntOf (AstTensor AstMethodLet PrimalSpan)
j -> BoolOf (AstTensor AstMethodLet PrimalSpan)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
IntOf (AstTensor AstMethodLet PrimalSpan)
i AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
-> BoolOf (AstTensor AstMethodLet PrimalSpan)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. AstTensor AstMethodLet PrimalSpan (TKScalar Int64)
IntOf (AstTensor AstMethodLet PrimalSpan)
j) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1)
AstTensor AstMethodLet PrimalSpan (TKR 2 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
AstTensor AstMethodLet PrimalSpan (TKR2 (1 + 1) (TKScalar Double))
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sgather (sconcrete (sfromListLinear [2] [0.0,1.0])) (\\[i3, i2] -> [ifH (0 <=. i2 + negate i3) 0 1]))"
unitriangular1 :: (KnownNat k, GoodScalar rk, ADReady target)
=> Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular1 :: forall (k :: Nat) rk (target :: Target).
(KnownNat k, GoodScalar rk, ADReady target) =>
Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular1 Int
k IShR k
sh =
Int
-> (IntOf target -> target (TKR2 (1 + k) (TKScalar rk)))
-> target (TKR2 (1 + (1 + k)) (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
k ((IntOf target -> target (TKR2 (1 + k) (TKScalar rk)))
-> target (TKR2 (1 + (1 + k)) (TKScalar rk)))
-> (IntOf target -> target (TKR2 (1 + k) (TKScalar rk)))
-> target (TKR2 (1 + (1 + k)) (TKScalar rk))
forall a b. (a -> b) -> a -> b
$ \IntOf target
i ->
Int
-> (IntOf target -> target (TKR2 k (TKScalar rk)))
-> target (TKR2 (1 + k) (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
k ((IntOf target -> target (TKR2 k (TKScalar rk)))
-> target (TKR2 (1 + k) (TKScalar rk)))
-> (IntOf target -> target (TKR2 k (TKScalar rk)))
-> target (TKR2 (1 + k) (TKScalar rk))
forall a b. (a -> b) -> a -> b
$ \IntOf target
j ->
BoolOf target
-> target (TKR2 k (TKScalar rk))
-> target (TKR2 k (TKScalar rk))
-> target (TKR2 k (TKScalar rk))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (IntOf target
i IntOf target -> IntOf target -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. IntOf target
j) (IShR k
-> target (TKR2 0 (TKScalar rk)) -> target (TKR2 k (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N IShR k
sh (rk -> target (TKR2 0 (TKScalar rk))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar rk
0)) (IShR k
-> target (TKR2 0 (TKScalar rk)) -> target (TKR2 k (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N IShR k
sh (rk -> target (TKR2 0 (TKScalar rk))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar rk
1))
testUnitriangular1PP :: Assertion
testUnitriangular1PP :: Assertion
testUnitriangular1PP = do
Assertion
resetVarCounter
let sh :: ShR (((0 + 1) + 1) + 1) Int
sh = Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
6 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR
k :: Int
k = Int
10
a1 :: AstTensor AstMethodLet PrimalSpan (TKR2 (2 + 3) (TKScalar Double))
a1 = forall (k :: Nat) rk (target :: Target).
(KnownNat k, GoodScalar rk, ADReady target) =>
Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular1 @3 @Double @(AstTensor AstMethodLet PrimalSpan) Int
k IShR 3
sh
AstTensor AstMethodLet PrimalSpan (TKR 5 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
AstTensor AstMethodLet PrimalSpan (TKR2 (2 + 3) (TKScalar Double))
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sgather (sconcrete (sfromListLinear [2,2,3,6] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0])) (\\[i3, i2] -> [ifH (0 <=. i2 + negate i3) 0 1]))"
unitriangular2 :: (KnownNat k, GoodScalar rk, ADReady target)
=> Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular2 :: forall (k :: Nat) rk (target :: Target).
(KnownNat k, GoodScalar rk, ADReady target) =>
Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular2 Int
k IShR k
sh =
forall (m :: Nat) (n :: Nat) (p :: Nat) (x :: TK)
(target :: Target).
(KnownNat m, KnownNat n, KnownNat p, KnownSTK x,
BaseTensor target) =>
IShR (m + n)
-> target (TKR2 (p + n) x)
-> (IxROf target m -> IxROf target p)
-> target (TKR2 (m + n) x)
rgather @_ @_ @1 (Int
k Int -> ShR (k + 1) Int -> ShR ((k + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
k Int -> IShR k -> ShR (k + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR k
sh)
(NonEmpty (target (TKR2 k (TKScalar rk)))
-> target (TKR2 (1 + k) (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [ IShR k
-> target (TKR2 0 (TKScalar rk)) -> target (TKR2 k (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N IShR k
sh (rk -> target (TKR2 0 (TKScalar rk))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar rk
0)
, IShR k
-> target (TKR2 0 (TKScalar rk)) -> target (TKR2 k (TKScalar rk))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N IShR k
sh (rk -> target (TKR2 0 (TKScalar rk))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar rk
1) ])
(\(IntOf target
i :.: IntOf target
j :.: IxR n (IntOf target)
ZIR) -> BoolOf (PrimalOf target)
-> IntOf target -> IntOf target -> IntOf target
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (IntOf target
i IntOf target -> IntOf target -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. IntOf target
j) IntOf target
0 IntOf target
1 IntOf target -> IxR 0 (IntOf target) -> IxROf target 1
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (IntOf target)
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => IxR n i
ZIR)
testUnitriangular2PP :: Assertion
testUnitriangular2PP :: Assertion
testUnitriangular2PP = do
Assertion
resetVarCounter
let sh :: ShR (((0 + 1) + 1) + 1) Int
sh = Int
2 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
6 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR
k :: Int
k = Int
10
a1 :: AstTensor AstMethodLet PrimalSpan (TKR2 (2 + 3) (TKScalar Double))
a1 = forall (k :: Nat) rk (target :: Target).
(KnownNat k, GoodScalar rk, ADReady target) =>
Int -> IShR k -> target (TKR (2 + k) rk)
unitriangular2 @3 @Double @(AstTensor AstMethodLet PrimalSpan) Int
k IShR 3
sh
AstTensor AstMethodLet PrimalSpan (TKR 5 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInline AstTensor AstMethodLet PrimalSpan (TKR 5 Double)
AstTensor AstMethodLet PrimalSpan (TKR2 (2 + 3) (TKScalar Double))
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sgather (sconcrete (sfromListLinear [2,2,3,6] [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0])) (\\[i1, i2] -> [ifH (0 <=. i1 + negate i2) 1 0]))"
testSin0rmapAccumRD0S :: Assertion
testSin0rmapAccumRD0S :: Assertion
testSin0rmapAccumRD0S = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 0 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKS '[] Double)
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
_a = g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(Double -> f (TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00SC :: Assertion
testSin0rmapAccumRD00SC :: Assertion
testSin0rmapAccumRD00SC = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 0 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKS '[] Double)
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
_a = g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(Double -> f (TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00S0 :: Assertion
testSin0rmapAccumRD00S0 :: Assertion
testSin0rmapAccumRD00S0 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKScalar Z1))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 0 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g TKUnit
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKScalar Z1)
_a = g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(SNat 0
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @0) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00S :: Assertion
testSin0rmapAccumRD00S :: Assertion
testSin0rmapAccumRD00S = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
8.621412119476068e-2)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 7 (TKScalar Z1))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 7 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g TKUnit
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKScalar Z1)
_a = g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(SNat 7
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @7) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00S7 :: Assertion
testSin0rmapAccumRD00S7 :: Assertion
testSin0rmapAccumRD00S7 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.4091291405664697)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[7] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 7 (TKScalar Z1))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 7 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g TKUnit
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKScalar Z1)
_a = g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(SNat 7
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @7) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor
AstMethodLet
FullSpan
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (AstTensor
AstMethodLet
FullSpan
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet
FullSpan
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet
FullSpan
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00SCacc0 :: Assertion
testSin0rmapAccumRD00SCacc0 :: Assertion
testSin0rmapAccumRD00SCacc0 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> Concrete (ADTensorKind (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> Concrete (ADTensorKind ztgt) -> DValue src
cvjp (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[0] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKS ('[] @Nat) Double))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g TKUnit -> g (TKS '[] Double)
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKS ('[] @Nat) Double)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(Double -> f (TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1) ([Concrete (TKS2 ('[] @Nat) (TKScalar Z1))]
-> Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
[target (TKS2 ('[] @Nat) x)] -> target (TKS2 sh x)
sfromList0N []))
testSin0rmapAccumRD00SCacc :: Assertion
testSin0rmapAccumRD00SCacc :: Assertion
testSin0rmapAccumRD00SCacc = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[7] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKS ('[] @Nat) Double))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 7 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g TKUnit -> g (TKS '[] Double)
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKS ('[] @Nat) Double)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(Double -> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
-> ADVal Concrete (TKScalar Z1)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
-> ADVal Concrete (TKScalar Z1))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1)))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00Sacc0 :: Assertion
testSin0rmapAccumRD00Sacc0 :: Assertion
testSin0rmapAccumRD00Sacc0 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[0] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKS ('[] @Nat) Double))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g TKUnit -> g (TKS '[] Double)
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKS ('[] @Nat) Double)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(Double -> f (TKS2 ((':) @Nat 0 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00Sacc :: Assertion
testSin0rmapAccumRD00Sacc :: Assertion
testSin0rmapAccumRD00Sacc = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[7] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKS ('[] @Nat) Double))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 7 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g TKUnit -> g (TKS '[] Double)
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKS ('[] @Nat) Double)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(Double -> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00SCall0 :: Assertion
testSin0rmapAccumRD00SCall0 :: Assertion
testSin0rmapAccumRD00SCall0 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> Concrete (ADTensorKind (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> Concrete (ADTensorKind ztgt) -> DValue src
cvjp (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[0] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKScalar Z1))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g TKUnit -> g TKUnit
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKScalar Z1)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(SNat 0
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @0) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1) ([Concrete (TKS2 ('[] @Nat) (TKScalar Z1))]
-> Concrete (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
[target (TKS2 ('[] @Nat) x)] -> target (TKS2 sh x)
sfromList0N []))
testSin0rmapAccumRD00SCall :: Assertion
testSin0rmapAccumRD00SCall :: Assertion
testSin0rmapAccumRD00SCall = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Z1))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[7] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 7 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g TKUnit -> g TKUnit
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKScalar Z1)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(SNat 7
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @7) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
-> ADVal Concrete (TKScalar Z1)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
-> ADVal Concrete (TKScalar Z1))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1)))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00Sall0 :: Assertion
testSin0rmapAccumRD00Sall0 :: Assertion
testSin0rmapAccumRD00Sall0 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[0] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKScalar Z1))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g TKUnit -> g TKUnit
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKScalar Z1)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(SNat 0
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 0 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @0) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 0 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD00Sall :: Assertion
testSin0rmapAccumRD00Sall :: Assertion
testSin0rmapAccumRD00Sall = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
((AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (Value src) :: TK), KnownSTK (X src),
AdaptableTarget (AstTensor AstMethodLet FullSpan) src,
AdaptableTarget Concrete (Value src),
(tgt :: Type)
~ (AstTensor AstMethodLet FullSpan (TKScalar r) :: Type)) =>
(src -> tgt) -> Value src -> Value src
grad (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[7] Z1)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f f (TKS ('[] @Nat) Double)
_x0 = f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKProduct (TKScalar Z1) (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 7
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1)))
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
-> f (TKProduct (TKScalar Z1) (BuildTensorKind 7 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @7)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g TKUnit -> g TKUnit
-> g (TKProduct TKUnit TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g g (TKScalar Z1)
x g (TKScalar Z1)
_a = g (TKScalar Z1)
-> g (TKScalar Z1) -> g (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKScalar Z1) -> f (TKProduct (TKScalar Z1) (TKScalar Z1))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(SNat 7
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 7 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @7) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall r.
GoodScalar r =>
AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) r)
-> AstTensor AstMethodLet FullSpan (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
-> AstTensor AstMethodLet FullSpan (TKScalar Z1))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Z1)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (AstTensor AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1)))
-> (AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1))
-> AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor AstMethodLet FullSpan (TKS2 ('[] @Nat) (TKScalar Z1))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKS ('[] @Nat) Double)
-> AstTensor
AstMethodLet FullSpan (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ((':) @Nat 7 ('[] @Nat)) Z1)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD0R :: Assertion
testSin0rmapAccumRD0R :: Assertion
testSin0rmapAccumRD0R = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
x0 = f (TKProduct (TKR 0 Double) (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct (TKR 0 Double) (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double))
-> f (TKProduct (TKR 0 Double) (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 0
-> FullShapeTK (TKR 0 Double)
-> FullShapeTK (TKR 0 Double)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKR 0 Double)))
-> f (TKR 0 Double)
-> f (BuildTensorKind 0 (TKR 0 Double))
-> f (TKProduct (TKR 0 Double) (BuildTensorKind 0 (TKR 0 Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKR 0 Double) -> g (TKR 0 Double)
-> g (TKProduct (TKR 0 Double) (TKR 0 Double))
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKR 0 Double))
g g (TKR 0 Double)
x g (TKR 0 Double)
_a = g (TKR 0 Double)
-> g (TKR 0 Double) -> g (TKProduct (TKR 0 Double) (TKR 0 Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKR 0 Double) -> g (TKR 0 Double)
forall a. Floating a => a -> a
sin g (TKR 0 Double)
x) (g (TKR 0 Double) -> g (TKR 0 Double)
forall a. Floating a => a -> a
sin g (TKR 0 Double)
x)
in f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKR 0 Double))
forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKR 0 Double))
g)
f (TKR 0 Double)
x0
(IShR 1 -> Double -> f (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 1)
0] Double
0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN :: Assertion
testSin0rmapAccumRD01SN :: Assertion
testSin0rmapAccumRD01SN = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[1] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 1
-> FullShapeTK
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS ('[] @Nat) Double)))
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> f (BuildTensorKind 1 (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(BuildTensorKind 1 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKProduct (TKS '[] Double)
(TKS '[] Double))
-> g (TKS '[] Double)
-> g (TKProduct (TKProduct (TKS '[] Double)
(TKS '[] Double))
(TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS ('[] @Nat) Double))
g g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
xh g (TKS ('[] @Nat) Double)
_a = let x :: g (TKS ('[] @Nat) Double)
x = g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> g (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
xh
in g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)) (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
in f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
(TKS ('[] @Nat) Double))
g)
(f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3) f (TKS ('[] @Nat) Double)
x0)
(Double -> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKR 1 Double)
f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKR2 (Rank @Nat ((':) @Nat 1 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKR 1 Double))
-> (f (TKR 0 Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 1 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN3 :: Assertion
testSin0rmapAccumRD01SN3 :: Assertion
testSin0rmapAccumRD01SN3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[1, 3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 1
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind
1 (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind
1 (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKS '[] Double)
-> g (TKS '[2] Double)
-> g (TKProduct (TKS '[] Double)
(TKS '[3] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
g g (TKS ('[] @Nat) Double)
x g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
_a = g (TKS ('[] @Nat) Double)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3))
in f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
g)
f (TKS ('[] @Nat) Double)
x0
(Double
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR 2 Double)
f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR2
(Rank @Nat ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN5 :: Assertion
testSin0rmapAccumRD01SN5 :: Assertion
testSin0rmapAccumRD01SN5 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[1, 3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> f (TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 1
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind
1
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind
1
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)))
(let g :: forall g. ADReady g
=> g (TKS '[] Double)
-> g (TKProduct (TKProduct (TKS '[2] Double)
(TKS '[2] Double))
(TKProduct (TKS '[2] Double)
(TKS '[2] Double)))
-> g (TKProduct (TKS '[] Double)
(TKProduct (TKS '[3] Double)
(TKS '[3] Double)))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g g (TKS ('[] @Nat) Double)
x g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a =
g (TKS ('[] @Nat) Double)
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@2 @'[]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a))
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[2]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a) [Item (IxS ((':) @Nat 2 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a)
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3)))
in f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g)
f (TKS ('[] @Nat) Double)
x0
(f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0) (Double
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0))
(f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0) (Double
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)))
in f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR 2 Double)
f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR2
(Rank @Nat ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN51 :: Assertion
testSin0rmapAccumRD01SN51 :: Assertion
testSin0rmapAccumRD01SN51 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
69.90586521651421))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
x0 = (\f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
res -> forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @6 (f (TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
res)
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 @'[6, 5, 4, 3]
(f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
res))
(f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
-> f (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKS2
((':) @Nat 6 ((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))))
(TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @6) SingletonTK
(TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2
((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2
((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))))
-> f (BuildTensorKind
6
(TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2
((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double)))))
-> (IntOf f
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2
((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))))
-> f (BuildTensorKind
6
(TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2
((':) @Nat 5 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
j ->
Proxy @Target f
-> SNat 5
-> FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> (forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (BuildTensorKind
5
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(BuildTensorKind
5 (TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @5)
(FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(ShS ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @4 SNat 4
-> ShS ((':) @Nat 3 ('[] @Nat))
-> ShS ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat)))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)))
(let g :: forall g. ADReady g
=> g (TKProduct (TKS '[] Double)
(TKS '[3] Double))
-> g (TKProduct (TKProduct (TKS '[2] Double)
(TKS '[3] Double))
(TKProduct (TKS '[2] Double)
(TKS '[2] Double)))
-> g (TKProduct (TKProduct (TKS '[] Double)
(TKS '[3] Double))
(TKS '[4, 3] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
g g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
xh g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a =
let x :: g (TKS ('[] @Nat) Double)
x = g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS ('[] @Nat) Double)
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
xh
x1 :: g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x1 = g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
xh
in g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2
((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> g (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair
(g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@2 @'[]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[2]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a) [Item (IxS ((':) @Nat 2 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
(IntOf target -> target (TKS2 sh x))
-> target (TKS2 ((':) @Nat k sh) x)
sbuild1 @4 ((PrimalOf g (TKScalar Int64)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2
((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> (PrimalOf g (TKScalar Int64)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2
((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ \PrimalOf g (TKScalar Int64)
i ->
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a)
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x1 g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ PrimalOf g (TKScalar Int64) -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 PrimalOf g (TKScalar Int64)
i))
in f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 4 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
g)
(f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS ('[] @Nat) Double)
x0 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
j))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
x0))
(f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1) (forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N @'[5, 3]
(IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
j)))
(f (TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3) (Double
-> f (TKS2
((':) @Nat 5 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
4)))
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN531a :: Assertion
testSin0rmapAccumRD01SN531a :: Assertion
testSin0rmapAccumRD01SN531a = do
Rational
-> Concrete (TKR 1 Double)
-> ((Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))),
(Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 1 -> [Double] -> Concrete (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3]
[Double
Item [Double]
1.8478609886246988,-Double
22.194216099801963,-Double
40.72162125038692])
((forall (f :: Target).
ADReady f =>
f (TKR 1 Double) -> f (TKR2 4 (TKScalar Double)))
-> Concrete (TKR 1 Double)
-> ((Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))),
(Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 4 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[3] Double) -> f (TKS '[2, 2, 2, 3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
f f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0 = (\f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
res -> Double
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (f (TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double)))
-> f (TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
res)
f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall a. Num a => a -> a -> a
- f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
res)
(f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKProduct
(TKProduct
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 6 ('[] @Nat))))
(TKScalar Double)))
(TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))))
-> (IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))))
-> (IntOf f
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
j ->
Proxy @Target f
-> SNat 2
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (BuildTensorKind
2
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(BuildTensorKind
2 (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @2)
(FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 6 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @6 SNat 6 -> ShS ('[] @Nat) -> ShS ((':) @Nat 6 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 1 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1 -> ShS ('[] @Nat) -> ShS ((':) @Nat 1 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(let g :: forall g. ADReady g
=> g (TKProduct (TKS '[3] Double)
(TKS '[6] Double))
-> g (TKProduct (TKS '[1] Double)
(TKS '[3] Double))
-> g (TKProduct (TKProduct (TKS '[3] Double)
(TKS '[6] Double))
(TKS '[3] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
g g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
xh g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a =
let x :: g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x = g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
xh
x2 :: g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
x2 = g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
xh
in g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair
(NonEmpty (g (TKS ('[] @Nat) Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKS2 sh x)) -> target (TKS2 ((':) @Nat n sh) x)
sfromList
[Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.01, forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @6 g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
x2, Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.3]
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a)
(Double -> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
x2
g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @6
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum (g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a))))
(Double -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @1 (g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a))
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[3]
(g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a) [Item (IxS ((':) @Nat 3 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@3 @'[]
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3)))
in f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (f :: Target).
ADReady f =>
f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
g)
(f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0 f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ (Double -> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
+ forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 (IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
j)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @6 (IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
i)
f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- f (TKS2 ((':) @Nat 6 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat (Product ((':) @Nat 6 ('[] @Nat))) ('[] @Nat))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x)
-> target (TKS2 ((':) @Nat (Product sh) ('[] @Nat)) x)
sflatten (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (3 + 3) ('[] @Nat)) (TKScalar Double))
forall (m :: Nat) (n :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat m sh) x)
-> target (TKS2 ((':) @Nat n sh) x)
-> target (TKS2 ((':) @Nat (m + n) sh) x)
sappend f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0 f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0)))
(f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (NonEmpty (f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKS2 sh x)) -> target (TKS2 ((':) @Nat n sh) x)
sfromList [Double -> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl (-Double
0.1), forall (sh :: [Nat]) (sh2 :: [Nat]) (x :: TK) (target :: Target).
((Product sh :: Nat) ~ (Product sh2 :: Nat), KnownShS sh2,
KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 sh2 x)
sreshape @'[] @'[1] (f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
j])
(([f (TKS ('[] @Nat) Double)]
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
[target (TKS2 ('[] @Nat) x)] -> target (TKS2 sh x)
sfromList0N
[Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.4, Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar (-Double
0.01), Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar (-Double
0.3), IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
i, Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.5, Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.3]))))
in f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKR2 4 (TKScalar Double))
f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKR2
(Rank
@Nat
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
-> f (TKR2 4 (TKScalar Double)))
-> (f (TKR 1 Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> f (TKR 1 Double)
-> f (TKR2 4 (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
f (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double))
-> (f (TKR 1 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKR 1 Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat)))))
Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 1 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f (TKR2 (Rank @Nat ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (IShR 1 -> [Double] -> Concrete (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [Double
Item [Double]
1.1, Double
Item [Double]
2, Double
Item [Double]
3.14]))
testSin0rmapAccumRD01SN531b0 :: Assertion
testSin0rmapAccumRD01SN531b0 :: Assertion
testSin0rmapAccumRD01SN531b0 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
4)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKR 0 Double)
-> f (TKR 2 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f f (TKR 0 Double)
x0 = f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1
(f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))))
-> (IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> (IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_j ->
Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKR 0 Double))
-> f (TKProduct
(TKS ('[] @Nat) Double) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let h :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKR 0 Double)
-> g (TKProduct (TKS '[] Double) TKUnit)
h :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h g (TKS ('[] @Nat) Double)
xh g (TKR 0 Double)
_a = g (TKS ('[] @Nat) Double)
-> g (TKScalar Z1)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKS ('[] @Nat) Double)
xh g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h)
(f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR f (TKR 0 Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
x0)
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 Double -> f (TKR 1 Double))
-> Ranked 1 Double -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ IShR 1 -> [Double] -> Ranked 1 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
0] []))
in f (TKR 0 Double) -> f (TKR 2 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
_testSin0rmapAccumRD01SN531b0PP :: Assertion
_testSin0rmapAccumRD01SN531b0PP :: Assertion
_testSin0rmapAccumRD01SN531b0PP = do
Assertion
resetVarCounter
let f :: forall f. ADReady f
=> f (TKR 0 Double)
-> f (TKR 2 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f f (TKR 0 Double)
x0 = f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1
(f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))))
-> (IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> (IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_j ->
Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKR 0 Double))
-> f (TKProduct
(TKS ('[] @Nat) Double) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let h :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKR 0 Double)
-> g (TKProduct (TKS '[] Double) TKUnit)
h :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h g (TKS ('[] @Nat) Double)
xh g (TKR 0 Double)
_a = g (TKS ('[] @Nat) Double)
-> g (TKScalar Z1)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKS ('[] @Nat) Double)
xh g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h)
(f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR f (TKR 0 Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
x0)
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 Double -> f (TKR 1 Double))
-> Ranked 1 Double -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ IShR 1 -> [Double] -> Ranked 1 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
0] []))
AstTensor AstMethodLet PrimalSpan (TKR 2 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPrettyButNested
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sreplicate @2 (sreplicate @2 (tproject1 (tmapAccumRDer (SNat @0) (\\x7 -> tpair (tproject1 x7) Z1) (\\x8 -> tpair (tproject1 (tproject1 x8)) Z1) (\\x11 -> tpair (tproject1 (tproject1 x11)) (sscalar 0.0)) (sscalar 1.1) (sconcrete (sfromListLinear [0] []))))))"
testSin0rmapAccumRD01SN531b0PPj :: Assertion
testSin0rmapAccumRD01SN531b0PPj :: Assertion
testSin0rmapAccumRD01SN531b0PPj = do
Assertion
resetVarCounter
let f :: forall f. ADReady f
=> f (TKR 0 Double) -> f (TKR 2 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f f (TKR 0 Double)
x0 = f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> (f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((PrimalOf f (TKScalar Int64)
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))))
-> (PrimalOf f (TKScalar Int64)
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
forall a b. (a -> b) -> a -> b
$ \PrimalOf f (TKScalar Int64)
i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((PrimalOf f (TKScalar Int64)
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1))))
-> (PrimalOf f (TKScalar Int64)
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 0 ('[] @Nat)) Z1)))
forall a b. (a -> b) -> a -> b
$ \PrimalOf f (TKScalar Int64)
j ->
(Proxy @Target f
-> SNat 0
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 0 (TKR 0 Double))
-> f (TKProduct
(TKS ('[] @Nat) Double) (BuildTensorKind 0 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @0)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let h :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKR 0 Double)
-> g (TKProduct (TKS '[] Double) TKUnit)
h :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h g (TKS ('[] @Nat) Double)
xh g (TKR 0 Double)
_a = g (TKS ('[] @Nat) Double)
-> g (TKScalar Z1)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKS ('[] @Nat) Double)
xh g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKR 0 Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
h)
(PrimalOf f (TKScalar Int64) -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 (PrimalOf f (TKScalar Int64)
i PrimalOf f (TKScalar Int64)
-> PrimalOf f (TKScalar Int64) -> PrimalOf f (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf f (TKScalar Int64)
j) f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR f (TKR 0 Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
x0)
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 Double -> f (TKR 1 Double))
-> Ranked 1 Double -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ IShR 1 -> [Double] -> Ranked 1 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
0] [])))))
((f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double))
-> (f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ \ !f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
d -> f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 0 ('[] @Nat))))
(TKScalar Z1)))
d
AstTensor AstMethodLet PrimalSpan (TKR 2 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (tproject1 (tmapAccumRDer (SNat @0) <lambda> <lambda> <lambda> (sconcrete (sfromListLinear [2,2] [1.1,2.1,2.1,3.1])) (sconcrete (sfromListLinear [0,2,2] []))))"
testSin0rmapAccumRD01SN531bRPPj :: Assertion
testSin0rmapAccumRD01SN531bRPPj :: Assertion
testSin0rmapAccumRD01SN531bRPPj = do
Assertion
resetVarCounter
let f :: forall f. ADReady f
=> f (TKR 0 Double) -> f (TKR 2 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f f (TKR 0 Double)
x0 = f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> (f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((PrimalOf f (TKScalar Int64)
-> f (BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))))
-> (PrimalOf f (TKScalar Int64)
-> f (BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
forall a b. (a -> b) -> a -> b
$ \PrimalOf f (TKScalar Int64)
i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((PrimalOf f (TKScalar Int64)
-> f (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> (PrimalOf f (TKScalar Int64)
-> f (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2 (TKProduct (TKR 0 Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
forall a b. (a -> b) -> a -> b
$ \PrimalOf f (TKScalar Int64)
j ->
(Proxy @Target f
-> SNat 1
-> FullShapeTK (TKR 0 Double)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKScalar Z1)))
-> f (TKR 0 Double)
-> f (BuildTensorKind 1 (TKR 0 Double))
-> f (TKProduct (TKR 0 Double) (BuildTensorKind 1 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let h :: forall g. ADReady g
=> g (TKR 0 Double) -> g (TKR 0 Double)
-> g (TKProduct (TKR 0 Double) TKUnit)
h :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKScalar Z1))
h g (TKR 0 Double)
xh g (TKR 0 Double)
_a = g (TKR 0 Double)
-> g (TKScalar Z1) -> g (TKProduct (TKR 0 Double) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKR 0 Double)
xh g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKR 0 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 0 Double) (TKScalar Z1))
h)
(PrimalOf f (TKScalar Int64) -> f (TKR 0 Double)
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 (PrimalOf f (TKScalar Int64)
i PrimalOf f (TKScalar Int64)
-> PrimalOf f (TKScalar Int64) -> PrimalOf f (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf f (TKScalar Int64)
j) f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
x0)
(Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 Double -> f (TKR 1 Double))
-> Ranked 1 Double -> f (TKR 1 Double)
forall a b. (a -> b) -> a -> b
$ IShR 1 -> [Double] -> Ranked 1 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
0] [])))))
((f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double))
-> (f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double))
-> f (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ \ !f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
d -> f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKR 2 Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKR 2 Double)
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
d
AstTensor AstMethodLet PrimalSpan (TKR 2 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 2 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double)
f @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (tproject1 (tmapAccumRDer (SNat @1) <lambda> <lambda> <lambda> (sconcrete (sfromListLinear [2,2] [1.1,2.1,2.1,3.1])) (sconcrete (sfromListLinear [0,2,2] []))))"
testSin0rmapAccumRD01SN531c :: Assertion
testSin0rmapAccumRD01SN531c :: Assertion
testSin0rmapAccumRD01SN531c = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
1.8866871148429984))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 3 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double), Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR 3 (ADTensorScalar Double)),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[2, 2, 2] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
f f (TKS ('[] @Nat) Double)
x0 = (\f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
res -> Double
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 (f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
res)
f (TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall a. Num a => a -> a -> a
- f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
res)
(f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))))
-> (IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> (IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double)
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
j ->
(Proxy @Target f
-> SNat 2
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 2 (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 2 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @2)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g (TKS '[] Double)
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
a =
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- g (TKS ('[] @Nat) Double)
a)
(Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3 g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- g (TKS ('[] @Nat) Double)
a)
in f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
(f (TKS ('[] @Nat) Double)
x0 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
j))
([f (TKS ('[] @Nat) Double)]
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
[target (TKS2 ('[] @Nat) x)] -> target (TKS2 sh x)
sfromList0N [Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.4, IntOf f -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(ADReady target, GoodScalar r) =>
IntOf target -> target (TKS ('[] @Nat) r)
sfromIndex0 IntOf f
i])))
in f (TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKR 3 Double)
f (TKS ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
-> f (TKR 3 Double))
-> (f (TKR 0 Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> f (TKR 0 Double)
-> f (TKR 3 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
f (f (TKS ('[] @Nat) Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat)))) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN531Slice :: Assertion
testSin0rmapAccumRD01SN531Slice :: Assertion
testSin0rmapAccumRD01SN531Slice = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
4)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[2, 2] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1
(f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2
((':) @Nat 2 ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))))
(TKScalar Z1)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))))
-> (IntOf f
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> f (BuildTensorKind
2
(BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_i ->
(forall (target :: Target) (y :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k
-> SingletonTK y
-> (IntOf target -> target y)
-> target (BuildTensorKind k y)
tbuild1 @f (forall (n :: Nat). KnownNat n => SNat n
SNat @2) SingletonTK
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK ((IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1))))
-> (IntOf f
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
-> f (BuildTensorKind
2
(TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 1 ('[] @Nat)) Z1)))
forall a b. (a -> b) -> a -> b
$ \IntOf f
_j ->
(Proxy @Target f
-> SNat 1
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 1 (TKScalar Z1))
-> f (TKProduct
(TKS ('[] @Nat) Double) (BuildTensorKind 1 (TKScalar Z1)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
FullShapeTK (TKScalar Z1)
ftkUnit
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g (TKS '[] Double) -> g TKUnit
-> g (TKProduct (TKS '[] Double) TKUnit)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
g g (TKS ('[] @Nat) Double)
x g (TKScalar Z1)
_a =
g (TKS ('[] @Nat) Double)
-> g (TKScalar Z1)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKS ('[] @Nat) Double)
x g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
in f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKScalar Z1)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKScalar Z1))
g)
f (TKS ('[] @Nat) Double)
x0
(SNat 1
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 1 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @1) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)))
in f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN55 :: Assertion
testSin0rmapAccumRD01SN55 :: Assertion
testSin0rmapAccumRD01SN55 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
4.1200926532396815)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 2 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[5, 3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
x0 = (\f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res -> forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @5 (f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res)
f (TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a. Num a => a -> a -> a
* (f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res)
f (TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a. Num a => a -> a -> a
+ (f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res))
(f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 5
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK (TKScalar Z1)
-> (forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (BuildTensorKind 5 (TKScalar Z1))
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(BuildTensorKind
5
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @5)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
FullShapeTK (TKScalar Z1)
ftkUnit
(let g :: forall g. ADReady g
=> g (TKS '[3] Double)
-> g TKUnit
-> g (TKProduct (TKS '[3] Double)
(TKProduct (TKS '[3] Double)
(TKS '[3] Double)))
g :: forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKScalar Z1)
_a =
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x)
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[3] g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x [Item (IxS ((':) @Nat 3 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@3 @'[]
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3)))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @3 g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x)
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
+ g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3))
in f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
x0)
(SNat 5
-> SingletonTK (TKScalar Z1)
-> f (TKScalar Z1)
-> f (BuildTensorKind 5 (TKScalar Z1))
forall (z :: TK) (k :: Nat).
ConvertTensor f =>
SNat k -> SingletonTK z -> f z -> f (BuildTensorKind k z)
forall (target :: Target) (z :: TK) (k :: Nat).
(BaseTensor target, ConvertTensor target) =>
SNat k -> SingletonTK z -> target z -> target (BuildTensorKind k z)
treplicate (forall (n :: Nat). KnownNat n => SNat n
SNat @5) SingletonTK (TKScalar Z1)
stkUnit f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit)
in f (TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 0 Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2
((':) @Nat 5 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0rmapAccumRD01SN55acc :: Assertion
testSin0rmapAccumRD01SN55acc :: Assertion
testSin0rmapAccumRD01SN55acc = do
Rational
-> Concrete (TKR 1 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 1 -> [Double] -> Concrete (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [-Double
21.0,-Double
42.0,-Double
21.0])
((forall (f :: Target).
ADReady f =>
f (TKR 1 Double) -> f (TKR 2 Double))
-> Concrete (TKR 1 Double)
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))),
(Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
AstTensor AstMethodLet PrimalSpan (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 2 Double), Concrete (TKR 2 Double),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)), Concrete (TKR 1 Double),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 2 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double)),
Concrete (TKR 1 (ADTensorScalar Double))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f
=> f (TKS '[3] Double) -> f (TKS '[2, 3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
f f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0 = (\f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res -> Double
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a. Num a => a -> a -> a
- f (TKS2 ((':) @Nat 3 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 3 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 3 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @7
(f (TKS2 ((':) @Nat 7 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2
((':) @Nat 7 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 7 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n ((':) @Nat m sh)) x)
-> target (TKS2 ((':) @Nat m ((':) @Nat n sh)) x)
str (f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res))
f (TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a. Num a => a -> a -> a
- (f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
res))
(f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 2 ((':) @Nat 7 ('[] @Nat))) (TKScalar Double)))
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 2
-> FullShapeTK (TKScalar Z1)
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
-> f (TKScalar Z1)
-> f (BuildTensorKind
2
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKScalar Z1)
(BuildTensorKind
2
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @2)
FullShapeTK (TKScalar Z1)
ftkUnit
(FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 7 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @7 SNat 7 -> ShS ('[] @Nat) -> ShS ((':) @Nat 7 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 1 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1 -> ShS ('[] @Nat) -> ShS ((':) @Nat 1 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(let g :: forall g. ADReady g
=> g TKUnit
-> g (TKProduct (TKS '[1] Double)
(TKS '[3] Double))
-> g (TKProduct TKUnit
(TKProduct (TKProduct (TKS '[3] Double)
(TKS '[7] Double))
(TKS '[3] Double)))
g :: forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g g (TKScalar Z1)
_xh g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a =
let x :: g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x = forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 @_ @_ @g (Double -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
2)
in g (TKScalar Z1)
-> g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair g (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair
([Double] -> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
[r] -> target (TKS sh r)
singestData [Double
Item [Double]
0.1, Double
Item [Double]
0.2, Double
Item [Double]
0.3]
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a)
(Double -> g (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1 g (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS ('[] @Nat) Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS ('[] @Nat) Double)
forall a b. (a -> b) -> a -> b
$ g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a)))
(g (TKS ('[] @Nat) Double)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (Double -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1)
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @1 (g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a))
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ g (TKS ('[] @Nat) Double)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (Double -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
3)
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Num a => a -> a -> a
- forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[3]
(g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
a) [Item (IxS ((':) @Nat 3 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@3 @'[]
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Floating a => a -> a
sin g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. Fractional a => a -> a -> a
/ g (TKS ('[] @Nat) Double)
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (Double -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
3)))))
in f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (f :: Target).
ADReady f =>
f (TKScalar Z1)
-> f (TKProduct
(TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKProduct
(TKScalar Z1)
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double)))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g)
f (TKScalar Z1)
forall (target :: Target).
BaseTensor target =>
target (TKScalar Z1)
tunit
(f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
(TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair ([Double] -> f (TKS ((':) @Nat 2 ((':) @Nat 1 ('[] @Nat))) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
[r] -> target (TKS sh r)
singestData [-Double
0.1, Double
Item [Double]
0.23])
([f (TKS ('[] @Nat) Double)]
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
[target (TKS2 ('[] @Nat) x)] -> target (TKS2 sh x)
sfromList0N
[f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> IxS ((':) @Nat 3 ('[] @Nat)) (PrimalOf f (TKScalar Int64))
-> f (TKS ('[] @Nat) Double)
forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0 [Item (IxS ((':) @Nat 3 ('[] @Nat)) (PrimalOf f (TKScalar Int64)))
PrimalOf f (TKScalar Int64)
1], Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar (-Double
0.01), Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar (-Double
0.3), f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x0, Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.5, Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.3]))
in f (TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double)
f (TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR2
(Rank @Nat ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))))
(TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKR 2 Double))
-> (f (TKR 1 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> f (TKR 1 Double)
-> f (TKR 2 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
f (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double)))
-> (f (TKR 1 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKR 1 Double)
-> f (TKS2
((':) @Nat 2 ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 1 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f (TKR2 (Rank @Nat ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (IShR 1 -> [Double] -> Concrete (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [Double
Item [Double]
1.1, Double
Item [Double]
2, Double
Item [Double]
3.14]))
testSin0rmapAccumRD01SN58 :: Assertion
testSin0rmapAccumRD01SN58 :: Assertion
testSin0rmapAccumRD01SN58 = do
Rational
-> Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Shaped ((':) @Nat 5 ('[] @Nat)) Double
-> Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall r (target :: Target) (sh :: [Nat]).
(GoodScalar r, BaseTensor target) =>
Shaped sh r -> target (TKS sh r)
sconcrete (Shaped ((':) @Nat 5 ('[] @Nat)) Double
-> Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> Shaped ((':) @Nat 5 ('[] @Nat)) Double
-> Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ forall a (sh :: [Nat]). PrimElt a => ShS sh -> [a] -> Shaped sh a
Nested.sfromListPrimLinear @_ @'[5] ShS ((':) @Nat 5 ('[] @Nat))
forall (sh :: [Nat]). KnownShS sh => ShS sh
knownShS [Double
Item [Double]
0,Double
Item [Double]
0,Double
Item [Double]
0,Double
Item [Double]
0,Double
Item [Double]
1.1])
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> Concrete (ADTensorKind (TKS ((':) @Nat 5 ('[] @Nat)) Double))
forall src (ztgt :: TK) tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete ztgt :: Type)) =>
(src -> tgt)
-> DValue src -> DValue src -> Concrete (ADTensorKind ztgt)
cjvp (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKS '[5] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f f (TKS ('[] @Nat) Double)
x0 = f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2
(f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double) (TKS ((':) @Nat 5 ('[] @Nat)) Double))
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 5
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double)))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind 5 (TKS ('[] @Nat) Double))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind 5 (TKS ('[] @Nat) Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @5)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKS '[] Double)
-> g (TKS '[] Double)
-> g (TKProduct (TKS '[] Double) (TKS '[] Double))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
_a =
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double)
-> g (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Double -> g (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1) g (TKS ('[] @Nat) Double)
x
in f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (TKProduct (TKS ('[] @Nat) Double) (TKS ('[] @Nat) Double))
g)
f (TKS ('[] @Nat) Double)
x0
(Double -> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
in ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKS ((':) @Nat 5 ('[] @Nat)) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ((':) @Nat 5 ('[] @Nat)) Double)
f) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1) (Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
1.1))
testSin0rmapAccumRD01SN7 :: Assertion
testSin0rmapAccumRD01SN7 :: Assertion
testSin0rmapAccumRD01SN7 = do
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.4535961214255773)
((ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
-> DValue (ADVal Concrete (TKS ('[] @Nat) Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (let f :: forall f. ADReady f
=> f (TKS '[] Double) -> f (TKProduct (TKS '[] Double)
(TKProduct (TKS '[1, 3] Double)
(TKS '[1, 3] Double)))
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
f f (TKS ('[] @Nat) Double)
x0 = Proxy @Target f
-> SNat 1
-> FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
-> f (TKS ('[] @Nat) Double)
-> f (BuildTensorKind
1
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(BuildTensorKind
1
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR (forall {k} (t :: k). Proxy @k t
forall (t :: Target). Proxy @Target t
Proxy @f) (forall (n :: Nat). KnownNat n => SNat n
SNat @1)
(ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> FullShapeTK
(TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))
(FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> FullShapeTK
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar) (ShS ((':) @Nat 2 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @2 SNat 2 -> ShS ('[] @Nat) -> ShS ((':) @Nat 2 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)))
(let g :: forall g. ADReady g
=> g (TKS '[] Double)
-> g (TKProduct (TKProduct (TKS '[2] Double)
(TKS '[2] Double))
(TKProduct (TKS '[2] Double)
(TKS '[2] Double)))
-> g (TKProduct (TKS '[] Double)
(TKProduct (TKS '[3] Double)
(TKS '[3] Double)))
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g g (TKS ('[] @Nat) Double)
x g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a =
g (TKS ('[] @Nat) Double)
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a -> a
** forall (n :: Nat) (sh :: [Nat]) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKS ((':) @Nat n sh) r)
-> target (TKS (Init @Nat ((':) @Nat n sh)) r2)
smaxIndex
@2 @'[]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a))
(g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
6
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ forall (sh1 :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh1, KnownSTK x, BaseTensor target) =>
target (TKS2 sh1 x)
-> IxSOf target sh1 -> target (TKS2 ('[] @Nat) x)
sindex0 @'[2]
(g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a) [Item (IxS ((':) @Nat 2 ('[] @Nat)) (PrimalOf g (TKScalar Int64)))
PrimalOf g (TKScalar Int64)
1]
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
3))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum @2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 (g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
-> g (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> g (TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
forall (x :: TK) (z :: TK). g (TKProduct x z) -> g x
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target x
tproject1 g (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
a)
g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
sin g (TKS ('[] @Nat) Double)
x g (TKS ('[] @Nat) Double)
-> g (TKS ('[] @Nat) Double) -> g (TKS ('[] @Nat) Double)
forall a. Fractional a => a -> a -> a
/ Double -> g (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
6)))
in f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))))
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
(TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))))
g)
f (TKS ('[] @Nat) Double)
x0
(f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKProduct
(TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
(TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair
(f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0)
(f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0))
(f (TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
-> f (TKProduct
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
(TKS2 ((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0)
(f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Nat) x) -> target (TKS2 sh x)
sreplicate0N (f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2
((':) @Nat 1 ((':) @Nat 2 ('[] @Nat))) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0)))
in FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> ADVal
Concrete
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> ADVal
Concrete
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> ADVal Concrete (TKScalar Double)
forall (y :: TK).
FullShapeTK y
-> ADVal Concrete y
-> ADVal Concrete y
-> ADVal Concrete (TKScalar Double)
forall (target :: Target) (y :: TK).
BaseTensor target =>
FullShapeTK y -> target y -> target y -> target (TKScalar Double)
tdot0Target (FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> FullShapeTK
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1
-> ShS ((':) @Nat 3 ('[] @Nat))
-> ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1
-> ShS ((':) @Nat 3 ('[] @Nat))
-> ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar))) ((forall r. GoodScalar r => r)
-> FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> ADVal
Concrete
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
forall (y :: TK).
(forall r. GoodScalar r => r) -> FullShapeTK y -> ADVal Concrete y
forall (target :: Target) (y :: TK).
BaseTensor target =>
(forall r. GoodScalar r => r) -> FullShapeTK y -> target y
treplTarget r
forall r. GoodScalar r => r
1 (FullShapeTK (TKS ('[] @Nat) Double)
-> FullShapeTK
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
-> FullShapeTK
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
-> FullShapeTK
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))
forall (y1 :: TK) (z :: TK).
FullShapeTK y1 -> FullShapeTK z -> FullShapeTK (TKProduct y1 z)
FTKProduct (ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1
-> ShS ((':) @Nat 3 ('[] @Nat))
-> ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @1 SNat 1
-> ShS ((':) @Nat 3 ('[] @Nat))
-> ShS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat)))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)))) (ADVal
Concrete
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
-> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal
Concrete
(TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double))))
-> ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKProduct
(TKS ('[] @Nat) Double)
(TKProduct
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)
(TKS ((':) @Nat 1 ((':) @Nat 3 ('[] @Nat))) Double)))
f @(ADVal Concrete)) (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1))
rscanZip :: forall rn n rn2 n2 target.
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target)
=> (forall f. ADReady f
=> f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip :: forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn)
f FullShapeTK (TKR n2 rn2)
eftk target (TKR n rn)
acc0 target (TKR (1 + n2) rn2)
es =
let width :: Int
width = target (TKR (1 + n2) rn2) -> Int
forall (n :: Nat) (x :: TK).
KnownSTK x =>
target (TKR2 (1 + n) x) -> Int
forall (target :: Target) (n :: Nat) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 (1 + n) x) -> Int
rwidth target (TKR (1 + n2) rn2)
es
ftk :: FullShapeTK (TKR n rn)
ftk = SingletonTK (TKR n rn)
-> target (TKR n rn) -> FullShapeTK (TKR n rn)
forall (y :: TK). SingletonTK y -> target y -> FullShapeTK y
forall (target :: Target) (y :: TK).
BaseTensor target =>
SingletonTK y -> target y -> FullShapeTK y
tftk SingletonTK (TKR n rn)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK target (TKR n rn)
acc0
in Int
-> (forall (n :: Nat).
KnownNat n =>
SNat n -> target (TKR (1 + n) rn))
-> target (TKR (1 + n) rn)
forall r.
Int -> (forall (n :: Nat). KnownNat n => SNat n -> r) -> r
withSNat Int
width ((forall (n :: Nat).
KnownNat n =>
SNat n -> target (TKR (1 + n) rn))
-> target (TKR (1 + n) rn))
-> (forall (n :: Nat).
KnownNat n =>
SNat n -> target (TKR (1 + n) rn))
-> target (TKR (1 + n) rn)
forall a b. (a -> b) -> a -> b
$ \SNat n
snat ->
target (TKProduct (TKR n rn) (TKR (1 + n) rn))
-> (target (TKProduct (TKR n rn) (TKR (1 + n) rn))
-> target (TKR (1 + n) rn))
-> target (TKR (1 + n) rn)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet
(Proxy @Target target
-> SNat n
-> FullShapeTK (TKR n rn)
-> FullShapeTK (TKR n rn)
-> FullShapeTK (TKR n2 rn2)
-> (forall (f :: Target).
ADReady f =>
f (TKR n rn)
-> f (TKR n2 rn2) -> f (TKProduct (TKR n rn) (TKR n rn)))
-> target (TKR n rn)
-> target (BuildTensorKind n (TKR n2 rn2))
-> target (TKProduct (TKR n rn) (BuildTensorKind n (TKR n rn)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumL Proxy @Target target
forall {k} (t :: k). Proxy @k t
Proxy SNat n
snat FullShapeTK (TKR n rn)
ftk FullShapeTK (TKR n rn)
ftk FullShapeTK (TKR n2 rn2)
eftk
(let g :: forall f. ADReady f
=> f (TKR n rn) -> f (TKR n2 rn2)
-> f (TKProduct (TKR n rn) (TKR n rn))
g :: forall (f :: Target).
ADReady f =>
f (TKR n rn)
-> f (TKR n2 rn2) -> f (TKProduct (TKR n rn) (TKR n rn))
g f (TKR n rn)
acc f (TKR n2 rn2)
e = f (TKR n rn)
-> (f (TKR n rn) -> f (TKProduct (TKR n rn) (TKR n rn)))
-> f (TKProduct (TKR n rn) (TKR n rn))
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn)
forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn)
f f (TKR n rn)
acc f (TKR n2 rn2)
e) (\f (TKR n rn)
res -> f (TKR n rn) -> f (TKR n rn) -> f (TKProduct (TKR n rn) (TKR n rn))
forall (x :: TK) (z :: TK). f x -> f z -> f (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair f (TKR n rn)
res f (TKR n rn)
res)
in f (TKR n rn)
-> f (TKR n2 rn2) -> f (TKProduct (TKR n rn) (TKR n rn))
forall (f :: Target).
ADReady f =>
f (TKR n rn)
-> f (TKR n2 rn2) -> f (TKProduct (TKR n rn) (TKR n rn))
g)
target (TKR n rn)
acc0 target (BuildTensorKind n (TKR n2 rn2))
target (TKR (1 + n2) rn2)
es)
(\target (TKProduct (TKR n rn) (TKR (1 + n) rn))
res -> target (TKR (1 + n) rn)
-> target (TKR (1 + n) rn) -> target (TKR (1 + n) rn)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x)
-> target (TKR2 (1 + n) x) -> target (TKR2 (1 + n) x)
rappend (NonEmpty (target (TKR n rn)) -> target (TKR (1 + n) rn)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [target (TKR n rn)
Item (NonEmpty (target (TKR n rn)))
acc0]) (target (TKProduct (TKR n rn) (TKR (1 + n) rn))
-> target (TKR (1 + n) rn)
forall (x :: TK) (z :: TK). target (TKProduct x z) -> target z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2 target (TKProduct (TKR n rn) (TKR (1 + n) rn))
res))
testSin0ScanD51 :: Assertion
testSin0ScanD51 :: Assertion
testSin0ScanD51 = do
Rational
-> Concrete (TKR2 4 (TKScalar Double))
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 4 -> [Double] -> Concrete (TKR2 4 (TKScalar Double))
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] [Double
Item [Double]
319.68688158967257] :: Concrete (TKR 4 Double))
((forall (f :: Target).
ADReady f =>
f (TKR2 4 (TKScalar Double)) -> f (TKR 5 Double))
-> Concrete (TKR2 4 (TKScalar Double))
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))),
(Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
AstTensor AstMethodLet PrimalSpan (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)), Concrete (TKR 5 Double),
Concrete (TKR 5 Double), Concrete (TKR 5 Double),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double)),
Concrete (TKR2 4 (TKScalar Double))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR2 4 (TKScalar Double))
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 4 (TKScalar Double))
-> f (TKR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Double)
-> f (TKR2 4 (TKScalar Double)))
-> FullShapeTK (TKR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Double)
-> f (TKR2 4 (TKScalar Double))
-> f (TKR (1 + ((((((0 + 1) + 1) + 1) + 1) + 1) + 1)) Double)
-> f (TKR2 (1 + 4) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR2 4 (TKScalar Double))
x f (TKR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Double)
a -> f (TKR2 (1 + 4) (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)))
-> f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 5 Double) -> f (TKR 5 Double) -> f (TKR 5 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR 5 Double) -> f (TKR 5 Double)
forall a. Floating a => a -> a
sin (f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double) -> f (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 f (TKR2 4 (TKScalar Double))
x)
(f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double))
-> f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double)))
-> f (TKR2 (1 + 5) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum
(f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double)))
-> f (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> f (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double)))
-> f (TKR2 (2 + 5) (TKScalar Double))
-> f (TKR2 (2 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 6 Double) -> f (TKR2 (1 + 6) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7
(f (TKR 6 Double) -> f (TKR2 (1 + 6) (TKScalar Double)))
-> f (TKR 6 Double) -> f (TKR2 (1 + 6) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double)))
-> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double)))
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 4) (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)))
-> f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 4 (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 5) (TKScalar Double)) -> f (TKR 5 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum f (TKR2 (1 + 5) (TKScalar Double))
f (TKR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Double)
a))
(IShR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
8 Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
-> IShR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1)
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int
-> ShR ((((0 + 1) + 1) + 1) + 1) Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int
-> ShR (((0 + 1) + 1) + 1) Int -> ShR ((((0 + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR 4 -> f (TKR 0 Double) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR2 4 (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall a. Num a => a -> a -> a
* f (TKR2 4 (TKScalar Double))
a0)
(Int -> f (TKR 6 Double) -> f (TKR2 (1 + 6) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (Int -> f (TKR 5 Double) -> f (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
8 (Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR2 4 (TKScalar Double))
a0)))
)
(IShR 4 -> [Double] -> Concrete (TKR2 4 (TKScalar Double))
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1,Int
Item (IShR 4)
1] [Double
Item [Double]
1.1]))
testSin0ScanD8 :: Assertion
testSin0ScanD8 :: Assertion
testSin0ScanD8 = do
Rational
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
9.532987357352765] :: Concrete (TKR 3 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 3 Double) -> f (TKR 6 Double))
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (\f (TKR 3 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR (((0 + 1) + 1) + 1) Double)
-> f (TKR2 (1 + 4) (TKScalar Double)))
-> FullShapeTK (TKR (((0 + 1) + 1) + 1) Double)
-> f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR (1 + (((0 + 1) + 1) + 1)) Double)
-> f (TKR2 (1 + (1 + 4)) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR2 (1 + 4) (TKScalar Double))
x f (TKR (((0 + 1) + 1) + 1) Double)
a -> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double)))
-> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double)))
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 4 (TKScalar Double))
-> f (TKR2 4 (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 4) (TKScalar Double)) -> f (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double)))
-> f (TKR2 (2 + 3) (TKScalar Double))
-> f (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR2 (1 + 4) (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall a. Floating a => a -> a
sin f (TKR2 (1 + 4) (TKScalar Double))
x))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double)))
-> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 3 Double) -> f (TKR 3 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 3) (TKScalar Double)) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int
-> f (TKR (((0 + 1) + 1) + 1) Double)
-> f (TKR (1 + (((0 + 1) + 1) + 1)) Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR (((0 + 1) + 1) + 1) Double)
a))))
(ShR (((0 + 1) + 1) + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR (((0 + 1) + 1) + 1) Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(IShR 3 -> f (TKR 0 Double) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR 3 Double) -> f (TKR 3 Double) -> f (TKR 3 Double)
forall a. Num a => a -> a -> a
* f (TKR 3 Double)
a0)))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 3 Double)
a0))
(IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
1.1]))
testSin0ScanD8MapAccum :: Assertion
testSin0ScanD8MapAccum :: Assertion
testSin0ScanD8MapAccum = do
Rational
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
9.532987357352765] :: Concrete (TKR 3 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 3 Double) -> f (TKR 6 Double))
-> Concrete (TKR 3 Double)
-> ((Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)),
(Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
AstTensor AstMethodLet PrimalSpan (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 6 Double),
Concrete (TKR 6 Double), Concrete (TKR 6 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double), Concrete (TKR 3 Double),
Concrete (TKR 3 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev'
(\f (TKR 3 Double)
a0 -> f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR 6 Double))
-> f (TKR 6 Double)
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2
(f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR 6 Double))
-> f (TKR 6 Double))
-> f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR 6 Double))
-> f (TKR 6 Double)
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 4
-> FullShapeTK
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR (((0 + 1) + 1) + 1) Double)
-> (forall (f :: Target).
ADReady f =>
f (TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
-> f (TKR (((0 + 1) + 1) + 1) Double)
-> f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))))
-> f (TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
-> f (BuildTensorKind 4 (TKR (((0 + 1) + 1) + 1) Double))
-> f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(BuildTensorKind
4 (TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR Proxy @Target f
forall {k} (t :: k). Proxy @k t
Proxy (forall (n :: Nat). KnownNat n => SNat n
SNat @4)
(ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR ((((0 + 1) + 1) + 1) + 1) Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int
-> ShR (((0 + 1) + 1) + 1) Int -> ShR ((((0 + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int
-> ShR ((((0 + 1) + 1) + 1) + 1) Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int
-> ShR (((0 + 1) + 1) + 1) Int -> ShR ((((0 + 1) + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(ShR (((0 + 1) + 1) + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR (((0 + 1) + 1) + 1) Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKR 5 Double) -> g (TKR 3 Double)
-> g (TKProduct (TKR 5 Double) (TKR 5 Double))
g :: forall (g :: Target).
ADReady g =>
g (TKR 5 Double)
-> g (TKR 3 Double) -> g (TKProduct (TKR 5 Double) (TKR 5 Double))
g g (TKR 5 Double)
x g (TKR 3 Double)
a =
g (TKR 5 Double)
-> g (TKR 5 Double) -> g (TKProduct (TKR 5 Double) (TKR 5 Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double)))
-> g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int
-> g (TKR2 4 (TKScalar Double))
-> g (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(g (TKR2 4 (TKScalar Double))
-> g (TKR2 (1 + 4) (TKScalar Double)))
-> g (TKR2 4 (TKScalar Double))
-> g (TKR2 (1 + 4) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR2 4 (TKScalar Double))
-> g (TKR2 4 (TKScalar Double)) -> g (TKR2 4 (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H (g (TKR2 (1 + 4) (TKScalar Double)) -> g (TKR2 4 (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double)))
-> g (TKR2 (2 + 3) (TKScalar Double))
-> g (TKR2 (2 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR 5 Double) -> g (TKR 5 Double)
forall a. Floating a => a -> a
sin g (TKR 5 Double)
x))
(Int -> g (TKR 3 Double) -> g (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(g (TKR 3 Double) -> g (TKR2 (1 + 3) (TKScalar Double)))
-> g (TKR 3 Double) -> g (TKR2 (1 + 3) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR 3 Double) -> g (TKR 3 Double)
forall a. Floating a => a -> a
sin (g (TKR2 (1 + 3) (TKScalar Double)) -> g (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (g (TKR2 (1 + 3) (TKScalar Double)) -> g (TKR 3 Double))
-> g (TKR2 (1 + 3) (TKScalar Double)) -> g (TKR 3 Double)
forall a b. (a -> b) -> a -> b
$ Int -> g (TKR 3 Double) -> g (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 g (TKR 3 Double)
a)))
g (TKR 5 Double)
x
in f (TKR 5 Double)
-> f (TKR 3 Double) -> f (TKProduct (TKR 5 Double) (TKR 5 Double))
f (TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
-> f (TKR (((0 + 1) + 1) + 1) Double)
-> f (TKProduct
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double))
(TKR2 (((((0 + 1) + 1) + 1) + 1) + 1) (TKScalar Double)))
forall (g :: Target).
ADReady g =>
g (TKR 5 Double)
-> g (TKR 3 Double) -> g (TKProduct (TKR 5 Double) (TKR 5 Double))
g)
(Int
-> f (TKR2 4 (TKScalar Double))
-> f (TKR2 (1 + 4) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(IShR 3 -> f (TKR 0 Double) -> f (TKR 3 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2) f (TKR 3 Double) -> f (TKR 3 Double) -> f (TKR 3 Double)
forall a. Num a => a -> a -> a
* f (TKR 3 Double)
a0)))
(Int -> f (TKR 3 Double) -> f (TKR2 (1 + 3) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 f (TKR 3 Double)
a0))
(IShR 3 -> [Double] -> Concrete (TKR 3 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 3)
1,Int
Item (IShR 3)
1,Int
Item (IShR 3)
1] [Double
Item [Double]
1.1]))
testSin0ScanD8grad :: Assertion
testSin0ScanD8grad :: Assertion
testSin0ScanD8grad = do
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 0 Double -> Concrete (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> Ranked 0 Double -> Concrete (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR 0 -> [Double] -> Ranked 0 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [] [Double
Item [Double]
9.53298735735276])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @Concrete @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a))))
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0ScanD8rev4 :: Assertion
testSin0ScanD8rev4 :: Assertion
testSin0ScanD8rev4 = do
let h :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
h :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @f @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a))))
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(IShR 0 -> [Double] -> Concrete (TKR 0 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [] [Double
Item [Double]
285.95794829475744])
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR 0 Double),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double))),
Concrete (TKR2 0 (TKScalar (ADTensorScalar Double)))))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
h (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0ScanD1RevPP :: Assertion
testSin0ScanD1RevPP :: Assertion
testSin0ScanD1RevPP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
2] Double
42)) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 + tproject1 (tmapAccumRDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 0.0) (tpair (sconcrete (sreplicate [2] 1.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sreplicate [2] 42.0))))) (sconcrete (sreplicate [2] 42.0))))))"
testSin0ScanDFwdPP :: Assertion
testSin0ScanDFwdPP :: Assertion
testSin0ScanDFwdPP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 1 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
2] Double
42)) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.0) (tpair (sconcrete (sreplicate [2] 0.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sreplicate [2] 42.0))))) (sconcrete (sreplicate [2] 42.0))))))))"
testSin0ScanD1Rev2PP :: Assertion
testSin0ScanD1Rev2PP :: Assertion
testSin0ScanD1Rev2PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear @Double @1 [Int
Item (IShR 1)
2] [Double
Item [Double]
5, Double
Item [Double]
7]))) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sscalar 1.0 + tproject1 (tmapAccumRDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 0.0) (tpair (sconcrete (sreplicate [2] 1.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.0,7.0]))))) (sconcrete (sfromListLinear [2] [5.0,7.0]))))))"
testSin0ScanDFwd2PP :: Assertion
testSin0ScanDFwd2PP :: Assertion
testSin0ScanDFwd2PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (Ranked 1 Double -> f (TKR 1 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear @Double @1 [Int
Item (IShR 1)
2] [Double
Item [Double]
5, Double
Item [Double]
7]))) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.0) (tpair (sconcrete (sreplicate [2] 0.0)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.0,7.0]))))) (sconcrete (sfromListLinear [2] [5.0,7.0]))))))))"
testSin0ScanDFwd3PP :: Assertion
testSin0ScanDFwd3PP :: Assertion
testSin0ScanDFwd3PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 :: AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1 = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
a)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (NonEmpty (f (TKR 0 Double)) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5, f (TKR 0 Double)
x0 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7]))
(Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
AstTensor AstMethodLet PrimalSpan (TKR 1 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty (AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 1 Double)
a1)
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (sappend (sconcrete (sfromListLinear [1] [1.0])) (sfromR (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.0) (tpair (sconcrete (sfromListLinear [2] [5.0,7.0])) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @2) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001]))))) (sconcrete (sfromListLinear [2] [5.5,7.700000000000001]))))))))"
testSin0ScanD1jvp :: Assertion
testSin0ScanD1jvp :: Assertion
testSin0ScanD1jvp = do
Rational
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Concrete (TKR 1 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double)))
-> Ranked 1 (ADTensorScalar Double)
-> Concrete (TKR 1 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 1
-> [ADTensorScalar Double] -> Ranked 1 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 1)
2] [Item [ADTensorScalar Double]
ADTensorScalar Double
1.0,Item [ADTensorScalar Double]
ADTensorScalar Double
0.4535961214255773])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @1
(\f (TKR 0 Double)
x0 -> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
x f (TKR 0 Double)
_a -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin f (TKR 0 Double)
x)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
f (TKR 0 Double)
x0 (forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl @1 @Double [Int
Item (IShR 1)
1] Double
42))
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0ScanD8jvp :: Assertion
testSin0ScanD8jvp :: Assertion
testSin0ScanD8jvp = do
Rational
-> Concrete (TKR 3 (ADTensorScalar Double))
-> Concrete (TKR 3 (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double))
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double)))
-> Ranked 3 (ADTensorScalar Double)
-> Concrete (TKR 3 (ADTensorScalar Double))
forall a b. (a -> b) -> a -> b
$ IShR 3
-> [ADTensorScalar Double] -> Ranked 3 (ADTensorScalar Double)
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 3)
4,Int
Item (IShR 3)
2,Int
Item (IShR 3)
5] [Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,Item [ADTensorScalar Double]
ADTensorScalar Double
2.0,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.5864059429583657,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.24026418024701368,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445,-ADTensorScalar Double
0.2200311410593445])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a))))
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0ScanD8fwdMapAccum :: Assertion
testSin0ScanD8fwdMapAccum :: Assertion
testSin0ScanD8fwdMapAccum = do
Rational
-> Concrete (TKR 3 Double) -> Concrete (TKR 3 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 3 Double -> Concrete (TKR 3 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 3 Double -> Concrete (TKR 3 Double))
-> Ranked 3 Double -> Concrete (TKR 3 Double)
forall a b. (a -> b) -> a -> b
$ IShR 3 -> [Double] -> Ranked 3 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 3)
4,Int
Item (IShR 3)
2,Int
Item (IShR 3)
5] [Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,Double
Item [Double]
2.0,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.5864059429583657,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.24026418024701368,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445,-Double
0.2200311410593445])
(forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @Concrete @Double @0 @3 @Double
(\f (TKR 0 Double)
a0 -> f (TKR2 (1 + 2) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 (1 + n) x)
rreverse (f (TKR2 (1 + 2) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double)))
-> f (TKR2 (1 + 2) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double))
(TKR2 (1 + 2) (TKScalar Double)))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall (x :: TK) (z :: TK). f (TKProduct x z) -> f z
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target (TKProduct x z) -> target z
tproject2
(f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double))
(TKR2 (1 + 2) (TKScalar Double)))
-> f (TKR2 (1 + 2) (TKScalar Double)))
-> f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double))
(TKR2 (1 + 2) (TKScalar Double)))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Proxy @Target f
-> SNat 4
-> FullShapeTK (TKR2 ((0 + 1) + 1) (TKScalar Double))
-> FullShapeTK (TKR 2 Double)
-> FullShapeTK (TKR 0 Double)
-> (forall (f :: Target).
ADReady f =>
f (TKR2 ((0 + 1) + 1) (TKScalar Double))
-> f (TKR 0 Double)
-> f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double)) (TKR 2 Double)))
-> f (TKR2 ((0 + 1) + 1) (TKScalar Double))
-> f (BuildTensorKind 4 (TKR 0 Double))
-> f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double))
(BuildTensorKind 4 (TKR 2 Double)))
forall (accy :: TK) (by :: TK) (ey :: TK) (k :: Nat)
(target :: Target).
BaseTensor target =>
Proxy @Target target
-> SNat k
-> FullShapeTK accy
-> FullShapeTK by
-> FullShapeTK ey
-> (forall (f :: Target).
ADReady f =>
f accy -> f ey -> f (TKProduct accy by))
-> target accy
-> target (BuildTensorKind k ey)
-> target (TKProduct accy (BuildTensorKind k by))
tmapAccumR Proxy @Target f
forall {k} (t :: k). Proxy @k t
Proxy (forall (n :: Nat). KnownNat n => SNat n
SNat @4)
(ShR ((0 + 1) + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 ((0 + 1) + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int -> ShR (0 + 1) Int -> ShR ((0 + 1) + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR 2
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 2 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
2 Int -> IShR 1 -> IShR 2
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: Int
5 Int -> IShR 0 -> IShR 1
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(let g :: forall g. ADReady g
=> g (TKR 2 Double) -> g (TKR 0 Double)
-> g (TKProduct (TKR 2 Double) (TKR 2 Double))
g :: forall (g :: Target).
ADReady g =>
g (TKR 2 Double)
-> g (TKR 0 Double) -> g (TKProduct (TKR 2 Double) (TKR 2 Double))
g g (TKR 2 Double)
x g (TKR 0 Double)
a =
g (TKR 2 Double)
-> g (TKR 2 Double) -> g (TKProduct (TKR 2 Double) (TKR 2 Double))
forall (x :: TK) (z :: TK). g x -> g z -> g (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double)))
-> g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> g (TKR 1 Double) -> g (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(g (TKR 1 Double) -> g (TKR2 (1 + 1) (TKScalar Double)))
-> g (TKR 1 Double) -> g (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR 1 Double) -> g (TKR 1 Double) -> g (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (g (TKR2 (1 + 1) (TKScalar Double)) -> g (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double)))
-> g (TKR2 (2 + 0) (TKScalar Double))
-> g (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR 2 Double) -> g (TKR 2 Double)
forall a. Floating a => a -> a
sin g (TKR 2 Double)
x))
(Int -> g (TKR 0 Double) -> g (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(g (TKR 0 Double) -> g (TKR2 (1 + 0) (TKScalar Double)))
-> g (TKR 0 Double) -> g (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ g (TKR 0 Double) -> g (TKR 0 Double)
forall a. Floating a => a -> a
sin (g (TKR2 (1 + 0) (TKScalar Double)) -> g (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (g (TKR2 (1 + 0) (TKScalar Double)) -> g (TKR 0 Double))
-> g (TKR2 (1 + 0) (TKScalar Double)) -> g (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ Int -> g (TKR 0 Double) -> g (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 g (TKR 0 Double)
a)))
g (TKR 2 Double)
x
in f (TKR 2 Double)
-> f (TKR 0 Double) -> f (TKProduct (TKR 2 Double) (TKR 2 Double))
f (TKR2 ((0 + 1) + 1) (TKScalar Double))
-> f (TKR 0 Double)
-> f (TKProduct
(TKR2 ((0 + 1) + 1) (TKScalar Double)) (TKR 2 Double))
forall (g :: Target).
ADReady g =>
g (TKR 2 Double)
-> g (TKR 0 Double) -> g (TKProduct (TKR 2 Double) (TKR 2 Double))
g)
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 f (TKR 0 Double)
a0)) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0ScanD8fwd2 :: Assertion
testSin0ScanD8fwd2 :: Assertion
testSin0ScanD8fwd2 = do
let h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h :: ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h = forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 @(ADVal Concrete) @Double @0 @3
(\f (TKR 0 Double)
a0 -> (forall (f :: Target).
ADReady f =>
f (TKR 2 Double) -> f (TKR 0 Double) -> f (TKR 2 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 2 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 2) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 2 Double)
x f (TKR 0 Double)
a -> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5
(f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double)))
-> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H (f (TKR2 (1 + 1) (TKScalar Double)) -> f (TKR 1 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double)))
-> f (TKR2 (2 + 0) (TKScalar Double))
-> f (TKR2 (2 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 2 Double) -> f (TKR 2 Double)
forall a. Floating a => a -> a
sin f (TKR 2 Double)
x))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2
(f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
a))))
(IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
(Int -> f (TKR 1 Double) -> f (TKR2 (1 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0)))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0))
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Ranked 0 Double -> Concrete (TKR 0 Double)
forall r (target :: Target) (n :: Nat).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> Ranked 0 Double -> Concrete (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ IShR 0 -> [Double] -> Ranked 0 Double
forall a (n :: Nat). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [] [Double
Item [Double]
285.95794829475744])
((ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 0 Double))
-> DValue (ADVal Concrete (TKR 0 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 3 Double) -> ADVal Concrete (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR 3 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double))
-> ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKR 3 Double)
h) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS1 :: Assertion
testSin0FoldNestedS1 :: Assertion
testSin0FoldNestedS1 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.0504979297616553e-43 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.7 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a2)
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS1PP :: Assertion
testSin0FoldNestedS1PP :: Assertion
testSin0FoldNestedS1PP = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
z = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 11 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 22 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 -> f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
+ f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Floating a => a -> a
tan f (TKS ('[] @Nat) Double)
a2)
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @22 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
z (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @11 f (TKS ('[] @Nat) Double)
z)
g :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
g :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
g = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKScalar Double))
-> FullShapeTK (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKS ('[] @Nat) Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKS ('[] @Nat) r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (f (TKS ('[] @Nat) Double) -> f (TKScalar Double))
-> (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f) (ShS ('[] @Nat)
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"let v6 = tmapAccumRDer (SNat @11) <lambda> <lambda> <lambda> (sscalar 1.0) (tpair (sconcrete (sreplicate [11] Z1)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @11) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sreplicate [11] 1.1))))) (sconcrete (sreplicate [11] 1.1)))) in ssum @11 (tproject2 v6) + tproject1 v6"
testSin0FoldNestedR1PP :: Assertion
testSin0FoldNestedR1PP :: Assertion
testSin0FoldNestedR1PP = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 -> f (TKR 0 Double)
x2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a2)
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
22 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
11 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstPretty
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (let v6 = tmapAccumRDer (SNat @11) <lambda> <lambda> <lambda> (tconvert (ConvCmp (ConvCmp (ConvXR STKScalar) (ConvCmp (ConvXX' (FTKX [] FTKScalar)) ConvSX)) (ConvCmp ConvXS (Conv0X STKScalar))) (STKScalar) 1.0) (tpair (sconcrete (sreplicate [11] Z1)) (tpair (tproject1 (tproject2 (tmapAccumLDer (SNat @11) <lambda> <lambda> <lambda> (sscalar 1.1) (sconcrete (sreplicate [11] 1.1))))) (sconcrete (sreplicate [11] 1.1)))) in ssum @11 (sfromR (tproject2 v6)) + sfromR (tproject1 v6))"
testSin0FoldNestedR0LengthPPs :: Assertion
testSin0FoldNestedR0LengthPPs :: Assertion
testSin0FoldNestedR0LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a)
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
4454
testSin0FoldNestedR1LengthPPs :: Assertion
testSin0FoldNestedR1LengthPPs :: Assertion
testSin0FoldNestedR1LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 -> f (TKR 0 Double)
x2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a2)
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
42039
testSin0FoldNestedR2LengthPPs :: Assertion
testSin0FoldNestedR2LengthPPs :: Assertion
testSin0FoldNestedR2LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a3)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
530520
testSin0FoldNestedR3LengthPPs :: Assertion
testSin0FoldNestedR3LengthPPs :: Assertion
testSin0FoldNestedR3LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a4)
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
8035414
_testSin0FoldNestedR4LengthPPs :: Assertion
_testSin0FoldNestedR4LengthPPs :: Assertion
_testSin0FoldNestedR4LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x5 f (TKR 0 Double)
a5 -> f (TKR 0 Double)
x5 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a5)
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
0
_testSin0FoldNestedR5LengthPPs :: Assertion
_testSin0FoldNestedR5LengthPPs :: Assertion
_testSin0FoldNestedR5LengthPPs = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x5 f (TKR 0 Double)
a5 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x6 f (TKR 0 Double)
a6 -> f (TKR 0 Double)
x6 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a6)
f (TKR 0 Double)
a5 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x5))
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
0
testSin0FoldNestedR2LengthPPsDummy7 :: Assertion
testSin0FoldNestedR2LengthPPsDummy7 :: Assertion
testSin0FoldNestedR2LengthPPsDummy7 = do
Assertion
resetVarCounter
let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x3 f (TKR 0 Double)
_a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
g :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
g :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKScalar Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract
(AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double))
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
g @(AstTensor AstMethodLet PrimalSpan) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
232921
testSin0FoldNestedR2Dummy7 :: Assertion
testSin0FoldNestedR2Dummy7 :: Assertion
testSin0FoldNestedR2Dummy7 = do
Assertion
resetVarCounter
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev'
(let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x3 f (TKR 0 Double)
_a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.0001))
testSin0FoldNestedR2Tan :: Assertion
testSin0FoldNestedR2Tan :: Assertion
testSin0FoldNestedR2Tan = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
25.000016360009603 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev'
(let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
z = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
tan f (TKR 0 Double)
a3)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
z (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
z)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.0001))
testSin0FoldNestedS1FwdFwd0 :: Assertion
testSin0FoldNestedS1FwdFwd0 :: Assertion
testSin0FoldNestedS1FwdFwd0 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.0504979297616553e-43 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.7 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a2)
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownShS sh) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh2 r3))
sfwd1 f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS1FwdFwd :: Assertion
testSin0FoldNestedS1FwdFwd :: Assertion
testSin0FoldNestedS1FwdFwd = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.0504979297616553e-43 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownShS sh) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh2 r3))
sfwd1 ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownShS sh) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh2 r3))
sfwd1 (\f (TKS ('[] @Nat) Double)
b2 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.7 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
b2)) f (TKS ('[] @Nat) Double)
a2)
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownShS sh) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh2 r3))
sfwd1 f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS1RevRev :: Assertion
testSin0FoldNestedS1RevRev :: Assertion
testSin0FoldNestedS1RevRev = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.0504979297616553e-43 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 7 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 (\f (TKS ('[] @Nat) Double)
b2 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.7 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
b2)) f (TKS ('[] @Nat) Double)
a2)
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @7 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a0)
in (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall a b. (a -> b) -> a -> b
$ f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (ADTensorKind (TKS ('[] @Nat) Double))
forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS2 :: Assertion
testSin0FoldNestedS2 :: Assertion
testSin0FoldNestedS2 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3.175389686661287e-207 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.7 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a3)
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @4 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS3 :: Assertion
testSin0FoldNestedS3 :: Assertion
testSin0FoldNestedS3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7.320500000000004e-4 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
a4 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a4)
f (TKS ('[] @Nat) Double)
a3 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS4 :: Assertion
testSin0FoldNestedS4 :: Assertion
testSin0FoldNestedS4 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.2400927000000009e-5 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x5 f (TKS ('[] @Nat) Double)
a5 -> Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x5 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a5)
f (TKS ('[] @Nat) Double)
a4 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
x4))
f (TKS ('[] @Nat) Double)
a3 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS5 :: Assertion
testSin0FoldNestedS5 :: Assertion
testSin0FoldNestedS5 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.22000000000000003 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x5 f (TKS ('[] @Nat) Double)
a5 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
a6 -> Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a6)
f (TKS ('[] @Nat) Double)
a5 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x5))
f (TKS ('[] @Nat) Double)
a4 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x4))
f (TKS ('[] @Nat) Double)
a3 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
in f (TKS ('[] @Nat) Double) -> f (TKR 0 Double)
f (TKS ('[] @Nat) Double)
-> f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS ('[] @Nat) Double) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedS5grad :: Assertion
testSin0FoldNestedS5grad :: Assertion
testSin0FoldNestedS5grad = do
let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x5 f (TKS ('[] @Nat) Double)
a5 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
a6 -> Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a6)
f (TKS ('[] @Nat) Double)
a5 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x5))
f (TKS ('[] @Nat) Double)
a4 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x4))
f (TKS ('[] @Nat) Double)
a3 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
Rational
-> Concrete (TKS ('[] @Nat) Double)
-> Concrete (TKS ('[] @Nat) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.22000000000000003)
(forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, KnownShS sh, GoodScalar r3,
KnownShS sh2) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh r))
srev1 @Concrete @Double @'[] @'[] f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1))
testSin0FoldNestedS5jvp :: Assertion
testSin0FoldNestedS5jvp :: Assertion
testSin0FoldNestedS5jvp = do
let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x f (TKS ('[] @Nat) Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x4 f (TKS ('[] @Nat) Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x5 f (TKS ('[] @Nat) Double)
a5 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
a6 -> Double -> f (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0.1 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
x6 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a6)
f (TKS ('[] @Nat) Double)
a5 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x5))
f (TKS ('[] @Nat) Double)
a4 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x4))
f (TKS ('[] @Nat) Double)
a3 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x2))
f (TKS ('[] @Nat) Double)
a (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
x))
f (TKS ('[] @Nat) Double)
a0 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a0)
Rational
-> Concrete (TKS ('[] @Nat) (ADTensorScalar Double))
-> Concrete (TKS ('[] @Nat) (ADTensorScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(ADTensorScalar Double
-> Concrete (TKS ('[] @Nat) (ADTensorScalar Double))
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl ADTensorScalar Double
0.22000000000000003)
(forall (g :: Target) r (sh :: [Nat]) (sh2 :: [Nat]) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownShS sh) =>
(forall (f :: Target). ADReady f => f (TKS sh r) -> f (TKS sh2 r3))
-> g (TKS sh r) -> g (ADTensorKind (TKS sh2 r3))
sfwd1 @Concrete @Double @'[] @'[] f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
f (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1))
testSin0FoldNestedSi :: Assertion
testSin0FoldNestedSi :: Assertion
testSin0FoldNestedSi = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.20775612781643243) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKS '[] Double) -> f (TKS '[3] Double)
f :: forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f f (TKS ('[] @Nat) Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x f (TKS ('[] @Nat) Double)
a -> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a. RealFloatH a => a -> a -> a
atan2H
((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (1 + 2) ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
(+) (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ((':) @Nat n sh) x) -> target (TKS2 sh x)
ssum f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x)
((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (1 + 1) ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
(*) (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2)
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a)))
((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 2 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (1 + 2) ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan (\f (TKS ('[] @Nat) Double)
x1 f (TKS ('[] @Nat) Double)
a1 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x2 f (TKS ('[] @Nat) Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 sh xn)
sfold (\f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
a3 ->
Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0.001 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* (f (TKS ('[] @Nat) Double)
x3 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a3 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
- f (TKS ('[] @Nat) Double)
x3))
f (TKS ('[] @Nat) Double)
a2 ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (1 + 3) ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
(+) f (TKS ('[] @Nat) Double)
x2
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 f (TKS ('[] @Nat) Double)
a2)))
f (TKS ('[] @Nat) Double)
x1 (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @1 f (TKS ('[] @Nat) Double)
a1))
f (TKS ('[] @Nat) Double)
a ((forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat (1 + 1) ('[] @Nat)) (TKScalar Double))
forall (k :: Nat) (sh :: [Nat]) (shm :: [Nat]) (xn :: TK)
(xm :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownShS shm, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKS2 sh xn) -> f (TKS2 shm xm) -> f (TKS2 sh xn))
-> target (TKS2 sh xn)
-> target (TKS2 ((':) @Nat k shm) xm)
-> target (TKS2 ((':) @Nat (1 + k) sh) xn)
sscan (-) (Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
0)
(SNat 0
-> SNat 1
-> SNat 2
-> f (TKS2 ((':) @Nat ((0 + 1) + 2) ('[] @Nat)) (TKScalar Double))
-> f (TKS2 ((':) @Nat 1 ('[] @Nat)) (TKScalar Double))
forall (i :: Nat) (n :: Nat) (k :: Nat) (sh :: [Nat]) (x :: TK)
(target :: Target).
(KnownSTK x, BaseTensor target) =>
SNat i
-> SNat n
-> SNat k
-> target (TKS2 ((':) @Nat ((i + n) + k) sh) x)
-> target (TKS2 ((':) @Nat n sh) x)
sslice (forall (n :: Nat). KnownNat n => SNat n
SNat @0) (forall (n :: Nat). KnownNat n => SNat n
SNat @1) SNat 2
forall (n :: Nat). KnownNat n => SNat n
SNat f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f (TKS2 ((':) @Nat ((0 + 1) + 2) ('[] @Nat)) (TKScalar Double))
x))))
(forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 (f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Double
2 f (TKS ('[] @Nat) Double)
-> f (TKS ('[] @Nat) Double) -> f (TKS ('[] @Nat) Double)
forall a. Num a => a -> a -> a
* f (TKS ('[] @Nat) Double)
a0) (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @2 f (TKS ('[] @Nat) Double)
a0)
in f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKR 1 Double)
f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKR2 (Rank @Nat ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKR 1 Double))
-> (f (TKR 0 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> f (TKR 0 Double)
-> f (TKR 1 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f (f (TKS ('[] @Nat) Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> (f (TKR 0 Double) -> f (TKS ('[] @Nat) Double))
-> f (TKR 0 Double)
-> f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKS ('[] @Nat) Double)
f (TKR2 (Rank @Nat ('[] @Nat)) (TKScalar Double))
-> f (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Nat sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR1 :: Assertion
testSin0FoldNestedR1 :: Assertion
testSin0FoldNestedR1 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.0504979297616553e-43 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.7 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a2)
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
7 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR1RevFwd :: Assertion
testSin0FoldNestedR1RevFwd :: Assertion
testSin0FoldNestedR1RevFwd = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3.175389686661287e-207 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
f (TKR 0 Double)
x2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (\f (TKR 0 Double)
b2 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.7 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
b2)) f (TKR 0 Double)
a2)
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall a b. (a -> b) -> a -> b
$ (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR2 :: Assertion
testSin0FoldNestedR2 :: Assertion
testSin0FoldNestedR2 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3.175389686661287e-207 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.7 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a3)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR2RevFwd :: Assertion
testSin0FoldNestedR2RevFwd :: Assertion
testSin0FoldNestedR2RevFwd = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3.175389686661287e-207 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 (\f (TKR 0 Double)
b3 ->
Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.7 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
b3))) f (TKR 0 Double)
a3)
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall a b. (a -> b) -> a -> b
$ (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double)))
-> (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (ADTensorKind (TKR 0 Double))
forall a b. (a -> b) -> a -> b
$ (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double) -> f (ADTensorKind (TKR 0 Double))
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, GoodScalar (ADTensorScalar r),
KnownNat n) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR m r3))
rfwd1 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR3 :: Assertion
testSin0FoldNestedR3 :: Assertion
testSin0FoldNestedR3 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7.320500000000004e-4 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a4)
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR4 :: Assertion
testSin0FoldNestedR4 :: Assertion
testSin0FoldNestedR4 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.2400927000000009e-5 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x5 f (TKR 0 Double)
a5 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x5 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a5)
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR41 :: Assertion
testSin0FoldNestedR41 :: Assertion
testSin0FoldNestedR41 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.22000000000000003 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x5 f (TKR 0 Double)
a5 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x5 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a5)
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR40 :: Assertion
testSin0FoldNestedR40 :: Assertion
testSin0FoldNestedR40 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x5 f (TKR 0 Double)
a5 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x5 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a5)
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR400 :: Assertion
testSin0FoldNestedR400 :: Assertion
testSin0FoldNestedR400 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
_x5 f (TKR 0 Double)
_a5 -> f (TKR 0 Double)
0)
f (TKR 0 Double)
a4 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x4))
f (TKR 0 Double)
a3 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x2))
f (TKR 0 Double)
a (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
0 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedRi :: Assertion
testSin0FoldNestedRi :: Assertion
testSin0FoldNestedRi = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-Double
0.20775612781643243) :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
AstTensor AstMethodLet PrimalSpan (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 1 Double),
Concrete (TKR 1 Double), Concrete (TKR 1 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 1 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 1 Double) -> f (TKR 0 Double) -> f (TKR 1 Double))
-> f (TKR 1 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 1 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 1 Double)
x f (TKR 0 Double)
a -> f (TKR 1 Double) -> f (TKR 1 Double) -> f (TKR 1 Double)
forall a. RealFloatH a => a -> a -> a
atan2H
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
(+) (f (TKR2 (1 + 0) (TKScalar Double)) -> f (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum f (TKR 1 Double)
f (TKR2 (1 + 0) (TKScalar Double))
x)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
(*) (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2)
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
a)))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x1 f (TKR 0 Double)
a1 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 ->
Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.001 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* (f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
- f (TKR 0 Double)
x3))
f (TKR 0 Double)
a2 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
(+) f (TKR 0 Double)
x2
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
a2)))
f (TKR 0 Double)
x1 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
1 f (TKR 0 Double)
a1))
f (TKR 0 Double)
a ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (-) (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0) (Int
-> Int
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
Int -> Int -> target (TKR2 (1 + n) x) -> target (TKR2 (1 + n) x)
rslice Int
0 Int
1 f (TKR 1 Double)
f (TKR2 (1 + 0) (TKScalar Double))
x))))
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double)))
-> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a0) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 1 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 1 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR22 :: Assertion
testSin0FoldNestedR22 :: Assertion
testSin0FoldNestedR22 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
2.877421010384167e-5 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x2 f (TKR 0 Double)
a2 ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.44 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a3)
f (TKR 0 Double)
a2 ((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
a4) f (TKR 0 Double)
x2
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a2)))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a4) f (TKR 0 Double)
a
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x)) (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 f (TKR 0 Double)
x))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR21 :: Assertion
testSin0FoldNestedR21 :: Assertion
testSin0FoldNestedR21 = do
Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Nat) (m :: Nat) v r w a.
(KnownNat n, KnownNat m,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type),
AssertEqualUpToEpsilon a, AssertEqualUpToEpsilon v,
AssertEqualUpToEpsilon (ADTensorScalar r), GoodScalar r,
GoodScalar (ADTensorScalar r), HasCallStack) =>
Rational
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
-> Assertion
assertEqualUpToEpsilon' Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
7.667553331540788e-3 :: Concrete (TKR 0 Double))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double))
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)),
(Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
AstTensor AstMethodLet PrimalSpan (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double), Concrete (TKR 0 Double),
Concrete (TKR 0 Double)))
forall r (m :: Nat) (n :: Nat) v a w.
(KnownNat m, KnownNat n, GoodScalar r,
(v :: Type) ~ (Concrete (TKR m r) :: Type),
(w :: Type) ~ (Concrete (ADTensorKind (TKR m r)) :: Type),
(a :: Type) ~ (Concrete (ADTensorKind (TKR n r)) :: Type)) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r))
-> Concrete (TKR n r)
-> ((v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a),
(v, v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a,
AstTensor AstMethodLet PrimalSpan (TKR m r),
AstTensor AstMethodLet PrimalSpan (TKR m r), v, v, v, v, v, v, v,
v, v, v, v, v, v, v, a, a, a, a, a, a, a, a, a, a, a, a, a, a,
Concrete (TKR n r), w, w, w, a, a, a, a, a))
rev' (let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double)
-> (f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
a) ((f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ \f (TKR 0 Double)
xpa ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a3)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a4) f (TKR 0 Double)
xpa
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
a4) f (TKR 0 Double)
xpa
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
xpa)))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0FoldNestedR21PP :: Assertion
testSin0FoldNestedR21PP :: Assertion
testSin0FoldNestedR21PP = do
Assertion
resetVarCounter
let a1 :: AstTensor AstMethodLet PrimalSpan (ADTensorKind (TKR 0 Double))
a1 =
forall (g :: Target) r (n :: Nat) (m :: Nat) r3.
(ADReady g, GoodScalar r, KnownNat n, GoodScalar r3, KnownNat m) =>
(forall (f :: Target). ADReady f => f (TKR n r) -> f (TKR m r3))
-> g (TKR n r) -> g (ADTensorKind (TKR n r))
rrev1 @(AstTensor AstMethodLet PrimalSpan) @Double @0 @0
(let f :: forall f. ADReady f => f (TKR 0 Double) -> f (TKR 0 Double)
f :: forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f f (TKR 0 Double)
a0 = (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x f (TKR 0 Double)
a -> f (TKR 0 Double)
-> (f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (f (TKR 0 Double)
x f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
a) ((f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double)) -> f (TKR 0 Double)
forall a b. (a -> b) -> a -> b
$ \f (TKR 0 Double)
xpa ->
(forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x3 f (TKR 0 Double)
a3 -> Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
x3 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a3)
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR 0 Double)
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 n xn)
rfold (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
a4) f (TKR 0 Double)
xpa
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
x))
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (m :: Nat) (xn :: TK) (xm :: TK)
(target :: Target).
(KnownNat n, KnownNat m, KnownSTK xn, KnownSTK xm,
BaseTensor target, LetTensor target) =>
(forall (f :: Target).
ADReady f =>
f (TKR2 n xn) -> f (TKR2 m xm) -> f (TKR2 n xn))
-> target (TKR2 n xn)
-> target (TKR2 (1 + m) xm)
-> target (TKR2 (1 + n) xn)
rscan (\f (TKR 0 Double)
x4 f (TKR 0 Double)
a4 -> f (TKR 0 Double)
x4 f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
+ f (TKR 0 Double)
a4) f (TKR 0 Double)
xpa
(Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
xpa)))
f (TKR 0 Double)
a0 (Int -> f (TKR 0 Double) -> f (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 f (TKR 0 Double)
a0)
in f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
f) (Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)
String -> Int
forall a. [a] -> Int
forall (t :: Type -> Type) a. Foldable t => t a -> Int
length (AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple (AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
-> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall (z :: TK) (s :: AstSpanType).
AstSpan s =>
AstTensor AstMethodLet s z -> AstTensor AstMethodLet s z
simplifyInlineContract AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
a1))
Int -> Int -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= Int
67598
testSin0revhV :: Assertion
testSin0revhV :: Assertion
testSin0revhV = do
let f :: forall g. BaseTensor g
=> g (TKR 0 Double) -> g (TKR 0 Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKR 0 Double) -> g (TKR 0 Double)
f = forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad @_ @Double @g (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.4535961214255773)
(forall (g :: Target).
BaseTensor g =>
g (TKR 0 Double) -> g (TKR 0 Double)
f @Concrete (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
testSin0revhVPP :: Assertion
testSin0revhVPP :: Assertion
testSin0revhVPP = do
Assertion
resetVarCounter
let f :: forall g. BaseTensor g
=> g (TKR 0 Double) -> g (TKR 0 Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKR 0 Double) -> g (TKR 0 Double)
f = forall (x :: TK) r (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKScalar r))
-> FullShapeTK x -> target x -> target (ADTensorKind x)
kgrad @_ @Double @g (f (TKR 0 Double) -> f (TKScalar Double)
forall r. GoodScalar r => f (TKR 0 r) -> f (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (f (TKR 0 Double) -> f (TKScalar Double))
-> (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR 0 Double)
-> f (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Floating a => a -> a
sin) (IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar)
AstTensor AstMethodLet PrimalSpan (TKR 0 Double) -> String
forall (s :: AstSpanType) (ms :: AstMethodOfSharing) (y :: TK).
AstSpan s =>
AstTensor ms s y -> String
printAstSimple (forall (g :: Target).
BaseTensor g =>
g (TKR 0 Double) -> g (TKR 0 Double)
f @(AstTensor AstMethodLet PrimalSpan)
(Double -> AstTensor AstMethodLet PrimalSpan (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1))
String -> String -> Assertion
forall a. (Eq a, Show a, HasCallStack) => a -> a -> Assertion
@?= String
"rfromS (cos (sscalar 1.1))"
testSin0revhV4 :: Assertion
testSin0revhV4 :: Assertion
testSin0revhV4 = do
let doms :: FullShapeTK (TKR 0 Double)
doms = IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
doms3 :: FullShapeTK (TKR2 (0 + 1) (TKScalar Double))
doms3 = ShR (0 + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 (0 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
3 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
f :: forall g. (BaseTensor g)
=> g (TKR 1 Double) -> g (TKR 1 Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKR 1 Double) -> g (TKR 1 Double)
f g (TKR 1 Double)
x =
forall (n :: Nat) (x :: TK) (r :: TK) (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKR2 n r))
-> FullShapeTK x
-> target x
-> target (ADTensorKind (TKR2 n r))
-> target (ADTensorKind x)
rvjp @1 @_ @(TKScalar Double) @g
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a b. a -> b -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
const FullShapeTK (TKR 0 Double)
doms (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5))
FullShapeTK (TKR 1 Double)
doms3 g (TKR 1 Double)
x (IShR 1 -> [Double] -> g (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
4] [Double
Item [Double]
1, Double
Item [Double]
2, Double
Item [Double]
3, Double
Item [Double]
4])
Rational
-> Concrete (TKR2 (1 + 0) (TKScalar Double))
-> Concrete (TKR2 (1 + 0) (TKScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(NonEmpty (Concrete (TKR 0 Double))
-> Concrete (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList [Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0, Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0, Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0])
((ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 1 Double))
-> DValue (ADVal Concrete (TKR 1 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 1 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 1 Double))
-> ADVal Concrete (TKR 1 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 1 Double)
forall (g :: Target).
BaseTensor g =>
g (TKR 1 Double) -> g (TKR 1 Double)
f) (Int
-> Concrete (TKR 0 Double)
-> Concrete (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
testSin0revhV5 :: Assertion
testSin0revhV5 :: Assertion
testSin0revhV5 = do
let doms :: FullShapeTK (TKR 0 Double)
doms = IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
doms3 :: FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
doms3 = ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
f :: forall g. (BaseTensor g)
=> g (TKS '[3] Double) -> g (TKS '[3] Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x =
forall (sh :: [Nat]) (x :: TK) (r :: TK) (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKS2 sh r))
-> FullShapeTK x
-> target x
-> target (ADTensorKind (TKS2 sh r))
-> target (ADTensorKind x)
svjp @_ @_ @(TKScalar Double) @g
(\f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
v -> forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR @_ @'[4] (f (TKR2 (Rank @Nat ((':) @Nat 4 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double)))
-> f (TKR2 (Rank @Nat ((':) @Nat 4 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a b. a -> b -> a
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
const FullShapeTK (TKR 0 Double)
doms (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKR2 (Rank @Nat ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
v))
FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
doms3 g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x (forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
[r] -> target (TKS sh r)
singestData @'[4] [Double
Item [Double]
1, Double
Item [Double]
2, Double
Item [Double]
3, Double
Item [Double]
4])
Rational
-> Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(forall (n :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat n, KnownShS sh, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKS2 sh x)) -> target (TKS2 ((':) @Nat n sh) x)
sfromList @3 [Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0, Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0, Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
0])
((ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKScalar Double))
-> DValue
(ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> DValue
(ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> (ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> (ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (g :: Target).
BaseTensor g =>
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f) (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1)))
testSin0revhV6 :: Assertion
testSin0revhV6 :: Assertion
testSin0revhV6 = do
let doms :: FullShapeTK (TKR 0 Double)
doms = IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
doms3 :: FullShapeTK (TKR2 (0 + 1) (TKScalar Double))
doms3 = ShR (0 + 1) Int
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKR2 (0 + 1) (TKScalar Double))
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR (Int
3 Int -> IShR 0 -> ShR (0 + 1) Int
forall {n1 :: Nat} {i} (n :: Nat).
((n + 1 :: Nat) ~ (n1 :: Nat)) =>
i -> ShR n i -> ShR n1 i
:$: IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
f :: forall g. (BaseTensor g)
=> g (TKR 1 Double) -> g (TKR 1 Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKR 1 Double) -> g (TKR 1 Double)
f g (TKR 1 Double)
x =
forall (n :: Nat) (x :: TK) (r :: TK) (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKR2 n r))
-> FullShapeTK x
-> target x
-> target (ADTensorKind (TKR2 n r))
-> target (ADTensorKind x)
rvjp @1 @_ @(TKScalar Double) @g
((forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
_ f (TKR 0 Double)
z -> f (TKR 0 Double)
z f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
z) FullShapeTK (TKR 0 Double)
doms (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5))
FullShapeTK (TKR 1 Double)
doms3 g (TKR 1 Double)
x (IShR 1 -> [Double] -> g (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
4] [Double
Item [Double]
1, Double
Item [Double]
2, Double
Item [Double]
3, Double
Item [Double]
4])
Rational
-> Concrete (TKR 1 Double) -> Concrete (TKR 1 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(IShR 1 -> [Double] -> Concrete (TKR 1 Double)
forall (n :: Nat) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [Double
Item [Double]
4.0,Double
Item [Double]
6.0,Double
Item [Double]
8.0])
((ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKScalar Double))
-> DValue (ADVal Concrete (TKR 1 Double))
-> DValue (ADVal Concrete (TKR 1 Double))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKR 0 r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (ADVal Concrete (TKR 0 Double) -> ADVal Concrete (TKScalar Double))
-> (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double))
-> ADVal Concrete (TKR 1 Double)
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double)
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 1 Double))
-> ADVal Concrete (TKR 1 Double)
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR 1 Double) -> ADVal Concrete (TKR 1 Double)
forall (g :: Target).
BaseTensor g =>
g (TKR 1 Double) -> g (TKR 1 Double)
f) (Int
-> Concrete (TKR 0 Double)
-> Concrete (TKR2 (1 + 0) (TKScalar Double))
forall (n :: Nat) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
3 (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.1)))
testSin0revhV7 :: Assertion
testSin0revhV7 :: Assertion
testSin0revhV7 = do
let doms :: FullShapeTK (TKR 0 Double)
doms = IShR 0
-> FullShapeTK (TKScalar Double) -> FullShapeTK (TKR 0 Double)
forall (n :: Nat) (x :: TK).
IShR n -> FullShapeTK x -> FullShapeTK (TKR2 n x)
FTKR IShR 0
forall (n :: Nat) i. ((n :: Nat) ~ (0 :: Nat)) => ShR n i
ZSR FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
doms3 :: FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
doms3 = ShS ((':) @Nat 3 ('[] @Nat))
-> FullShapeTK (TKScalar Double)
-> FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
ShS sh -> FullShapeTK x -> FullShapeTK (TKS2 sh x)
FTKS (forall (n :: Nat). KnownNat n => SNat n
SNat @3 SNat 3 -> ShS ('[] @Nat) -> ShS ((':) @Nat 3 ('[] @Nat))
forall {sh1 :: [Nat]} (n :: Nat) (sh :: [Nat]).
(KnownNat n, ((':) @Nat n sh :: [Nat]) ~ (sh1 :: [Nat])) =>
SNat n -> ShS sh -> ShS sh1
:$$ ShS ('[] @Nat)
forall (sh :: [Nat]).
((sh :: [Nat]) ~ ('[] @Nat :: [Nat])) =>
ShS sh
ZSS) FullShapeTK (TKScalar Double)
forall r. GoodScalar r => FullShapeTK (TKScalar r)
FTKScalar
f :: forall g. (BaseTensor g)
=> g (TKS '[3] Double) -> g (TKS '[3] Double)
f :: forall (g :: Target).
BaseTensor g =>
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x =
forall (sh :: [Nat]) (x :: TK) (r :: TK) (target :: Target).
BaseTensor target =>
(forall (f :: Target). ADReady f => f x -> f (TKS2 sh r))
-> FullShapeTK x
-> target x
-> target (ADTensorKind (TKS2 sh r))
-> target (ADTensorKind x)
svjp @_ @_ @(TKScalar Double) @g
(\f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
v -> forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Nat sh) x) -> target (TKS2 sh x)
sfromR @_ @'[4] (f (TKR2 (Rank @Nat ((':) @Nat 4 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double)))
-> f (TKR2 (Rank @Nat ((':) @Nat 4 ('[] @Nat))) (TKScalar Double))
-> f (TKS2 ((':) @Nat 4 ('[] @Nat)) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ (forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double))
-> FullShapeTK (TKR 0 Double)
-> f (TKR 0 Double)
-> f (TKR2 (1 + 0) (TKScalar Double))
-> f (TKR2 (1 + 0) (TKScalar Double))
forall rn (n :: Nat) rn2 (n2 :: Nat) (target :: Target).
(GoodScalar rn, KnownNat n, GoodScalar rn2, ADReady target) =>
(forall (f :: Target).
ADReady f =>
f (TKR n rn) -> f (TKR n2 rn2) -> f (TKR n rn))
-> FullShapeTK (TKR n2 rn2)
-> target (TKR n rn)
-> target (TKR (1 + n2) rn2)
-> target (TKR (1 + n) rn)
rscanZip (\f (TKR 0 Double)
_ f (TKR 0 Double)
z -> f (TKR 0 Double)
z f (TKR 0 Double) -> f (TKR 0 Double) -> f (TKR 0 Double)
forall a. Num a => a -> a -> a
* f (TKR 0 Double)
z) FullShapeTK (TKR 0 Double)
doms (Double -> f (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
5) (f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> f (TKR2 (Rank @Nat ((':) @Nat 3 ('[] @Nat))) (TKScalar Double))
forall (sh :: [Nat]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKS2 sh x) -> f (TKR2 (Rank @Nat sh) x)
forall (target :: Target) (sh :: [Nat]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Nat sh) x)
rfromS f (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
v))
FullShapeTK (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
doms3 g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
x (forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
[r] -> target (TKS sh r)
singestData @'[4] [Double
Item [Double]
1, Double
Item [Double]
2, Double
Item [Double]
3, Double
Item [Double]
4])
Rational
-> Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
(forall (sh :: [Nat]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
[r] -> target (TKS sh r)
singestData @'[3] [Double
Item [Double]
4.0,Double
Item [Double]
6.0,Double
Item [Double]
8.0])
((ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKScalar Double))
-> DValue
(ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> DValue
(ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
forall src r tgt.
((X src :: TK) ~ (X (DValue src) :: TK), KnownSTK (X src),
AdaptableTarget (ADVal Concrete) src,
AdaptableTarget Concrete (DValue src),
(tgt :: Type) ~ (ADVal Concrete (TKScalar r) :: Type)) =>
(src -> tgt) -> DValue src -> DValue src
cgrad (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double)
forall r.
GoodScalar r =>
ADVal Concrete (TKS ('[] @Nat) r) -> ADVal Concrete (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Nat) r) -> target (TKScalar r)
kfromS (ADVal Concrete (TKS ('[] @Nat) Double)
-> ADVal Concrete (TKScalar Double))
-> (ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Nat) x)
ssum0 (ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double))
-> (ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal
Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double)))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS ('[] @Nat) Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> ADVal Concrete (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
forall (g :: Target).
BaseTensor g =>
g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
-> g (TKS2 ((':) @Nat 3 ('[] @Nat)) (TKScalar Double))
f) (forall (k :: Nat) (sh :: [Nat]) (x :: TK) (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ((':) @Nat k sh) x)
sreplicate @3 (Double -> Concrete (TKS ('[] @Nat) Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Nat) r)
sscalar Double
1.1)))