{-# LANGUAGE OverloadedLists #-}
{-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-}
{-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise #-}
-- | Assorted mostly high rank tensor tests.
module TestHighRankSimplified (testTrees) where

import Prelude

import Data.Int (Int64)
import GHC.Exts (IsList (..))
import GHC.TypeLits (KnownNat, type (+), type (-), type (<=))
import Test.Tasty
import Test.Tasty.HUnit hiding (assert)

import Data.Array.Nested qualified as Nested
import Data.Array.Nested.Mixed.Shape
import Data.Array.Nested.Ranked.Shape
import Data.Array.Nested.Shaped.Shape

import HordeAd
import HordeAd.Core.Ops (tD, tfromPrimal)

import CrossTesting
import EqEpsilon

testTrees :: [TestTree]
testTrees :: [TestTree]
testTrees =
  [ TestName -> Assertion -> TestTree
testCase TestName
"3foo" Assertion
testFoo
  , TestName -> Assertion -> TestTree
testCase TestName
"3bar" Assertion
testBar
--  , testCase "3barS" testBarS
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooD T Double [1.1, 2.2, 3.3]" Assertion
testFooD
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild0" Assertion
testFooBuild0
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuildOut" Assertion
testFooBuildOut
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild91" Assertion
testFooBuild91
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild92" Assertion
testFooBuild92
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild21" Assertion
testFooBuild21
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild25" Assertion
testFooBuild25
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild21S" Assertion
testFooBuild21S
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild25S" Assertion
testFooBuild25S
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuildNest21S" Assertion
testFooBuildNest21S
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuildNest25S" Assertion
testFooBuildNest25S
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild3" Assertion
testFooBuild3
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuildDt" Assertion
testFooBuildDt
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuildDt2" Assertion
testFooBuildDt2
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild5" Assertion
testFooBuild5
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooBuild1" Assertion
testFooBuild1
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooMap" Assertion
testFooMap
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooMap1" Assertion
testFooMap1
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooNoGo" Assertion
testFooNoGo
  , TestName -> Assertion -> TestTree
testCase TestName
"3fooNoGo10" Assertion
testFooNoGo10
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedBuildMap1" Assertion
testNestedBuildMap1
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedBuildMap10" Assertion
testNestedBuildMap10
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedBuildMap11" Assertion
testNestedBuildMap11
--  , testCase "3nestedBuildMap7" testNestedBuildMap7
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedSumBuild1" Assertion
testNestedSumBuild1
--  , testCase "3nestedSumBuild5" testNestedSumBuild5
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedSumBuildB" Assertion
testNestedSumBuildB
  , TestName -> Assertion -> TestTree
testCase TestName
"3nestedBuildIndex" Assertion
testNestedBuildIndex
  , TestName -> Assertion -> TestTree
testCase TestName
"3barReluADValDt" Assertion
testBarReluADValDt
  , TestName -> Assertion -> TestTree
testCase TestName
"3barReluADValDt2" Assertion
testBarReluADValDt2
  , TestName -> Assertion -> TestTree
testCase TestName
"3barReluADVal" Assertion
testBarReluADVal
  , TestName -> Assertion -> TestTree
testCase TestName
"3barReluADVal3" Assertion
testBarReluADVal3
  , TestName -> Assertion -> TestTree
testCase TestName
"3braidedBuilds" Assertion
testBraidedBuilds
  , TestName -> Assertion -> TestTree
testCase TestName
"3braidedBuilds1" Assertion
testBraidedBuilds1
  , TestName -> Assertion -> TestTree
testCase TestName
"3recycled" Assertion
testRecycled
-- takes too long (can't be helped)  , testCase "3recycled1" testRecycled1
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild0" Assertion
testConcatBuild0
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild1" Assertion
testConcatBuild1
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild0m" Assertion
testConcatBuild0m
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild1m" Assertion
testConcatBuild1m
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild2" Assertion
testConcatBuild2
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild22" Assertion
testConcatBuild22
  , TestName -> Assertion -> TestTree
testCase TestName
"3concatBuild3" Assertion
testConcatBuild3
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic0" Assertion
testLogistic0
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic5" Assertion
testLogistic5
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic52" Assertion
testLogistic52
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic0Old" Assertion
testLogistic0Old
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic5Old" Assertion
testLogistic5Old
  , TestName -> Assertion -> TestTree
testCase TestName
"3logistic52Old" Assertion
testLogistic52Old
  , TestName -> Assertion -> TestTree
testCase TestName
"3logisticA0" Assertion
testLogisticA0
  , TestName -> Assertion -> TestTree
testCase TestName
"3logisticB0" Assertion
testLogisticB0
  , TestName -> Assertion -> TestTree
testCase TestName
"3logisticC0" Assertion
testLogisticC0
  ]

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

_fooF :: RealFloatH a => (a,a,a) -> a
_fooF :: forall a. RealFloatH a => (a, a, a) -> a
_fooF (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

testFoo :: Assertion
testFoo :: Assertion
testFoo =
  Rational
-> (Concrete (TKR 5 Float), Concrete (TKR 5 Float),
    Concrete (TKR 5 Float))
-> (Concrete (TKR 5 Float), Concrete (TKR 5 Float),
    Concrete (TKR 5 Float))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-3
    (IShR 5 -> [Float] -> Concrete (TKR 5 Float)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1, Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [-Float
4.6947093,Float
Item [Float]
1.5697206,-Float
1.6332961,Float
Item [Float]
0.34882763,Float
Item [Float]
1.5697206,-Float
1.0,-Float
0.9784988,-Float
0.9158946,Float
Item [Float]
6.6326222,Float
Item [Float]
3.6699238,Float
Item [Float]
7.85237,-Float
2.9069107,Float
Item [Float]
17.976654,Float
Item [Float]
0.3914159,Float
Item [Float]
32.98194,Float
Item [Float]
19.807974], IShR 5 -> [Float] -> Concrete (TKR 5 Float)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1, Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Float
Item [Float]
6.943779,-Float
1.436789,Float
Item [Float]
33.67549,Float
Item [Float]
0.22397964,-Float
1.436789,-Float
1.0,-Float
0.975235,-Float
0.90365005,Float
Item [Float]
147.06645,-Float
73.022705,-Float
9.238474,-Float
10.042692,-Float
980.2843,-Float
7.900571,-Float
14.451739,Float
Item [Float]
436.9084], IShR 5 -> [Float] -> Concrete (TKR 5 Float)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1, Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [-Float
4.8945336,Float
Item [Float]
2.067469,-Float
1.7196897,Float
Item [Float]
1.3341143,Float
Item [Float]
2.067469,Float
Item [Float]
1.0,Float
Item [Float]
0.99846554,Float
Item [Float]
0.99536234,Float
Item [Float]
6.6943173,Float
Item [Float]
3.7482092,Float
Item [Float]
7.977362,-Float
3.1475093,Float
Item [Float]
18.000969,Float
Item [Float]
0.48736274,Float
Item [Float]
33.01224,Float
Item [Float]
19.845064])
    (((AstTensor AstMethodLet FullSpan (TKR 5 Float),
  AstTensor AstMethodLet FullSpan (TKR 5 Float),
  AstTensor AstMethodLet FullSpan (TKR 5 Float))
 -> AstTensor AstMethodLet FullSpan (TKScalar Float))
-> Value
     (AstTensor AstMethodLet FullSpan (TKR 5 Float),
      AstTensor AstMethodLet FullSpan (TKR 5 Float),
      AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> Value
     (AstTensor AstMethodLet FullSpan (TKR 5 Float),
      AstTensor AstMethodLet FullSpan (TKR 5 Float),
      AstTensor AstMethodLet FullSpan (TKR 5 Float))
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 (AstTensor AstMethodLet FullSpan (TKR2 0 (TKScalar Float))
-> AstTensor AstMethodLet FullSpan (TKScalar Float)
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 (TKR2 0 (TKScalar Float))
 -> AstTensor AstMethodLet FullSpan (TKScalar Float))
-> ((AstTensor AstMethodLet FullSpan (TKR 5 Float),
     AstTensor AstMethodLet FullSpan (TKR 5 Float),
     AstTensor AstMethodLet FullSpan (TKR 5 Float))
    -> AstTensor AstMethodLet FullSpan (TKR2 0 (TKScalar Float)))
-> (AstTensor AstMethodLet FullSpan (TKR 5 Float),
    AstTensor AstMethodLet FullSpan (TKR 5 Float),
    AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> AstTensor AstMethodLet FullSpan (TKScalar Float)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @5 @(TKScalar Float) (AstTensor AstMethodLet FullSpan (TKR 5 Float)
 -> AstTensor AstMethodLet FullSpan (TKR2 0 (TKScalar Float)))
-> ((AstTensor AstMethodLet FullSpan (TKR 5 Float),
     AstTensor AstMethodLet FullSpan (TKR 5 Float),
     AstTensor AstMethodLet FullSpan (TKR 5 Float))
    -> AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> (AstTensor AstMethodLet FullSpan (TKR 5 Float),
    AstTensor AstMethodLet FullSpan (TKR 5 Float),
    AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> AstTensor AstMethodLet FullSpan (TKR2 0 (TKScalar Float))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AstTensor AstMethodLet FullSpan (TKR 5 Float),
 AstTensor AstMethodLet FullSpan (TKR 5 Float),
 AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> AstTensor AstMethodLet FullSpan (TKR 5 Float)
forall a. RealFloatH a => (a, a, a) -> a
foo) (Concrete (TKR 5 Float)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16, Concrete (TKR 5 Float)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16, Concrete (TKR 5 Float)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16))

bar :: forall a. RealFloatH a => (a, a) -> a
bar :: forall a. RealFloatH a => (a, a) -> a
bar (a
x, a
y) =
  let w :: a
w = (a, a, a) -> a
forall a. RealFloatH a => (a, a, a) -> a
foo (a
x, a
y, 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
x a
w a -> a -> a
forall a. Num a => a -> a -> a
+ a
y a -> a -> a
forall a. Num a => a -> a -> a
* a
w

_barF :: forall a. RealFloatH a => (a, a) -> a
_barF :: forall a. RealFloatH a => (a, a) -> a
_barF (a
x, a
y) =
  let w :: a
w = (a, a, a) -> a
forall a. RealFloatH a => (a, a, a) -> a
_fooF (a
x, a
y, 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
x a
w a -> a -> a
forall a. Num a => a -> a -> a
+ a
y a -> a -> a
forall a. Num a => a -> a -> a
* a
w

testBar :: Assertion
testBar :: Assertion
testBar =
  Rational
-> (Concrete (TKR2 7 (TKScalar Float)),
    Concrete (TKR2 7 (TKScalar Float)))
-> (Concrete (TKR2 7 (TKScalar Float)),
    Concrete (TKR2 7 (TKScalar Float)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-5
    (RepConcrete (TKR2 7 (TKScalar Float))
-> Concrete (TKR2 7 (TKScalar Float))
forall (y :: TK). RepConcrete y -> Concrete y
Concrete (RepConcrete (TKR2 7 (TKScalar Float))
 -> Concrete (TKR2 7 (TKScalar Float)))
-> RepConcrete (TKR2 7 (TKScalar Float))
-> Concrete (TKR2 7 (TKScalar Float))
forall a b. (a -> b) -> a -> b
$ IShR 7 -> NonEmpty Float -> Ranked 7 Float
forall (n :: Natural) a.
Elt a =>
IShR n -> NonEmpty a -> Ranked n a
Nested.rfromListLinear [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [Float
Item (NonEmpty Float)
304.13867,Float
Item (NonEmpty Float)
914.9335,Float
Item (NonEmpty Float)
823.0187,Float
Item (NonEmpty Float)
1464.4688,Float
Item (NonEmpty Float)
5264.3306,Float
Item (NonEmpty Float)
1790.0055,Float
Item (NonEmpty Float)
1535.4309,Float
Item (NonEmpty Float)
3541.6572,Float
Item (NonEmpty Float)
304.13867,Float
Item (NonEmpty Float)
914.9335,Float
Item (NonEmpty Float)
823.0187,Float
Item (NonEmpty Float)
1464.4688,Float
Item (NonEmpty Float)
6632.4355,Float
Item (NonEmpty Float)
6047.113,Float
Item (NonEmpty Float)
1535.4309,Float
Item (NonEmpty Float)
1346.6815,Float
Item (NonEmpty Float)
45.92141,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
5.5406737,Float
Item (NonEmpty Float)
1.4242969,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
1.1458766,Float
Item (NonEmpty Float)
4.6446533,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
88.783676,Float
Item (NonEmpty Float)
27.467598,Float
Item (NonEmpty Float)
125.27507,Float
Item (NonEmpty Float)
18.177452,Float
Item (NonEmpty Float)
647.1915,Float
Item (NonEmpty Float)
0.3878851,Float
Item (NonEmpty Float)
2177.6152,Float
Item (NonEmpty Float)
786.1792,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
6.4903135,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
21.783596,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
2.3550234,Float
Item (NonEmpty Float)
21.783596,Float
Item (NonEmpty Float)
21.783596,Float
Item (NonEmpty Float)
21.783596,Float
Item (NonEmpty Float)
21.783596],RepConcrete (TKR2 7 (TKScalar Float))
-> Concrete (TKR2 7 (TKScalar Float))
forall (y :: TK). RepConcrete y -> Concrete y
Concrete (RepConcrete (TKR2 7 (TKScalar Float))
 -> Concrete (TKR2 7 (TKScalar Float)))
-> RepConcrete (TKR2 7 (TKScalar Float))
-> Concrete (TKR2 7 (TKScalar Float))
forall a b. (a -> b) -> a -> b
$ IShR 7 -> NonEmpty Float -> Ranked 7 Float
forall (n :: Natural) a.
Elt a =>
IShR n -> NonEmpty a -> Ranked n a
Nested.rfromListLinear [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [-Float
5728.7617,Float
Item (NonEmpty Float)
24965.113,Float
Item (NonEmpty Float)
32825.07,-Float
63505.953,-Float
42592.203,Float
Item (NonEmpty Float)
145994.88,-Float
500082.5,-Float
202480.06,-Float
5728.7617,Float
Item (NonEmpty Float)
24965.113,Float
Item (NonEmpty Float)
32825.07,-Float
63505.953,Float
Item (NonEmpty Float)
49494.473,-Float
2446.7632,-Float
500082.5,-Float
125885.58,-Float
43.092484,-Float
1.9601002,-Float
98.97709,Float
Item (NonEmpty Float)
2.1931143,-Float
1.9601002,Float
Item (NonEmpty Float)
1.8243169,-Float
4.0434446,-Float
1.5266153,Float
Item (NonEmpty Float)
2020.9731,-Float
538.0603,-Float
84.28137,Float
Item (NonEmpty Float)
62.963814,-Float
34986.996,-Float
9.917454,Float
Item (NonEmpty Float)
135.30023,Float
Item (NonEmpty Float)
17741.998,-Float
1.9601002,-Float
1.9601002,-Float
1.9601002,-Float
1.9601002,-Float
1.5266153,-Float
1.5266153,-Float
1.5266153,-Float
1.5266153,-Float
4029.1775,-Float
1.5266153,-Float
1.5266153,-Float
1.5266153,-Float
4029.1775,-Float
4029.1775,-Float
4029.1775,-Float
4029.1775])
    (((ADVal Concrete (TKR2 7 (TKScalar Float)),
  ADVal Concrete (TKR2 7 (TKScalar Float)))
 -> ADVal Concrete (TKScalar Float))
-> DValue
     (ADVal Concrete (TKR2 7 (TKScalar Float)),
      ADVal Concrete (TKR2 7 (TKScalar Float)))
-> DValue
     (ADVal Concrete (TKR2 7 (TKScalar Float)),
      ADVal Concrete (TKR2 7 (TKScalar Float)))
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 (TKR2 0 (TKScalar Float))
-> ADVal Concrete (TKScalar Float)
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 (TKR2 0 (TKScalar Float))
 -> ADVal Concrete (TKScalar Float))
-> ((ADVal Concrete (TKR2 7 (TKScalar Float)),
     ADVal Concrete (TKR2 7 (TKScalar Float)))
    -> ADVal Concrete (TKR2 0 (TKScalar Float)))
-> (ADVal Concrete (TKR2 7 (TKScalar Float)),
    ADVal Concrete (TKR2 7 (TKScalar Float)))
-> ADVal Concrete (TKScalar Float)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR2 7 (TKScalar Float))
-> ADVal Concrete (TKR2 0 (TKScalar Float))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR2 7 (TKScalar Float))
 -> ADVal Concrete (TKR2 0 (TKScalar Float)))
-> ((ADVal Concrete (TKR2 7 (TKScalar Float)),
     ADVal Concrete (TKR2 7 (TKScalar Float)))
    -> ADVal Concrete (TKR2 7 (TKScalar Float)))
-> (ADVal Concrete (TKR2 7 (TKScalar Float)),
    ADVal Concrete (TKR2 7 (TKScalar Float)))
-> ADVal Concrete (TKR2 0 (TKScalar Float))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. RealFloatH a => (a, a) -> a
bar @(ADVal Concrete (TKR 7 Float))) (Concrete (TKR2 7 (TKScalar Float))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48, Concrete (TKR2 7 (TKScalar Float))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48))

{- TODO: divergent result; bring back when GHC 9.10 dropped:
testBarS :: Assertion
testBarS =
  assertEqualUpToEpsilon 1e-5
    (sconcrete $ Nested.sfromListPrimLinear @_ @'[3, 1, 2, 2, 1, 2, 2] knownShS [304.13867,914.9335,823.0187,1464.4688,5264.3306,1790.0055,1535.4309,3541.6572,304.13867,914.9335,823.0187,1464.4688,6632.4355,6047.113,1535.4309,1346.6815,45.92141,6.4903135,5.5406737,1.4242969,6.4903135,1.1458766,4.6446533,2.3550234,88.783676,27.467598,125.27507,18.177452,647.1915,0.3878851,2177.6152,786.1792,6.4903135,6.4903135,6.4903135,6.4903135,2.3550234,2.3550234,2.3550234,2.3550234,21.783596,2.3550234,2.3550234,2.3550234,21.783596,21.783596,21.783596,21.783596], sconcrete $ Nested.sfromListPrimLinear @_ @'[3, 1, 2, 2, 1, 2, 2] knownShS [-5728.761,24965.113,32825.074,-63505.957,-42592.203,145994.89,-500082.5,-202480.05,-5728.761,24965.113,32825.074,-63505.957,49494.473,-2446.7632,-500082.5,-125885.58,-43.092484,-1.9601007,-98.97708,2.1931143,-1.9601007,1.8243167,-4.0434446,-1.5266151,2020.9731,-538.06036,-84.28139,62.963818,-34986.992,-9.917454,135.3003,17741.996,-1.9601007,-1.9601007,-1.9601007,-1.9601007,-1.5266151,-1.5266151,-1.5266151,-1.5266151,-4029.1775,-1.5266151,-1.5266151,-1.5266151,-4029.1775,-4029.1775,-4029.1775,-4029.1775])
    (cgrad (kfromS . ssum0 . barF @(ADVal Concrete (TKS '[3, 1, 2, 2, 1, 2, 2] Float))) (sfromR t48, sfromR t48))
-}

-- A dual-number and list-based version of a function that goes
-- from `R^3` to `R`.
fooD :: forall r n. (RealFloatH (ADVal Concrete (TKR n r)))
     => ListR 3 (ADVal Concrete (TKR n r)) -> ADVal Concrete (TKR n r)
fooD :: forall r (n :: Natural).
RealFloatH (ADVal Concrete (TKR n r)) =>
ListR 3 (ADVal Concrete (TKR n r)) -> ADVal Concrete (TKR n r)
fooD (ADVal Concrete (TKR n r)
x ::: ADVal Concrete (TKR n r)
y ::: ADVal Concrete (TKR n r)
z ::: ListR n1 (ADVal Concrete (TKR n r))
ZR) =
  let w :: ADVal Concrete (TKR n r)
w = ADVal Concrete (TKR n r)
x ADVal Concrete (TKR n r)
-> ADVal Concrete (TKR n r) -> ADVal Concrete (TKR n r)
forall a. Num a => a -> a -> a
* ADVal Concrete (TKR n r) -> ADVal Concrete (TKR n r)
forall a. Floating a => a -> a
sin ADVal Concrete (TKR n r)
y
  in ADVal Concrete (TKR n r)
-> ADVal Concrete (TKR n r) -> ADVal Concrete (TKR n r)
forall a. RealFloatH a => a -> a -> a
atan2H ADVal Concrete (TKR n r)
z ADVal Concrete (TKR n r)
w ADVal Concrete (TKR n r)
-> ADVal Concrete (TKR n r) -> ADVal Concrete (TKR n r)
forall a. Num a => a -> a -> a
+ ADVal Concrete (TKR n r)
z ADVal Concrete (TKR n r)
-> ADVal Concrete (TKR n r) -> ADVal Concrete (TKR n r)
forall a. Num a => a -> a -> a
* ADVal Concrete (TKR n r)
w

testFooD :: Assertion
testFooD :: Assertion
testFooD =
  Rational
-> ListR 3 (Concrete (TKR2 10 (TKScalar Double)))
-> ListR 3 (Concrete (TKR2 10 (TKScalar Double)))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
    ([Item (ListR 3 (Concrete (TKR2 10 (TKScalar Double))))]
-> ListR 3 (Concrete (TKR2 10 (TKScalar Double)))
forall l. IsList l => [Item l] -> l
fromList [IShR 10 -> [Double] -> Concrete (TKR2 10 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1] [Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
18.666613887422585,Double
Item [Double]
34.775664100213014,Double
Item [Double]
62.54884873632415,Double
Item [Double]
37.93303229694526,Double
Item [Double]
11.635186977032971,Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.600738734367262,Double
Item [Double]
34.775664100213014,Double
Item [Double]
62.54884873632415,Double
Item [Double]
16.663997008808924,Double
Item [Double]
3.1300339898598155,Double
Item [Double]
1.060799258653783,Double
Item [Double]
3.78942741815228,Double
Item [Double]
0.1889454555944933,-Double
1.060799258653783,Double
Item [Double]
62.54884873632415,Double
Item [Double]
37.93303229694526,Double
Item [Double]
62.54884873632415,Double
Item [Double]
35.99996432769119,Double
Item [Double]
62.54884873632415,Double
Item [Double]
37.93303229694526,Double
Item [Double]
11.635186977032971,Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
34.134947381491145,Double
Item [Double]
34.775664100213014,Double
Item [Double]
45527.22315787758,-Double
4.488300547708207,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
8.404498097344806,Double
Item [Double]
5.747373381623309,Double
Item [Double]
5.096832468946128,-Double
2.4630526910399646,Double
Item [Double]
18.666613887422585,Double
Item [Double]
1.7769486222994448,-Double
215.8115662030395,Double
Item [Double]
16.73214939773215,Double
Item [Double]
1.060799258653783,Double
Item [Double]
1.060799258653783,Double
Item [Double]
1.060799258653783,Double
Item [Double]
1.060799258653783,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
2.1475176207684497,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
16.08742477551077,Double
Item [Double]
25.821775835995922,Double
Item [Double]
5.096832468946128,Double
Item [Double]
7.045006174919766,-Double
1.7808956511653404,Double
Item [Double]
16.663997008744435,Double
Item [Double]
18.533999054066836,-Double
25.177267779903083,Double
Item [Double]
16.60317012020362,Double
Item [Double]
25.821775835995922,Double
Item [Double]
5.096832468946128,Double
Item [Double]
7.045006174919766,-Double
1.7808956511653404,Double
Item [Double]
16.663997008744435,Double
Item [Double]
18.533999054066836,-Double
12.280721583745471,Double
Item [Double]
16.60317012020362,Double
Item [Double]
5.161956818274285,Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
188.11000552192755,Double
Item [Double]
34.775664100213014,Double
Item [Double]
62.54884873632415,Double
Item [Double]
35.99996432769119,Double
Item [Double]
62.54884873632415,Double
Item [Double]
55.32933980086011,Double
Item [Double]
62.54884873632415,Double
Item [Double]
55.32933980086011,Double
Item [Double]
11.635186977032971,Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
14.152094926881784,Double
Item [Double]
34.775664100213014,Double
Item [Double]
62.54884873632415,Double
Item [Double]
53.39649491503442,Double
Item [Double]
62.54884873632415,Double
Item [Double]
14.72904006548922,Double
Item [Double]
62.54884873632415,Double
Item [Double]
37.93303229694526,Double
Item [Double]
11.635186977032971,Double
Item [Double]
18.73108960474591,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
20.665204824764675,Double
Item [Double]
25.821775835995922,Double
Item [Double]
57.33025874582143,Double
Item [Double]
34.775664100213014,Double
Item [Double]
62.54884873632415,Double
Item [Double]
36.64432517917614,Double
Item [Double]
62.54884873632415,Double
Item [Double]
34.06684929392724,Double
Item [Double]
62.54884873632415,Double
Item [Double]
35.99996432769119], IShR 10 -> [Double] -> Concrete (TKR2 10 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1] [Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
642.6917612678424,Double
Item [Double]
2229.2701397674327,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2652.3459120285806,Double
Item [Double]
250.02943073785886,Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
782.6578815409038,Double
Item [Double]
2229.2701397674327,Double
Item [Double]
7210.705208776531,Double
Item [Double]
512.2982591657892,Double
Item [Double]
18.580536443699742,Double
Item [Double]
2.518850510725482,Double
Item [Double]
26.993800503829114,Double
Item [Double]
0.2243239488720164,Double
Item [Double]
2.518850510725482,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2652.3459120285806,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2388.9603285490866,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2652.3459120285806,Double
Item [Double]
250.02943073785886,Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
2147.9011858437157,Double
Item [Double]
2229.2701397674327,-Double
0.5405182383359878,-Double
0.5328698165396271,-Double
0.5099245509210925,Double
Item [Double]
130.7140495214786,Double
Item [Double]
61.4116989316311,Double
Item [Double]
48.40938174779479,Double
Item [Double]
11.696956758139343,Double
Item [Double]
642.6917612678424,Double
Item [Double]
6.317020301049852,Double
Item [Double]
85833.87394976329,Double
Item [Double]
516.4928003659018,Double
Item [Double]
2.518850510725482,Double
Item [Double]
2.518850510725482,Double
Item [Double]
2.518850510725482,Double
Item [Double]
2.518850510725482,-Double
0.5099245509210925,-Double
0.5099245509210925,-Double
0.5099245509210925,-Double
0.5099245509210925,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,-Double
0.5099245509210925,-Double
0.5099245509210925,-Double
0.5099245509210925,-Double
0.5099245509210925,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,Double
Item [Double]
477.4973215160379,Double
Item [Double]
1229.333367336918,Double
Item [Double]
48.40938174779479,Double
Item [Double]
92.00538642301063,Double
Item [Double]
6.3430614471479245,Double
Item [Double]
512.2982591618282,Double
Item [Double]
633.5999783697488,Double
Item [Double]
1168.7578661039847,Double
Item [Double]
508.56903530563443,Double
Item [Double]
1229.333367336918,Double
Item [Double]
48.40938174779479,Double
Item [Double]
92.00538642301063,Double
Item [Double]
6.3430614471479245,Double
Item [Double]
512.2982591618282,Double
Item [Double]
633.5999783697488,Double
Item [Double]
278.48156010484087,Double
Item [Double]
508.56903530563443,Double
Item [Double]
49.64077766932281,Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
65212.963738386214,Double
Item [Double]
2229.2701397674327,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2388.9603285490866,Double
Item [Double]
7210.705208776531,Double
Item [Double]
5642.338335044463,Double
Item [Double]
7210.705208776531,Double
Item [Double]
5642.338335044463,Double
Item [Double]
250.02943073785886,Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
369.6431004072799,Double
Item [Double]
2229.2701397674327,Double
Item [Double]
7210.705208776531,Double
Item [Double]
5255.048317224881,Double
Item [Double]
7210.705208776531,Double
Item [Double]
400.3514287686239,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2652.3459120285806,Double
Item [Double]
250.02943073785886,Double
Item [Double]
647.1354943759653,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
787.5605199613974,Double
Item [Double]
1229.333367336918,Double
Item [Double]
6057.774447242021,Double
Item [Double]
2229.2701397674327,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2475.225838667682,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2139.3419044407133,Double
Item [Double]
7210.705208776531,Double
Item [Double]
2388.9603285490866], IShR 10 -> [Double] -> Concrete (TKR2 10 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
2,Int
Item (IShR 10)
1] [Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
18.698011972363496,Double
Item [Double]
34.7925278085306,Double
Item [Double]
62.558226125235436,Double
Item [Double]
37.948492946856575,Double
Item [Double]
11.685493300971446,Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.629193248844963,Double
Item [Double]
34.7925278085306,Double
Item [Double]
62.558226125235436,Double
Item [Double]
16.699160877305292,Double
Item [Double]
3.3121428825170947,Double
Item [Double]
1.516071490296981,Double
Item [Double]
3.9411848287000124,Double
Item [Double]
1.0994899188808887,-Double
1.516071490296981,Double
Item [Double]
62.558226125235436,Double
Item [Double]
37.948492946856575,Double
Item [Double]
62.558226125235436,Double
Item [Double]
36.01625479268449,Double
Item [Double]
62.558226125235436,Double
Item [Double]
37.948492946856575,Double
Item [Double]
11.685493300971446,Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
34.1521274657041,Double
Item [Double]
34.7925278085306,-Double
45527.22317076194,Double
Item [Double]
4.617144085155745,-Double
2.4052046956635262,Double
Item [Double]
8.474005308282699,Double
Item [Double]
5.84854498865513,Double
Item [Double]
5.210650526856928,-Double
2.6906888068615635,Double
Item [Double]
18.698011972363496,Double
Item [Double]
2.0810391881996813,-Double
215.8142842462135,Double
Item [Double]
16.767170338627782,Double
Item [Double]
1.516071490296981,Double
Item [Double]
1.516071490296981,Double
Item [Double]
1.516071490296981,Double
Item [Double]
1.516071490296981,-Double
2.4052046956635262,-Double
2.4052046956635262,-Double
2.4052046956635262,-Double
2.4052046956635262,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,-Double
2.4052046956635262,-Double
2.4052046956635262,-Double
2.4052046956635262,-Double
2.4052046956635262,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,Double
Item [Double]
16.123846116986126,Double
Item [Double]
25.8444826804669,Double
Item [Double]
5.210650526856928,Double
Item [Double]
7.127782944309438,-Double
2.0844104722608057,Double
Item [Double]
16.69916087724094,Double
Item [Double]
18.565621417897145,-Double
25.200555362084323,Double
Item [Double]
16.638462541261234,Double
Item [Double]
25.8444826804669,Double
Item [Double]
5.210650526856928,Double
Item [Double]
7.127782944309438,-Double
2.0844104722608057,Double
Item [Double]
16.69916087724094,Double
Item [Double]
18.565621417897145,-Double
12.328394068734287,Double
Item [Double]
16.638462541261234,Double
Item [Double]
5.2743697149763085,Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
188.113123824884,Double
Item [Double]
34.7925278085306,Double
Item [Double]
62.558226125235436,Double
Item [Double]
36.01625479268449,Double
Item [Double]
62.558226125235436,Double
Item [Double]
55.33994055377702,Double
Item [Double]
62.558226125235436,Double
Item [Double]
55.33994055377702,Double
Item [Double]
11.685493300971446,Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
14.193483311576621,Double
Item [Double]
34.7925278085306,Double
Item [Double]
62.558226125235436,Double
Item [Double]
53.40747931617656,Double
Item [Double]
62.558226125235436,Double
Item [Double]
14.768811697198851,Double
Item [Double]
62.558226125235436,Double
Item [Double]
37.948492946856575,Double
Item [Double]
11.685493300971446,Double
Item [Double]
18.76237979248771,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
20.69357069589509,Double
Item [Double]
25.8444826804669,Double
Item [Double]
57.34048958248757,Double
Item [Double]
34.7925278085306,Double
Item [Double]
62.558226125235436,Double
Item [Double]
36.660329315674915,Double
Item [Double]
62.558226125235436,Double
Item [Double]
34.08406370302229,Double
Item [Double]
62.558226125235436,Double
Item [Double]
36.01625479268449]])
    ((ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
 -> ADVal Concrete (TKScalar Double))
-> DValue (ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double))))
-> DValue (ListR 3 (ADVal Concrete (TKR2 10 (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 (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))
-> (ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
    -> ADVal Concrete (TKR 0 Double))
-> ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ADVal Concrete (TKR2 10 (TKScalar Double))
-> ADVal Concrete (TKR 0 Double)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (ADVal Concrete (TKR2 10 (TKScalar Double))
 -> ADVal Concrete (TKR 0 Double))
-> (ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
    -> ADVal Concrete (TKR2 10 (TKScalar Double)))
-> ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ListR 3 (ADVal Concrete (TKR2 10 (TKScalar Double)))
-> ADVal Concrete (TKR2 10 (TKScalar Double))
forall r (n :: Natural).
RealFloatH (ADVal Concrete (TKR n r)) =>
ListR 3 (ADVal Concrete (TKR n r)) -> ADVal Concrete (TKR n r)
fooD) ([Item (ListR 3 (Concrete (TKR2 10 (TKScalar Double))))]
-> ListR 3 (Concrete (TKR2 10 (TKScalar Double)))
forall l. IsList l => [Item l] -> l
fromList [ Item [Concrete (TKR2 10 (TKScalar Double))]
Concrete (TKR2 10 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 10 r)
t128
               , IShR 10
-> Concrete (TKR 0 Double) -> Concrete (TKR2 10 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 10)
1, Int
Item (IShR 10)
2, Int
Item (IShR 10)
2, Int
Item (IShR 10)
1, Int
Item (IShR 10)
2, Int
Item (IShR 10)
2, Int
Item (IShR 10)
2, Int
Item (IShR 10)
2, Int
Item (IShR 10)
2, Int
Item (IShR 10)
1] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (Double
0.7 :: Double))
               , Item [Concrete (TKR2 10 (TKScalar Double))]
Concrete (TKR2 10 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 10 r)
t128 ]))

fooBuild0 :: forall target r n. (ADReady target, GoodScalar r, KnownNat n)
          => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild0 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild0 target (TKR (1 + n) r)
v =
  let r :: target (TKR2 n (TKScalar r))
r = target (TKR (1 + n) r) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum target (TKR (1 + n) r)
v
  in Int
-> (IntOf target -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((IntOf target -> target (TKR2 n (TKScalar r)))
 -> target (TKR (1 + n) r))
-> (IntOf target -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ target (TKR2 n (TKScalar r))
-> IntOf target -> target (TKR2 n (TKScalar r))
forall a b. a -> b -> a
const target (TKR2 n (TKScalar r))
r

testFooBuild0 :: Assertion
testFooBuild0 :: Assertion
testFooBuild0 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [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
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])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
f (TKR (1 + 4) Double) -> f (TKR (1 + 4) Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild0 Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuildOut
  :: forall target r n. (ADReady target, GoodScalar r, KnownNat n)
  => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuildOut :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuildOut target (TKR (1 + n) r)
v =
  Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((PrimalOf target (TKScalar Int64) -> target (TKR2 n (TKScalar r)))
 -> target (TKR (1 + n) r))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix -> BoolOf target
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). EqH f y => f y -> f y -> BoolOf f
==. PrimalOf target (TKScalar Int64)
0)
                         (target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1])  -- index out of bounds; guarded
                         (target (TKR (1 + n) r) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum target (TKR (1 + n) r)
v)

testFooBuildOut :: Assertion
testFooBuildOut :: Assertion
testFooBuildOut =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.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])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
f (TKR (1 + 4) Double) -> f (TKR (1 + 4) Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuildOut Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuild2
  :: forall target r n.
     (ADReady target, GoodScalar r, KnownNat n, Floating (target (TKR n r)), RealFloat r)
  => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild2 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild2 target (TKR (1 + n) r)
v =
  Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((PrimalOf target (TKScalar Int64) -> target (TKR n r))
 -> target (TKR (1 + n) r))
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix' -> let ix :: PrimalOf target (TKS '[] Int64)
                          ix :: PrimalOf target (TKS ('[] @Natural) Int64)
ix = PrimalOf
  target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKR2 (Rank @Natural sh) x)
-> PrimalOf target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR (PrimalOf
   target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKScalar Int64) -> PrimalOf target (TKR 0 Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKScalar r) -> PrimalOf target (TKR 0 r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKScalar r) -> target (TKR 0 r)
rfromK PrimalOf target (TKScalar Int64)
ix' in
    BoolOf target
-> target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r))
    -> target (TKS ('[] @Natural) Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor (target (TKS ('[] @Natural) r)
 -> target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r))
-> target (TKR2 0 (TKScalar r))
-> target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r)
target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) (forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0  @5 @(TKScalar r)
                      (target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ IShR 5
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 5 (TKScalar r))
forall (n :: Natural) (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)
5,Int
Item (IShR 5)
12,Int
Item (IShR 5)
11,Int
Item (IShR 5)
9,Int
Item (IShR 5)
4] (target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
0
         BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r))
    -> target (TKS ('[] @Natural) Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor (target (TKS ('[] @Natural) r)
 -> target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r))
-> target (TKR2 0 (TKScalar r))
-> target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r)
target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) (forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @5 @(TKScalar r) @target
                          (target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ IShR 5
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 5 (TKScalar r))
forall (n :: Natural) (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)
5,Int
Item (IShR 5)
12,Int
Item (IShR 5)
11,Int
Item (IShR 5)
9,Int
Item (IShR 5)
4] (target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
1)
        (target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64)) -> target (TKR n r)
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64))
-> PrimalOf target (TKR 0 Int64)
-> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKS2 sh x)
-> PrimalOf target (TKR2 (Rank @Natural sh) x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
rfromS (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf
      target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64)))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r))
    -> target (TKS ('[] @Natural) Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor (target (TKS ('[] @Natural) r)
 -> target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r))
-> target (TKR2 0 (TKScalar r))
-> target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKS ('[] @Natural) r)
target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) (forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0  @5 @(TKScalar r) @target
                                (target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 5 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ IShR 5
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 5 (TKScalar r))
forall (n :: Natural) (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)
5,Int
Item (IShR 5)
12,Int
Item (IShR 5)
11,Int
Item (IShR 5)
9,Int
Item (IShR 5)
4] (target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
10001])
           -- index out of bounds; also fine
        (target (TKR n r) -> target (TKR n r)
forall a. Floating a => a -> a
sqrt (target (TKR n r) -> target (TKR n r))
-> target (TKR n r) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a
abs (target (TKR n r) -> target (TKR n r))
-> target (TKR n r) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64)) -> target (TKR n r)
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKS ('[] @Natural) r)
-> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Natural) r) -> target (TKScalar r)
kfromS
                                (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ let rr :: PrimalOf target (TKS ('[] @Natural) Int64)
rr = (PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (PrimalOf target (TKR 0 Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
PrimalOf
  target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKR2 (Rank @Natural sh) x)
-> PrimalOf target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR (PrimalOf target (TKR 0 Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart (target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKR 0 Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64)
forall r r2 (target :: Target) (n :: Natural).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKR n r) -> target (TKR n r2)
rfloor) (target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
10001) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. IntegralH a => a -> a -> a
`remH` Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
2
                                  in BoolOf (PrimalOf target)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum PrimalOf target (TKS ('[] @Natural) Int64)
rr PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). EqH f y => f y -> f y -> BoolOf f
==. PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
negate (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
2))
                                     (PrimalOf target (TKS ('[] @Natural) Int64)
rr PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
+ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKS ('[] @Natural) r)
sscalar Int64
2)
                                     PrimalOf target (TKS ('[] @Natural) Int64)
rr])

fooBuild2L
  :: forall k target r n.
     (ADReady target, GoodScalar r, KnownNat n, Floating (target (TKR n r)), RealFloat r)
  => ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r)
fooBuild2L :: forall (k :: Natural) (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r)
fooBuild2L = (target (TKR (1 + n) r)
 -> target (TKR (1 + n) r) -> target (TKR (1 + n) r))
-> ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r)
forall a. (a -> a -> a) -> ListR k a -> a
forall (t :: Type -> Type) a.
Foldable t =>
(a -> a -> a) -> t a -> a
foldr1 target (TKR (1 + n) r)
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall a. Num a => a -> a -> a
(+) (ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r))
-> (ListR k (target (TKR (1 + n) r))
    -> ListR k (target (TKR (1 + n) r)))
-> ListR k (target (TKR (1 + n) r))
-> target (TKR (1 + n) r)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (target (TKR (1 + n) r) -> target (TKR (1 + n) r))
-> ListR k (target (TKR (1 + n) r))
-> ListR k (target (TKR (1 + n) r))
forall a b. (a -> b) -> ListR k a -> ListR k b
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild2

testFooBuild91 :: Assertion
testFooBuild91 :: Assertion
testFooBuild91 =
  Rational
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
    ([Item
   (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
forall l. IsList l => [Item l] -> l
fromList ([Item
    (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
 -> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))
-> [Item
      (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ ([Double] -> Concrete (TKR2 1 (TKScalar Double)))
-> [[Double]] -> [Concrete (TKR2 1 (TKScalar Double))]
forall a b. (a -> b) -> [a] -> [b]
map (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2]) [[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299]])
    ((ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))
 -> ADVal Concrete (TKScalar Double))
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (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 (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))
-> (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))
    -> ADVal Concrete (TKR 0 Double))
-> ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))
-> ADVal Concrete (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @1 (ADVal Concrete (TKR2 1 (TKScalar Double))
 -> ADVal Concrete (TKR 0 Double))
-> (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))
    -> ADVal Concrete (TKR2 1 (TKScalar Double)))
-> ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))
-> ADVal Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (k :: Natural) (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r)
fooBuild2L @50 @(ADVal Concrete) @Double @0)
       ([Item
   (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
forall l. IsList l => [Item l] -> l
fromList ([Item
    (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
 -> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))
-> [Item
      (DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double)))))]
-> DValue (ListR 50 (ADVal Concrete (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ ([Double] -> Concrete (TKR2 1 (TKScalar Double)))
-> [[Double]] -> [Concrete (TKR2 1 (TKScalar Double))]
forall a b. (a -> b) -> [a] -> [b]
map (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2]) [[Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9]]))

testFooBuild92 :: Assertion
testFooBuild92 :: Assertion
testFooBuild92 =
  Rational
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
    ([Item
   (Value
      (ListR
         50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
forall l. IsList l => [Item l] -> l
fromList ([Item
    (Value
       (ListR
          50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
 -> Value
      (ListR
         50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))
-> [Item
      (Value
         (ListR
            50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ ([Double] -> Concrete (TKR2 1 (TKScalar Double)))
-> [[Double]] -> [Concrete (TKR2 1 (TKScalar Double))]
forall a b. (a -> b) -> [a] -> [b]
map (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2]) [[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
1.118033988749895],[Double
Item [Double]
1.118033988749895,Double
Item [Double]
0.9128709291752769],[Double
Item [Double]
0.9128709291752769,Double
Item [Double]
0.7905694150420948],[Double
Item [Double]
0.7905694150420948,Double
Item [Double]
0.7071067811865475],[Double
Item [Double]
0.7071067811865475,Double
Item [Double]
0.6454972243679028],[Double
Item [Double]
0.6454972243679028,Double
Item [Double]
0.5976143046671968],[Double
Item [Double]
0.5976143046671968,Double
Item [Double]
0.5590169943749475],[Double
Item [Double]
0.5590169943749475,Double
Item [Double]
0.5270462766947299],[Double
Item [Double]
0.5270462766947299,Double
Item [Double]
1.5811388300841895],[Double
Item [Double]
1.5811388300841895,Double
Item [Double]
0.5270462766947299]])
    ((ListR
   50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
 -> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar 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
       (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))
-> (ListR
      50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
    -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> ListR
     50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @1 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (ListR
      50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
    -> AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
-> ListR
     50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (k :: Natural) (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
ListR k (target (TKR (1 + n) r)) -> target (TKR (1 + n) r)
fooBuild2L @50 @(AstTensor AstMethodLet FullSpan) @Double @0)
       ([Item
   (Value
      (ListR
         50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
forall l. IsList l => [Item l] -> l
fromList ([Item
    (Value
       (ListR
          50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
 -> Value
      (ListR
         50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))
-> [Item
      (Value
         (ListR
            50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))))]
-> Value
     (ListR
        50 (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))))
forall a b. (a -> b) -> a -> b
$ ([Double] -> Concrete (TKR2 1 (TKScalar Double)))
-> [[Double]] -> [Concrete (TKR2 1 (TKScalar Double))]
forall a b. (a -> b) -> [a] -> [b]
map (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2]) [[Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9], [Double
Item [Double]
0.1, Double
Item [Double]
0.2], [Double
Item [Double]
0.2, Double
Item [Double]
0.3], [Double
Item [Double]
0.3, Double
Item [Double]
0.4], [Double
Item [Double]
0.4, Double
Item [Double]
0.5], [Double
Item [Double]
0.5, Double
Item [Double]
0.6], [Double
Item [Double]
0.6, Double
Item [Double]
0.7], [Double
Item [Double]
0.7, Double
Item [Double]
0.8], [Double
Item [Double]
0.8, Double
Item [Double]
0.9], [Double
Item [Double]
0.9, Double
Item [Double]
0.1], [Double
Item [Double]
0.1, Double
Item [Double]
0.9]]))

testFooBuild21 :: Assertion
testFooBuild21 :: Assertion
testFooBuild21 =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
0.2886751345948129,Double
Item [Double]
0.35355339059327373])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @1 f (TKR2 1 (TKScalar Double)) -> f (TKR2 1 (TKScalar Double))
f (TKR (1 + 0) Double) -> f (TKR (1 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR2 1 (TKScalar Double))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild2 (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
3.0,Double
Item [Double]
2.0]))

testFooBuild25 :: Assertion
testFooBuild25 :: Assertion
testFooBuild25 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
0.22360679774997896,Double
Item [Double]
0.35355339059327373,Double
Item [Double]
0.20412414523193154,Double
Item [Double]
0.5,-Double
0.35355339059327373,Double
Item [Double]
500.0,Double
Item [Double]
1.5811388300841895,-Double
1.118033988749895,Double
Item [Double]
0.1381447409988844,Double
Item [Double]
0.16666666666666666,Double
Item [Double]
0.17677669529663687,-Double
0.25,Double
Item [Double]
8.574929257125441e-2,Double
Item [Double]
0.288948802391873,-Double
8.703882797784893e-2,Double
Item [Double]
9.805806756909202e-2])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
f (TKR (1 + 4) Double) -> f (TKR (1 + 4) Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 Floating (target (TKR n r)), RealFloat r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild2 Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuild2S
  :: forall k sh target r.
     (ADReady target, GoodScalar r, KnownNat k, Floating (target (TKS sh r)), RealFloat r, KnownShS sh)
  => target (TKS (k : sh) r) -> target (TKR (1 + Rank sh) r)
fooBuild2S :: forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuild2S target (TKS ((':) @Natural k sh) r)
v = target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
-> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
rfromS (target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
 -> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r)))
-> target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
-> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r))
forall a b. (a -> b) -> a -> b
$
  forall (k :: Natural) (sh :: [Natural]) (x :: TK)
       (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
(IntOf target -> target (TKS2 sh x))
-> target (TKS2 ((':) @Natural k sh) x)
sbuild1 @2 ((IntOf target -> target (TKS sh r))
 -> target (TKS2 ((':) @Natural 2 sh) (TKScalar r)))
-> (IntOf target -> target (TKS sh r))
-> target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
ix' -> let ix :: PrimalOf target (TKS '[] Int64)
                           ix :: PrimalOf target (TKS ('[] @Natural) Int64)
ix = PrimalOf
  target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKR2 (Rank @Natural sh) x)
-> PrimalOf target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR (PrimalOf
   target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ IntOf target -> PrimalOf target (TKR 0 Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKScalar r) -> PrimalOf target (TKR 0 r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKScalar r) -> target (TKR 0 r)
rfromK IntOf target
ix' in
    BoolOf target
-> target (TKS sh r) -> target (TKS sh r) -> target (TKS sh r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r)
             (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
0
         BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r)
             (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
1)
        (target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
-> IxSOf target ((':) @Natural k ('[] @Natural))
-> target (TKS sh r)
forall (shm :: [Natural]) (shn :: [Natural]) (x :: TK)
       (target :: Target).
(KnownShS shm, KnownShS shn, KnownSTK x, BaseTensor target) =>
target (TKS2 ((++) @Natural shm shn) x)
-> IxSOf target shm -> target (TKS2 shn x)
sindex target (TKS ((':) @Natural k sh) r)
target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
v ((PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target
forall r.
GoodScalar r =>
PrimalOf target (TKS ('[] @Natural) r)
-> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Natural) r) -> target (TKScalar r)
kfromS (PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target)
-> PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r)
             (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001) IntOf target
-> IxS ('[] @Natural) (IntOf target)
-> IxSOf target ((':) @Natural k ('[] @Natural))
forall {sh1 :: [Natural]} {i} (n :: Natural) (sh :: [Natural]).
(KnownNat n,
 ((':) @Natural n sh :: [Natural]) ~ (sh1 :: [Natural])) =>
i -> IxS sh i -> IxS sh1 i
:.$ IxS ('[] @Natural) (IntOf target)
forall (sh :: [Natural]) i.
((sh :: [Natural]) ~ ('[] @Natural :: [Natural])) =>
IxS sh i
ZIS ))
           -- index out of bounds; also fine
        (target (TKS sh r) -> target (TKS sh r)
forall a. Floating a => a -> a
sqrt (target (TKS sh r) -> target (TKS sh r))
-> target (TKS sh r) -> target (TKS sh r)
forall a b. (a -> b) -> a -> b
$ target (TKS sh r) -> target (TKS sh r)
forall a. Num a => a -> a
abs (target (TKS sh r) -> target (TKS sh r))
-> target (TKS sh r) -> target (TKS sh r)
forall a b. (a -> b) -> a -> b
$ target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
-> IxSOf target ((':) @Natural k ('[] @Natural))
-> target (TKS sh r)
forall (shm :: [Natural]) (shn :: [Natural]) (x :: TK)
       (target :: Target).
(KnownShS shm, KnownShS shn, KnownSTK x, BaseTensor target) =>
target (TKS2 ((++) @Natural shm shn) x)
-> IxSOf target shm -> target (TKS2 shn x)
sindex target (TKS ((':) @Natural k sh) r)
target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
v ((PrimalOf target (TKR 0 Int64) -> IntOf target
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> IntOf target)
-> PrimalOf target (TKR 0 Int64) -> IntOf target
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKS2 sh x)
-> PrimalOf target (TKR2 (Rank @Natural sh) x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
rfromS (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf
      target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64)))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall a b. (a -> b) -> a -> b
$ let rr :: PrimalOf target (TKS ('[] @Natural) Int64)
rr = (PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. IntegralH a => a -> a -> a
`remH` Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2
                                in BoolOf (PrimalOf target)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum PrimalOf target (TKS ('[] @Natural) Int64)
rr PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). EqH f y => f y -> f y -> BoolOf f
==. PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
negate (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2))
                                   (PrimalOf target (TKS ('[] @Natural) Int64)
rr PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
+ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2)
                                   PrimalOf target (TKS ('[] @Natural) Int64)
rr) IntOf target
-> IxS ('[] @Natural) (IntOf target)
-> IxSOf target ((':) @Natural k ('[] @Natural))
forall {sh1 :: [Natural]} {i} (n :: Natural) (sh :: [Natural]).
(KnownNat n,
 ((':) @Natural n sh :: [Natural]) ~ (sh1 :: [Natural])) =>
i -> IxS sh i -> IxS sh1 i
:.$ IxS ('[] @Natural) (IntOf target)
forall (sh :: [Natural]) i.
((sh :: [Natural]) ~ ('[] @Natural :: [Natural])) =>
IxS sh i
ZIS))

testFooBuild21S :: Assertion
testFooBuild21S :: Assertion
testFooBuild21S =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
0.2886751345948129,Double
Item [Double]
0.35355339059327373])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @1 (forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuild2S @2 @'[] (f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
 -> f (TKR2 1 (TKScalar Double)))
-> (f (TKR2 1 (TKScalar Double))
    -> f (TKS ((':) @Natural 2 ('[] @Natural)) Double))
-> f (TKR2 1 (TKScalar Double))
-> f (TKR2 1 (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR2 1 (TKScalar Double))
-> f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
f (TKR2
     (Rank @Natural ((':) @Natural 2 ('[] @Natural))) (TKScalar Double))
-> f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Natural sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
3.0,Double
Item [Double]
2.0]))

testFooBuild25S :: Assertion
testFooBuild25S :: Assertion
testFooBuild25S =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
0.22360679774997896,Double
Item [Double]
0.35355339059327373,Double
Item [Double]
0.20412414523193154,Double
Item [Double]
0.5,-Double
0.35355339059327373,Double
Item [Double]
500.0,Double
Item [Double]
1.5811388300841895,-Double
1.118033988749895,Double
Item [Double]
0.1381447409988844,Double
Item [Double]
0.16666666666666666,Double
Item [Double]
0.17677669529663687,-Double
0.25,Double
Item [Double]
8.574929257125441e-2,Double
Item [Double]
0.288948802391873,-Double
8.703882797784893e-2,Double
Item [Double]
9.805806756909202e-2])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 (forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuild2S @2 @[2, 1, 2, 2] (f (TKS2
      ((':)
         @Natural
         2
         ((':)
            @Natural
            2
            ((':)
               @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
      (TKScalar Double))
 -> f (TKR 5 Double))
-> (f (TKR 5 Double)
    -> f (TKS2
            ((':)
               @Natural
               2
               ((':)
                  @Natural
                  2
                  ((':)
                     @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
            (TKScalar Double)))
-> f (TKR 5 Double)
-> f (TKR 5 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 5 Double)
-> f (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
f (TKR2
     (Rank
        @Natural
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
     (TKScalar Double))
-> f (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Natural sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuildNest2S
  :: forall k sh target r.
     (ADReady target, GoodScalar r, KnownNat k, Floating (target (TKS sh r)), RealFloat r, KnownShS sh)
  => target (TKS (k : sh) r) -> target (TKR (1 + Rank sh) r)
fooBuildNest2S :: forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuildNest2S target (TKS ((':) @Natural k sh) r)
v = target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
-> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
rfromS (target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
 -> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r)))
-> target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
-> target (TKR2 (Rank @Natural ((':) @Natural 2 sh)) (TKScalar r))
forall a b. (a -> b) -> a -> b
$
  forall (k :: Natural) (sh :: [Natural]) (x :: TK)
       (target :: Target).
(KnownNat k, KnownShS sh, KnownSTK x, BaseTensor target) =>
(IntOf target -> target (TKS2 sh x))
-> target (TKS2 ((':) @Natural k sh) x)
sbuild1 @2 ((IntOf target -> target (TKS sh r))
 -> target (TKS2 ((':) @Natural 2 sh) (TKScalar r)))
-> (IntOf target -> target (TKS sh r))
-> target (TKS2 ((':) @Natural 2 sh) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
ix' -> let ix :: PrimalOf target (TKS '[] Int64)
                           ix :: PrimalOf target (TKS ('[] @Natural) Int64)
ix = PrimalOf
  target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKR2 (Rank @Natural sh) x)
-> PrimalOf target (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR (PrimalOf
   target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ IntOf target -> PrimalOf target (TKR 0 Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKScalar r) -> PrimalOf target (TKR 0 r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKScalar r) -> target (TKR 0 r)
rfromK IntOf target
ix' in
    BoolOf target
-> target (TKS sh r) -> target (TKS sh r) -> target (TKS sh r)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh1, KnownShS sh2, KnownSTK x) =>
target (TKS2 sh1 (TKS2 sh2 x))
-> target (TKS2 ((++) @Natural sh1 sh2) x)
sunNest @_ @'[] @'[] (PrimalOf target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> PrimalOf
         target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64)))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
-> PrimalOf target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
 -> PrimalOf
      target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64)))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64)))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShS ('[] @Natural)
-> target
     (TKS2
        ((++) @Natural ('[] @Natural) ('[] @Natural)) (TKScalar Int64))
-> target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
forall (sh1 :: [Natural]) (sh2 :: [Natural]) (x :: TK).
(KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
snest ShS ('[] @Natural)
forall (sh :: [Natural]). KnownShS sh => ShS sh
knownShS (target (TKS ('[] @Natural) Int64)
 -> target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64)))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> target (TKS2 ('[] @Natural) (TKS ('[] @Natural) Int64))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r)
             (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
0
         BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r)
             (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v)) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001 PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
1)
-- TODO:        (sindex v (ShapedList.singletonIndex (ix - (sprimalPart . sfloor) (ssum0 @[5,12,11,9,4] @r  $ sunNest $ treplicate (SNat @5) knownSTK $ snest (knownShS @[12,11])
        (target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
-> IxSOf target ((':) @Natural k ('[] @Natural))
-> target (TKS sh r)
forall (shm :: [Natural]) (shn :: [Natural]) (x :: TK)
       (target :: Target).
(KnownShS shm, KnownShS shn, KnownSTK x, BaseTensor target) =>
target (TKS2 ((++) @Natural shm shn) x)
-> IxSOf target shm -> target (TKS2 shn x)
sindex target (TKS ((':) @Natural k sh) r)
target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
v ((PrimalOf target (TKR 0 Int64) -> IntOf target
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> IntOf target)
-> PrimalOf target (TKR 0 Int64) -> IntOf target
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
PrimalOf target (TKS2 sh x)
-> PrimalOf target (TKR2 (Rank @Natural sh) x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKS2 sh x) -> target (TKR2 (Rank @Natural sh) x)
rfromS (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf
      target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64)))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf
     target (TKR2 (Rank @Natural ('[] @Natural)) (TKScalar Int64))
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKS ('[] @Natural) Int64)
ix PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> (target (TKS ('[] @Natural) r)
    -> target (TKS ('[] @Natural) Int64))
-> target (TKS ('[] @Natural) r)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor) (forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 @[5,12,11,9,4] @(TKScalar r) @target (target
   (TKS2
      ((':)
         @Natural
         5
         ((':)
            @Natural
            12
            ((':)
               @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
      (TKScalar r))
 -> target (TKS ('[] @Natural) r))
-> target
     (TKS2
        ((':)
           @Natural
           5
           ((':)
              @Natural
              12
              ((':)
                 @Natural 11 ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))))
        (TKScalar r))
-> target (TKS ('[] @Natural) r)
forall a b. (a -> b) -> a -> b
$ target
  (TKS2
     ((':)
        @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
     (TKS2
        ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
-> target
     (TKS2
        ((++)
           @Natural
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
        (TKScalar r))
forall (sh1 :: [Natural]) (sh2 :: [Natural]) (x :: TK).
(KnownShS sh1, KnownShS sh2, KnownSTK x) =>
target (TKS2 sh1 (TKS2 sh2 x))
-> target (TKS2 ((++) @Natural sh1 sh2) x)
forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh1, KnownShS sh2, KnownSTK x) =>
target (TKS2 sh1 (TKS2 sh2 x))
-> target (TKS2 ((++) @Natural sh1 sh2) x)
sunNest (target
   (TKS2
      ((':)
         @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
      (TKS2
         ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
 -> target
      (TKS2
         ((++)
            @Natural
            ((':)
               @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
         (TKScalar r)))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
-> target
     (TKS2
        ((++)
           @Natural
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
        (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target
  (TKProduct
     TKUnit
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
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
      TKUnit
      (TKS2
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         (TKS2
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
 -> target
      (TKS2
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         (TKS2
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
forall a b. (a -> b) -> a -> b
$ SingletonTK
  (TKProduct
     TKUnit
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> PrimalOf
     target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
forall (y :: TK). SingletonTK y -> PrimalOf target y -> target y
forall (target :: Target) (y :: TK).
BaseTensor target =>
SingletonTK y -> PrimalOf target y -> target y
tfromPrimal SingletonTK
  (TKProduct
     TKUnit
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK (PrimalOf
   target
   (TKProduct
      TKUnit
      (TKS2
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         (TKS2
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
 -> target
      (TKProduct
         TKUnit
         (TKS2
            ((':)
               @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
            (TKS2
               ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))))
-> PrimalOf
     target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
forall a b. (a -> b) -> a -> b
$ PrimalOf target TKUnit
-> PrimalOf
     target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
-> PrimalOf
     target
     (TKProduct
        TKUnit
        (TKS2
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           (TKS2
              ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
forall (x :: TK) (z :: TK).
PrimalOf target x
-> PrimalOf target z -> PrimalOf target (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair PrimalOf target TKUnit
forall (target :: Target). BaseTensor target => target TKUnit
tunit (target
  (TKS2
     ((':)
        @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
     (TKS2
        ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
-> PrimalOf
     target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart (target
   (TKS2
      ((':)
         @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
      (TKS2
         ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
 -> PrimalOf
      target
      (TKS2
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         (TKS2
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
-> PrimalOf
     target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
forall a b. (a -> b) -> a -> b
$ ShS
  ((':)
     @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
-> target
     (TKS2
        ((++)
           @Natural
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
        (TKScalar r))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
forall (sh1 :: [Natural]) (sh2 :: [Natural]) (x :: TK).
(KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
snest (forall (sh :: [Natural]). KnownShS sh => ShS sh
knownShS @[5,12,11])
             (target
   (TKS2
      ((++)
         @Natural
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
      (TKScalar r))
 -> target
      (TKS2
         ((':)
            @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
         (TKS2
            ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r))))
-> target
     (TKS2
        ((++)
           @Natural
           ((':)
              @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))))
        (TKScalar r))
-> target
     (TKS2
        ((':)
           @Natural 5 ((':) @Natural 12 ((':) @Natural 11 ('[] @Natural))))
        (TKS2
           ((':) @Natural 9 ((':) @Natural 4 ('[] @Natural))) (TKScalar r)))
forall a b. (a -> b) -> a -> b
$ forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 ('[] @Natural) x) -> target (TKS2 sh x)
sreplicate0N @[5,12,11,9,4] (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v))) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001) IntOf target
-> IxS ('[] @Natural) (IntOf target)
-> IxSOf target ((':) @Natural k ('[] @Natural))
forall {sh1 :: [Natural]} {i} (n :: Natural) (sh :: [Natural]).
(KnownNat n,
 ((':) @Natural n sh :: [Natural]) ~ (sh1 :: [Natural])) =>
i -> IxS sh i -> IxS sh1 i
:.$ IxS ('[] @Natural) (IntOf target)
forall (sh :: [Natural]) i.
((sh :: [Natural]) ~ ('[] @Natural :: [Natural])) =>
IxS sh i
ZIS))
           -- index out of bounds; also fine
-- TODO:        (sunNest @_ @'[] @sh $ tlet (snest (knownShS @'[]) $ (sfromPrimal ix - sfloor (ssum0 v) - srepl 10001) `remH` srepl 2) $ \rr -> snest (knownShS @'[]) $ sqrt $ abs $ sindex v (ShapedList.singletonIndex (ifH (signum (sprimalPart (sunNest rr)) ==. negate (signum $ srepl 2)) (sprimalPart (sunNest rr) + srepl 2) (sprimalPart (sunNest rr)))))
        (forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh1, KnownShS sh2, KnownSTK x) =>
target (TKS2 sh1 (TKS2 sh2 x))
-> target (TKS2 ((++) @Natural sh1 sh2) x)
sunNest @_ @'[] @sh (target (TKS2 ('[] @Natural) (TKS sh r))
 -> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r)))
-> target (TKS2 ('[] @Natural) (TKS sh r))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKS ('[] @Natural) Int64)
-> (target (TKS ('[] @Natural) Int64)
    -> target (TKS2 ('[] @Natural) (TKS sh r)))
-> target (TKS2 ('[] @Natural) (TKS sh r))
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet ((PrimalOf target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(BaseTensor target, KnownShS sh, KnownSTK x) =>
PrimalOf target (TKS2 sh x) -> target (TKS2 sh x)
sfromPrimal PrimalOf target (TKS ('[] @Natural) Int64)
ix target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- target (TKS ('[] @Natural) r) -> target (TKS ('[] @Natural) Int64)
forall r r2 (target :: Target) (sh :: [Natural]).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKS sh r) -> target (TKS sh r2)
sfloor (target (TKS ((':) @Natural k sh) r)
-> target (TKS ('[] @Natural) r)
forall (sh :: [Natural]) (x :: TK) (target :: Target).
(KnownShS sh, KnownSTK x, BaseTensor target) =>
target (TKS2 sh x) -> target (TKS2 ('[] @Natural) x)
ssum0 target (TKS ((':) @Natural k sh) r)
v) target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
- Int64 -> target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
10001) target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
-> target (TKS ('[] @Natural) Int64)
forall a. IntegralH a => a -> a -> a
`remH` Int64 -> target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2) ((target (TKS ('[] @Natural) Int64)
  -> target (TKS2 ('[] @Natural) (TKS sh r)))
 -> target (TKS2 ('[] @Natural) (TKS sh r)))
-> (target (TKS ('[] @Natural) Int64)
    -> target (TKS2 ('[] @Natural) (TKS sh r)))
-> target (TKS2 ('[] @Natural) (TKS sh r))
forall a b. (a -> b) -> a -> b
$ \target (TKS ('[] @Natural) Int64)
rr -> ShS ('[] @Natural)
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ('[] @Natural) (TKS sh r))
forall (sh1 :: [Natural]) (sh2 :: [Natural]) (x :: TK).
(KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
forall (target :: Target) (sh1 :: [Natural]) (sh2 :: [Natural])
       (x :: TK).
(ConvertTensor target, KnownShS sh2, KnownSTK x) =>
ShS sh1
-> target (TKS2 ((++) @Natural sh1 sh2) x)
-> target (TKS2 sh1 (TKS2 sh2 x))
snest (forall (sh :: [Natural]). KnownShS sh => ShS sh
knownShS @'[]) (target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
 -> target (TKS2 ('[] @Natural) (TKS sh r)))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ('[] @Natural) (TKS sh r))
forall a b. (a -> b) -> a -> b
$ target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
forall a. Floating a => a -> a
sqrt (target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
 -> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r)))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
forall a. Num a => a -> a
abs (target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
 -> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r)))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
-> target (TKS2 ((++) @Natural ('[] @Natural) sh) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
-> IxSOf target ((':) @Natural k ('[] @Natural))
-> target (TKS sh r)
forall (shm :: [Natural]) (shn :: [Natural]) (x :: TK)
       (target :: Target).
(KnownShS shm, KnownShS shn, KnownSTK x, BaseTensor target) =>
target (TKS2 ((++) @Natural shm shn) x)
-> IxSOf target shm -> target (TKS2 shn x)
sindex target (TKS ((':) @Natural k sh) r)
target
  (TKS2
     ((++) @Natural ((':) @Natural k ('[] @Natural)) sh) (TKScalar r))
v ((PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target
forall r.
GoodScalar r =>
PrimalOf target (TKS ('[] @Natural) r)
-> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKS ('[] @Natural) r) -> target (TKScalar r)
kfromS (PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target)
-> PrimalOf target (TKS ('[] @Natural) Int64) -> IntOf target
forall a b. (a -> b) -> a -> b
$ BoolOf (PrimalOf target)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart target (TKS ('[] @Natural) Int64)
rr) PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). EqH f y => f y -> f y -> BoolOf f
==. PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
negate (PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a
signum (PrimalOf target (TKS ('[] @Natural) Int64)
 -> PrimalOf target (TKS ('[] @Natural) Int64))
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a b. (a -> b) -> a -> b
$ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2)) (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart target (TKS ('[] @Natural) Int64)
rr PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall a. Num a => a -> a -> a
+ Int64 -> PrimalOf target (TKS ('[] @Natural) Int64)
forall (sh :: [Natural]) r (target :: Target).
(KnownShS sh, GoodScalar r, BaseTensor target) =>
r -> target (TKS sh r)
srepl Int64
2) (target (TKS ('[] @Natural) Int64)
-> PrimalOf target (TKS ('[] @Natural) Int64)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
BaseTensor target =>
target (TKS2 sh x) -> PrimalOf target (TKS2 sh x)
sprimalPart target (TKS ('[] @Natural) Int64)
rr)) IntOf target
-> IxS ('[] @Natural) (IntOf target)
-> IxSOf target ((':) @Natural k ('[] @Natural))
forall {sh1 :: [Natural]} {i} (n :: Natural) (sh :: [Natural]).
(KnownNat n,
 ((':) @Natural n sh :: [Natural]) ~ (sh1 :: [Natural])) =>
i -> IxS sh i -> IxS sh1 i
:.$ IxS ('[] @Natural) (IntOf target)
forall (sh :: [Natural]) i.
((sh :: [Natural]) ~ ('[] @Natural :: [Natural])) =>
IxS sh i
ZIS))

testFooBuildNest21S :: Assertion
testFooBuildNest21S :: Assertion
testFooBuildNest21S =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
0.2886751345948129,Double
Item [Double]
0.35355339059327373])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @1 (forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuildNest2S @2 @'[] (f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
 -> f (TKR2 1 (TKScalar Double)))
-> (f (TKR2 1 (TKScalar Double))
    -> f (TKS ((':) @Natural 2 ('[] @Natural)) Double))
-> f (TKR2 1 (TKScalar Double))
-> f (TKR2 1 (TKScalar Double))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR2 1 (TKScalar Double))
-> f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
f (TKR2
     (Rank @Natural ((':) @Natural 2 ('[] @Natural))) (TKScalar Double))
-> f (TKS ((':) @Natural 2 ('[] @Natural)) Double)
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Natural sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
2] [Double
Item [Double]
3.0,Double
Item [Double]
2.0]))

testFooBuildNest25S :: Assertion
testFooBuildNest25S :: Assertion
testFooBuildNest25S =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
0.22360679774997896,Double
Item [Double]
0.35355339059327373,Double
Item [Double]
0.20412414523193154,Double
Item [Double]
0.5,-Double
0.35355339059327373,Double
Item [Double]
500.0,Double
Item [Double]
1.5811388300841895,-Double
1.118033988749895,Double
Item [Double]
0.1381447409988844,Double
Item [Double]
0.16666666666666666,Double
Item [Double]
0.17677669529663687,-Double
0.25,Double
Item [Double]
8.574929257125441e-2,Double
Item [Double]
0.288948802391873,-Double
8.703882797784893e-2,Double
Item [Double]
9.805806756909202e-2])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 (forall (k :: Natural) (sh :: [Natural]) (target :: Target) r.
(ADReady target, GoodScalar r, KnownNat k,
 Floating (target (TKS sh r)), RealFloat r, KnownShS sh) =>
target (TKS ((':) @Natural k sh) r)
-> target (TKR (1 + Rank @Natural sh) r)
fooBuildNest2S @2 @[2, 1, 2, 2] (f (TKS2
      ((':)
         @Natural
         2
         ((':)
            @Natural
            2
            ((':)
               @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
      (TKScalar Double))
 -> f (TKR 5 Double))
-> (f (TKR 5 Double)
    -> f (TKS2
            ((':)
               @Natural
               2
               ((':)
                  @Natural
                  2
                  ((':)
                     @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
            (TKScalar Double)))
-> f (TKR 5 Double)
-> f (TKR 5 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 5 Double)
-> f (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
f (TKR2
     (Rank
        @Natural
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
     (TKScalar Double))
-> f (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
f (TKR2 (Rank @Natural sh) x) -> f (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR) Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuild3 :: forall target r n.
             ( ADReady target, GoodScalar r, KnownNat n, RealFloatH (target (TKR n r)) )
          => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild3 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild3 target (TKR (1 + n) r)
v =
  Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
22 ((PrimalOf target (TKScalar Int64) -> target (TKR n r))
 -> target (TKR (1 + n) r))
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix ->
    (target (TKR n r), target (TKR n r)) -> target (TKR n r)
forall a. RealFloatH a => (a, a) -> a
bar ( IShR n -> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (ShR (n + 1) Int -> IShR n
forall (n :: Natural) i. ShR (n + 1) i -> ShR n i
shrTail (ShR (n + 1) Int -> IShR n) -> ShR (n + 1) Int -> IShR n
forall a b. (a -> b) -> a -> b
$ target (TKR2 (n + 1) (TKScalar r)) -> ShR (n + 1) Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR2 (n + 1) (TKScalar r))
target (TKR (1 + n) r)
v) (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
1)
        , target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64)) -> target (TKR n r)
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)] )  -- index not out of bounds

testFooBuild3 :: Assertion
testFooBuild3 :: Assertion
testFooBuild3 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
423.72976235076516,-Double
260.41676627885636,-Double
17.60047532855961,Double
Item [Double]
151.18955028869385,-Double
1059.9668424433578,-Double
65.00898015327623,-Double
21.49245448729951,Double
Item [Double]
743.7622427949768])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
f (TKR (1 + 4) Double) -> f (TKR (1 + 4) Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild3 Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooBuild5 :: forall target r n.
             ( ADReady target, GoodScalar r, KnownNat n, RealFloatH (target (TKR n r)) )
          => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild5 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild5 target (TKR (1 + n) r)
v =
  let r :: target (TKR n r)
r = target (TKR (1 + n) r) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum target (TKR (1 + n) r)
v
      v' :: target (TKR n r)
v' = IShR n -> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (ShR (n + 1) Int -> IShR n
forall (n :: Natural) i. ShR (n + 1) i -> ShR n i
shrTail (ShR (n + 1) Int -> IShR n) -> ShR (n + 1) Int -> IShR n
forall a b. (a -> b) -> a -> b
$ target (TKR2 (n + 1) (TKScalar r)) -> ShR (n + 1) Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR2 (n + 1) (TKScalar r))
target (TKR (1 + n) r)
v) (target (TKR2 0 (TKScalar r)) -> target (TKR n r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ target (TKR 1 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(BaseTensor target, ConvertTensor target, LetTensor target,
 GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rminimum (target (TKR 1 r) -> target (TKR2 0 (TKScalar r)))
-> target (TKR 1 r) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r) -> target (TKR 1 r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 1 x)
rflatten target (TKR (1 + n) r)
v
  in Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((PrimalOf target (TKScalar Int64) -> target (TKR n r))
 -> target (TKR (1 + n) r))
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix ->
       target (TKR n r)
r target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* (target (TKR n r), target (TKR n r), target (TKR n r))
-> target (TKR n r)
forall a. RealFloatH a => (a, a, a) -> a
foo ( IShR n -> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (ShR (n + 1) Int -> IShR n
forall (n :: Natural) i. ShR (n + 1) i -> ShR n i
shrTail (ShR (n + 1) Int -> IShR n) -> ShR (n + 1) Int -> IShR n
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r) -> IShR (1 + n)
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR (1 + n) r)
v) (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
3)
               , IShR n -> r -> target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl (target (TKR n r) -> IShR n
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR n r)
r) r
5 target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* target (TKR n r)
r
               , target (TKR n r)
r target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* target (TKR n r)
v')
       target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
+ (target (TKR n r), target (TKR n r)) -> target (TKR n r)
forall a. RealFloatH a => (a, a) -> a
bar (target (TKR n r)
r, target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64)) -> target (TKR n r)
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)])  -- index not out of bounds

testFooBuildDt :: Assertion
testFooBuildDt :: Assertion
testFooBuildDt =
  Rational
-> Concrete (TKR (1 + 4) Double)
-> Concrete (TKR (1 + 4) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-5
    (Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double)
forall r (target :: Target) (n :: Natural).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double))
-> Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double)
forall a b. (a -> b) -> a -> b
$ IShR (1 + 4) -> [Double] -> Ranked (1 + 4) Double
forall a (n :: Natural). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
1,Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
2] [Double
Item [Double]
1.1033568028244503e7,Double
Item [Double]
74274.22833989389,-Double
5323238.2765011545,Double
Item [Double]
253074.03394016018,Double
Item [Double]
4.14744804041263e7,Double
Item [Double]
242643.98750578283,-Double
1.922371592087736e7,Double
Item [Double]
2.730274503834733e7,Double
Item [Double]
1.135709425204681e7,Double
Item [Double]
6924.195066252549,-Double
5345004.080027547,Double
Item [Double]
255679.51406100337,Double
Item [Double]
3.8870981856703006e7,Double
Item [Double]
241810.92121468345,-Double
1.9380955730171032e7,Double
Item [Double]
2.877024321777493e7])
    (forall src (ztgt :: TK) 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 ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp @_ @(TKR 5 Double)
           AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild5 Concrete (TKR 5 Double)
Value (AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16 (IShR 5 -> Concrete (TKR 0 Double) -> Concrete (TKR 5 Double)
forall (n :: Natural) (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)
2, Int
Item (IShR 5)
2, Int
Item (IShR 5)
1, Int
Item (IShR 5)
2, Int
Item (IShR 5)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
42)))

testFooBuildDt2 :: Assertion
testFooBuildDt2 :: Assertion
testFooBuildDt2 =
  Rational
-> Concrete (TKR (1 + 4) Double)
-> Concrete (TKR (1 + 4) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-5
    (Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double)
forall r (target :: Target) (n :: Natural).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double))
-> Ranked (1 + 4) Double -> Concrete (TKR (1 + 4) Double)
forall a b. (a -> b) -> a -> b
$ IShR (1 + 4) -> [Double] -> Ranked (1 + 4) Double
forall a (n :: Natural). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
1,Int
Item (IShR (1 + 4))
2,Int
Item (IShR (1 + 4))
2] [Double
Item [Double]
2.206713605648901e7,Double
Item [Double]
148548.45667978778,-Double
1.0646476553002307e7,Double
Item [Double]
506148.0678803204,Double
Item [Double]
8.294896080825263e7,Double
Item [Double]
485287.9750115657,-Double
3.844743184175473e7,Double
Item [Double]
5.460549007669466e7,Double
Item [Double]
2.271418850409362e7,Double
Item [Double]
13848.390132505112,-Double
1.0690008160055092e7,Double
Item [Double]
511359.0281220066,Double
Item [Double]
7.774196371340603e7,Double
Item [Double]
483621.8424293669,-Double
3.876191146034207e7,Double
Item [Double]
5.754048643554987e7])
    (forall src (ztgt :: TK) 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 ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp @_ @(TKProduct (TKR 5 Double) (TKR 5 Double))
           (\AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
x -> let y :: AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
y = AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild5 AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
x in AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor
     AstMethodLet FullSpan (TKProduct (TKR 5 Double) (TKR 5 Double))
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z
-> AstTensor AstMethodLet FullSpan (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair AstTensor AstMethodLet FullSpan (TKR 5 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
y AstTensor AstMethodLet FullSpan (TKR 5 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
y) Concrete (TKR 5 Double)
Value (AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16 (let dt :: Concrete (TKR 5 Double)
dt = IShR 5 -> Concrete (TKR 0 Double) -> Concrete (TKR 5 Double)
forall (n :: Natural) (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)
2, Int
Item (IShR 5)
2, Int
Item (IShR 5)
1, Int
Item (IShR 5)
2, Int
Item (IShR 5)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
42) in Concrete (TKR 5 Double)
-> Concrete (TKR 5 Double)
-> Concrete (TKProduct (TKR 5 Double) (TKR 5 Double))
forall (x :: TK) (z :: TK).
Concrete x -> Concrete z -> Concrete (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair Concrete (TKR 5 Double)
dt Concrete (TKR 5 Double)
dt))

testFooBuild5 :: Assertion
testFooBuild5 :: Assertion
testFooBuild5 =
  Rational
-> Concrete (TKR2 7 (TKScalar Double))
-> ((Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))),
    (Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 7 -> [Double] -> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [-Double
613291.6547530327,Double
Item [Double]
571164.2201603781,-Double
1338602.6247083102,Double
Item [Double]
528876.2566682736,Double
Item [Double]
1699442.2143691683,Double
Item [Double]
2874891.369778316,-Double
3456754.605470273,Double
Item [Double]
3239487.8744244366,Double
Item [Double]
554916.1344235454,-Double
775449.1803684114,Double
Item [Double]
3072.200583200206,Double
Item [Double]
1165767.8436804386,-Double
1.0686356667942494e7,-Double
6606976.194539241,-Double
6457671.748790982,Double
Item [Double]
4791868.42112978,-Double
615556.7946425928,Double
Item [Double]
569660.3506343022,-Double
1348678.1169100606,Double
Item [Double]
534886.9366492515,Double
Item [Double]
1696036.143341285,Double
Item [Double]
2883992.9672165257,-Double
3456212.5353846983,Double
Item [Double]
3240296.690514803,Double
Item [Double]
629047.8398075115,-Double
794389.5797803313,-Double
1143.8025173051583,Double
Item [Double]
1177448.8083517442,-Double
1.15145721735623e7,-Double
6618648.839812404,-Double
6462386.031613377,Double
Item [Double]
5358224.852822481,-Double
613291.6547530327,Double
Item [Double]
571164.2201603781,-Double
1338602.6247083102,Double
Item [Double]
528876.2566682736,Double
Item [Double]
1699442.2143691683,Double
Item [Double]
2874891.369778316,-Double
3456754.605470273,Double
Item [Double]
3239487.8744244366,Double
Item [Double]
554916.1344235454,-Double
775449.1803684114,Double
Item [Double]
3072.200583200206,Double
Item [Double]
1165767.8436804386,-Double
1.0686356667942494e7,-Double
6606976.194539241,-Double
6457671.748790982,Double
Item [Double]
4791868.42112978])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @7 f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
f (TKR (1 + 6) Double) -> f (TKR (1 + 6) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild5 Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48)

fooBuild1 :: forall target r n.
             ( ADReady target, GoodScalar r, KnownNat n, RealFloatH (target (TKR n r)) )
          => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild1 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild1 target (TKR (1 + n) r)
v =
  let r :: target (TKR n r)
r = target (TKR (1 + n) r) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum target (TKR (1 + n) r)
v
      tk :: target (TKR2 0 (TKScalar r)) -> target (TKR n r)
tk = IShR n -> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (ShR (n + 1) Int -> IShR n
forall (n :: Natural) i. ShR (n + 1) i -> ShR n i
shrTail (ShR (n + 1) Int -> IShR n) -> ShR (n + 1) Int -> IShR n
forall a b. (a -> b) -> a -> b
$ target (TKR2 (n + 1) (TKScalar r)) -> ShR (n + 1) Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR2 (n + 1) (TKScalar r))
target (TKR (1 + n) r)
v)
      v' :: target (TKR n r)
v' = target (TKR2 0 (TKScalar r)) -> target (TKR n r)
tk (target (TKR2 0 (TKScalar r)) -> target (TKR n r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ target (TKR 1 r) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(BaseTensor target, ConvertTensor target, LetTensor target,
 GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rminimum (target (TKR 1 r) -> target (TKR2 0 (TKScalar r)))
-> target (TKR 1 r) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r) -> target (TKR 1 r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 1 x)
rflatten target (TKR (1 + n) r)
v
  in Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 ((PrimalOf target (TKScalar Int64) -> target (TKR n r))
 -> target (TKR (1 + n) r))
-> (PrimalOf target (TKScalar Int64) -> target (TKR n r))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix ->
       target (TKR n r)
r target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* (target (TKR n r), target (TKR n r), target (TKR n r))
-> target (TKR n r)
forall a. RealFloatH a => (a, a, a) -> a
foo ( target (TKR2 0 (TKScalar r)) -> target (TKR n r)
tk (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
3)
               , target (TKR2 0 (TKScalar r)) -> target (TKR n r)
tk (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
5) target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* target (TKR n r)
r
               , target (TKR n r)
r target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
* target (TKR n r)
v')
       target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
+ (target (TKR n r), target (TKR n r)) -> target (TKR n r)
forall a. RealFloatH a => (a, a) -> a
bar (target (TKR n r)
r, target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64)) -> target (TKR n r)
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)])

testFooBuild1 :: Assertion
testFooBuild1 :: Assertion
testFooBuild1 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-8
    (IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
394056.00100873224,Double
Item [Double]
2652.651012139068,-Double
190115.65273218407,Double
Item [Double]
9038.358355005721,Double
Item [Double]
1481231.4430045108,Double
Item [Double]
8665.8566966351,-Double
686561.2828884773,Double
Item [Double]
975098.0370838332,Double
Item [Double]
405610.50900167174,Double
Item [Double]
247.29268093759174,-Double
190893.00285812665,Double
Item [Double]
9131.411216464405,Double
Item [Double]
1388249.3520251075,Double
Item [Double]
8636.104329095837,-Double
692176.9903632513,Double
Item [Double]
1027508.6863491047])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
f (TKR (1 + 4) Double) -> f (TKR (1 + 4) Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild1 Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

fooMap1 :: (ADReady target, GoodScalar r, KnownNat n, Differentiable r)
        => IShR (1 + n) -> target (TKR 0 r) -> target (TKR (1 + n) r)
fooMap1 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
IShR (1 + n) -> target (TKR 0 r) -> target (TKR (1 + n) r)
fooMap1 IShR (1 + n)
sh target (TKR2 0 (TKScalar r))
r =
  let v :: target (TKR2 (1 + n) (TKScalar r))
v = target (TKR2 (1 + n) (TKScalar r))
-> target (TKR2 (1 + n) (TKScalar r))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild1 (target (TKR2 (1 + n) (TKScalar r))
 -> target (TKR2 (1 + n) (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
-> target (TKR2 (1 + n) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ IShR (1 + n)
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 (1 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N IShR (1 + n)
sh (target (TKR2 0 (TKScalar r))
r target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* target (TKR2 0 (TKScalar r))
r)
  in (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
-> target (TKR2 (1 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (\target (TKR2 0 (TKScalar r))
x -> target (TKR2 0 (TKScalar r))
x target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* target (TKR2 0 (TKScalar r))
r target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
+ r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
5) target (TKR2 (1 + n) (TKScalar r))
v

testFooMap :: Assertion
testFooMap :: Assertion
testFooMap =
  Rational
-> Concrete (TKR2 0 (TKScalar Float))
-> ((Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     AstTensor AstMethodLet PrimalSpan (TKR 1 Float),
     AstTensor AstMethodLet PrimalSpan (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float))),
    (Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     AstTensor AstMethodLet PrimalSpan (TKR 1 Float),
     AstTensor AstMethodLet PrimalSpan (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)), Concrete (TKR 1 Float),
     Concrete (TKR 1 Float), Concrete (TKR 1 Float),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float)),
     Concrete (TKR2 0 (TKScalar Float))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-3
    (Float -> Concrete (TKR2 0 (TKScalar Float))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Float
2.7518227)
    (forall r (m :: Natural) (n :: Natural) 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' @Float @1 (IShR (1 + 0)
-> f (TKR2 0 (TKScalar Float)) -> f (TKR (1 + 0) Float)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
IShR (1 + n) -> target (TKR 0 r) -> target (TKR (1 + n) r)
fooMap1 [Int
Item (IShR 1)
130]) (Float -> Concrete (TKR2 0 (TKScalar Float))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Float
0.1))

-- Reduced test, because this takes forever with Ast but without vectorization.
testFooMap1 :: Assertion
testFooMap1 :: Assertion
testFooMap1 =
  Rational
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-6
    (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3901.312463734578)
    ((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 (forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR @_ @Double (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
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @7 (AstTensor AstMethodLet FullSpan (TKR2 7 (TKScalar Double))
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 0 Double)
    -> AstTensor AstMethodLet FullSpan (TKR2 7 (TKScalar Double)))
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IShR (1 + 6)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
IShR (1 + n) -> target (TKR 0 r) -> target (TKR (1 + n) r)
fooMap1 [Int
Item (IShR 7)
4, Int
Item (IShR 7)
3, Int
Item (IShR 7)
2, Int
Item (IShR 7)
3, Int
Item (IShR 7)
4, Int
Item (IShR 7)
5, Int
Item (IShR 7)
3]) (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.1))

fooNoGo :: forall target r n.
           ( ADReady target, GoodScalar r, KnownNat n, Differentiable r )
        => target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooNoGo :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooNoGo target (TKR (1 + n) r)
v =
  let r :: target (TKR2 n (TKScalar r))
r = target (TKR (1 + n) r) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum target (TKR (1 + n) r)
v
      r0 :: target (TKR2 0 (TKScalar r))
r0 = target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v
      shTail :: ShR n Int
shTail = ShR (n + 1) Int -> ShR n Int
forall (n :: Natural) i. ShR (n + 1) i -> ShR n i
shrTail (target (TKR2 (n + 1) (TKScalar r)) -> ShR (n + 1) Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR2 (n + 1) (TKScalar r))
target (TKR (1 + n) r)
v)
  in Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 (\PrimalOf target (TKScalar Int64)
ix ->
       (target (TKR2 n (TKScalar r)), target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r))
forall a. RealFloatH a => (a, a) -> a
bar ( ShR n Int
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N ShR n Int
shTail (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
3.14)
           , (target (TKR2 n (TKScalar r)), target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r))
forall a. RealFloatH a => (a, a) -> a
bar ( ShR n Int -> r -> target (TKR2 n (TKScalar r))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl ShR n Int
shTail r
3.14
                 , target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v [Item (IxR 1 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix]) )
       target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall a. Num a => a -> a -> a
+ BoolOf target
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (target (TKR (1 + n) r)
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR (1 + n) r)
v (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* PrimalOf target (TKScalar Int64)
2 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64))
-> IxR 1 (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR) target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r)) -> BoolOf target
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. ShR n Int
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N ShR n Int
shTail (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0) BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKScalar Int64)
6 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>. PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a
abs PrimalOf target (TKScalar Int64)
ix)
               target (TKR2 n (TKScalar r))
r (ShR n Int
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N ShR n Int
shTail (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
5) target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall a. Num a => a -> a -> a
* target (TKR2 n (TKScalar r))
r))
     target (TKR (1 + n) r)
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall a. Fractional a => a -> a -> a
/ Int -> Int -> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
Int -> Int -> target (TKR2 (1 + n) x) -> target (TKR2 (1 + n) x)
rslice Int
1 Int
3 ((target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (\target (TKR2 0 (TKScalar r))
x -> BoolOf target
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (target (TKR2 0 (TKScalar r))
x target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> BoolOf target
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>. target (TKR2 0 (TKScalar r))
r0) target (TKR2 0 (TKScalar r))
r0 target (TKR2 0 (TKScalar r))
x) target (TKR (1 + n) r)
v)
     target (TKR (1 + n) r)
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall a. Num a => a -> a -> a
* Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 (target (TKR2 n (TKScalar r))
-> PrimalOf target (TKScalar Int64) -> target (TKR2 n (TKScalar r))
forall a b. a -> b -> a
const (target (TKR2 n (TKScalar r))
 -> PrimalOf target (TKScalar Int64)
 -> target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r))
-> PrimalOf target (TKScalar Int64)
-> target (TKR2 n (TKScalar r))
forall a b. (a -> b) -> a -> b
$ ShR n Int -> r -> target (TKR2 n (TKScalar r))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl ShR n Int
shTail r
1)

testFooNoGo :: Assertion
testFooNoGo :: Assertion
testFooNoGo =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-6
   (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
5] [Double
Item [Double]
344.3405885672822,-Double
396.1811403813819,Double
Item [Double]
7.735358041386672,-Double
0.8403418295960372,Double
Item [Double]
5.037878787878787])
   (forall r (m :: Natural) (n :: Natural) 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' @Double @1 f (TKR2 1 (TKScalar Double)) -> f (TKR2 1 (TKScalar Double))
f (TKR (1 + 0) Double) -> f (TKR (1 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR2 1 (TKScalar Double))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooNoGo
         (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
5] [Double
1.1 :: Double, Double
Item [Double]
2.2, Double
Item [Double]
3.3, Double
Item [Double]
4, Double
Item [Double]
5]))

testFooNoGo10 :: Assertion
testFooNoGo10 :: Assertion
testFooNoGo10 =
  Rational
-> Concrete (TKR (1 + 7) Double)
-> Concrete (TKR (1 + 7) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
    (IShR (1 + 7) -> [Double] -> Concrete (TKR (1 + 7) Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR (1 + 7))
5, Int
Item (IShR (1 + 7))
3, Int
Item (IShR (1 + 7))
1, Int
Item (IShR (1 + 7))
2, Int
Item (IShR (1 + 7))
2, Int
Item (IShR (1 + 7))
1, Int
Item (IShR (1 + 7))
2, Int
Item (IShR (1 + 7))
2] [Double
Item [Double]
8.096867407436072e-8,Double
Item [Double]
9.973025492756426e-8,Double
Item [Double]
9.976696178938985e-8,Double
Item [Double]
5.614458707681111e-8,-Double
1.8338500573636686e-7,-Double
2.144970334428336e-7,Double
Item [Double]
7.354143606421902e-7,-Double
1.8140041785503643e-7,Double
Item [Double]
8.096867407436072e-8,Double
Item [Double]
9.973025492756426e-8,Double
Item [Double]
9.976696178938985e-8,Double
Item [Double]
5.614458707681111e-8,-Double
2.01381292700262e-7,-Double
2.221588091014473e-7,Double
Item [Double]
7.354143606421902e-7,-Double
1.9951065225263367e-7,Double
Item [Double]
1.7230532848112822e-7,Double
Item [Double]
4.5426218104870796e-7,Double
Item [Double]
1.430886696893587e-7,Double
Item [Double]
9.354993295163118e-7,-Double
5.225515010723883e-7,Double
Item [Double]
1.019433073376504e-6,Double
Item [Double]
9.64067025472343e-6,-Double
4.872227980305747e-6,Double
Item [Double]
8.089200625992941e-8,Double
Item [Double]
9.924319994964371e-8,Double
Item [Double]
1.092480101004153e-7,-Double
2.8478802468285825e-7,Double
Item [Double]
9.641049518625974e-8,Double
Item [Double]
2.9624147815716037e-7,-Double
1.950868158558337e-7,Double
Item [Double]
9.547754822865364e-8,Double
Item [Double]
4.5426218104870796e-7,Double
Item [Double]
4.5426218104870796e-7,Double
Item [Double]
4.5426218104870796e-7,Double
Item [Double]
4.5426218104870796e-7,-Double
4.872227980305747e-6,-Double
4.872227980305747e-6,-Double
4.872227980305747e-6,-Double
4.872227980305747e-6,Double
Item [Double]
9.361277121832246e-8,-Double
4.872227980305747e-6,-Double
4.872227980305747e-6,-Double
4.872227980305747e-6,Double
Item [Double]
9.361277121832246e-8,Double
Item [Double]
9.361277121832246e-8,Double
Item [Double]
9.361277121832246e-8,Double
Item [Double]
9.361277121832246e-8,-Double
5.488572216677945e-7,-Double
1.8496203182958057e-7,-Double
1.4603644180845103e-7,-Double
1.2145268106051633e-7,-Double
2.817402689957553e-7,-Double
2.9913537180597976e-7,Double
Item [Double]
6.272804203945257e-7,-Double
2.3697344464172694e-7,-Double
5.488572216677945e-7,-Double
1.8496203182958057e-7,-Double
1.4603644180845103e-7,-Double
1.2145268106051633e-7,-Double
2.613973017956691e-7,-Double
3.0013408634207794e-7,Double
Item [Double]
6.272804203945257e-7,-Double
2.916736028401805e-7,-Double
7.0114505846358575e-6,-Double
4.303381366239431e-5,-Double
4.897282418246382e-6,-Double
1.710952247892854e-4,-Double
4.2040039667393255e-5,-Double
2.0204742564752248e-4,-Double
1.7017980671040968e-2,-Double
4.247008401789142e-3,-Double
1.056090348050961e-6,-Double
2.210187184450231e-6,-Double
2.7842041329045203e-6,-Double
1.0402806498987974e-5,-Double
1.2967382896879757e-7,-Double
1.9315601705070884e-5,-Double
2.40087090725031e-7,-Double
2.4419692405172046e-7,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
2.683138631810477e-7,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
5.488572216677945e-7,-Double
1.8496203182958057e-7,-Double
1.4603644180845103e-7,-Double
1.2145268106051633e-7,-Double
2.817402689957553e-7,-Double
2.9913537180597976e-7,Double
Item [Double]
6.272804203945257e-7,-Double
2.3697344464172694e-7,-Double
5.488572216677945e-7,-Double
1.8496203182958057e-7,-Double
1.4603644180845103e-7,-Double
1.2145268106051633e-7,-Double
2.613973017956691e-7,-Double
3.0013408634207794e-7,Double
Item [Double]
6.272804203945257e-7,-Double
2.916736028401805e-7,-Double
7.0114505846358575e-6,-Double
4.303381366239431e-5,-Double
4.897282418246382e-6,-Double
1.710952247892854e-4,-Double
4.2040039667393255e-5,-Double
2.0204742564752248e-4,-Double
1.7017980671040968e-2,-Double
4.247008401789142e-3,-Double
1.056090348050961e-6,-Double
2.210187184450231e-6,-Double
2.7842041329045203e-6,-Double
1.0402806498987974e-5,-Double
1.2967382896879757e-7,-Double
1.9315601705070884e-5,-Double
2.40087090725031e-7,-Double
2.4419692405172046e-7,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.303381366239431e-5,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
2.683138631810477e-7,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
4.247008401789142e-3,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
2.683138631810477e-7,-Double
5.469529675653596e-7,-Double
2.331458950045675e-7,-Double
1.9907443163522408e-7,-Double
1.4019078434680374e-7,-Double
6.95091094132346e-8,-Double
5.685763846730528e-8,-Double
9.268594848659335e-8,-Double
3.010367762029461e-8,-Double
5.469529675653596e-7,-Double
2.331458950045675e-7,-Double
1.9907443163522408e-7,-Double
1.4019078434680374e-7,-Double
3.415394012988984e-8,-Double
5.069973314807702e-8,-Double
9.268594848659335e-8,-Double
6.380451815099858e-8,-Double
6.883755913116986e-6,-Double
4.273807584344302e-5,-Double
4.79037108793574e-6,-Double
1.705307241188017e-4,-Double
4.2267488166320864e-5,-Double
2.0143642393829028e-4,-Double
1.701262134129569e-2,-Double
4.2496361738088365e-3,-Double
1.0224785375169973e-6,-Double
2.1427637177332083e-6,-Double
2.705952143004936e-6,-Double
1.0493018474305117e-5,-Double
1.819666770962338e-7,-Double
1.911089472080586e-5,-Double
9.045482032374276e-8,-Double
2.819821645880664e-7,-Double
4.273807584344302e-5,-Double
4.273807584344302e-5,-Double
4.273807584344302e-5,-Double
4.273807584344302e-5,-Double
4.2496361738088365e-3,-Double
4.2496361738088365e-3,-Double
4.2496361738088365e-3,-Double
4.2496361738088365e-3,-Double
3.019273543907303e-7,-Double
4.2496361738088365e-3,-Double
4.2496361738088365e-3,-Double
4.2496361738088365e-3,-Double
3.019273543907303e-7,-Double
3.019273543907303e-7,-Double
3.019273543907303e-7,-Double
3.019273543907303e-7,Double
Item [Double]
8.287292817679557e-8,Double
Item [Double]
5.154639175257732e-8,Double
Item [Double]
4.672897196261682e-8,Double
Item [Double]
3.740648379052369e-8,Double
Item [Double]
2.884615384615385e-8,Double
Item [Double]
2.7780699895840894e-8,Double
Item [Double]
1.5447991761071065e-8,Double
Item [Double]
2.546934916639589e-8,Double
Item [Double]
8.287292817679557e-8,Double
Item [Double]
5.154639175257732e-8,Double
Item [Double]
4.672897196261682e-8,Double
Item [Double]
3.740648379052369e-8,Double
Item [Double]
2.5862068965517245e-8,Double
Item [Double]
2.7275544092553562e-8,Double
Item [Double]
1.5447991761071065e-8,Double
Item [Double]
2.8358432436548274e-8,Double
Item [Double]
3.0000000000000004e-7,Double
Item [Double]
7.500000000000001e-7,Double
Item [Double]
2.5000000000000004e-7,Double
Item [Double]
1.5000000000000002e-6,-Double
7.500000000000001e-7,Double
Item [Double]
1.6304347826086957e-6,Double
Item [Double]
1.5000000000000002e-5,-Double
7.500000000000001e-6,Double
Item [Double]
1.1450381679389314e-7,Double
Item [Double]
1.6666666666666668e-7,Double
Item [Double]
1.8750000000000003e-7,-Double
3.7500000000000006e-7,Double
Item [Double]
4.411764705882353e-8,Double
Item [Double]
5.00948462422186e-7,-Double
4.545454545454546e-8,Double
Item [Double]
5.76923076923077e-8,Double
Item [Double]
7.500000000000001e-7,Double
Item [Double]
7.500000000000001e-7,Double
Item [Double]
7.500000000000001e-7,Double
Item [Double]
7.500000000000001e-7,-Double
7.500000000000001e-6,-Double
7.500000000000001e-6,-Double
7.500000000000001e-6,-Double
7.500000000000001e-6,Double
Item [Double]
5.999928000863991e-8,-Double
7.500000000000001e-6,-Double
7.500000000000001e-6,-Double
7.500000000000001e-6,Double
Item [Double]
5.999928000863991e-8,Double
Item [Double]
5.999928000863991e-8,Double
Item [Double]
5.999928000863991e-8,Double
Item [Double]
5.999928000863991e-8])
   ((AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
 -> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR (1 + 7) 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 (forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR @_ @Double (AstTensor AstMethodLet FullSpan (TKR 0 Double)
 -> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> (AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
    -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @8 (AstTensor AstMethodLet FullSpan (TKR 8 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
    -> AstTensor AstMethodLet FullSpan (TKR 8 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AstTensor AstMethodLet FullSpan (TKR 0 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR 8 Double)
-> AstTensor AstMethodLet FullSpan (TKR 8 Double)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (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
0.000000001) (AstTensor AstMethodLet FullSpan (TKR 8 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 8 Double))
-> (AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
    -> AstTensor AstMethodLet FullSpan (TKR 8 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
-> AstTensor AstMethodLet FullSpan (TKR 8 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
-> AstTensor AstMethodLet FullSpan (TKR 8 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 7) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooNoGo) ((Concrete (TKR 0 Double) -> Concrete (TKR 0 Double))
-> Concrete (TKR 8 Double) -> Concrete (TKR 8 Double)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (Concrete (TKR 0 Double)
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.01) (Concrete (TKR 8 Double) -> Concrete (TKR 8 Double))
-> Concrete (TKR 8 Double) -> Concrete (TKR 8 Double)
forall a b. (a -> b) -> a -> b
$ Int
-> Concrete (TKR2 7 (TKScalar Double))
-> Concrete (TKR (1 + 7) Double)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
5 Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48))

nestedBuildMap :: forall target n r.
                  (ADReady target, GoodScalar r, n <= 6, KnownNat n, Differentiable r)
               => target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap :: forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap target (TKR2 0 (TKScalar r))
r =
  let w :: target (TKR2 0 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
w target (TKR2 0 (TKScalar r))
x = IShR 1
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 1)
4] target (TKR2 0 (TKScalar r))
x :: target (TKR 1 r)
      v' :: target (TKR2 (0 + 1) (TKScalar r))
v' = IShR (0 + 1)
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 (0 + 1) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (Int
177 Int -> ShR 0 Int -> IShR (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
ShR n i
ZSR) target (TKR2 0 (TKScalar r))
r
      nestedMap :: target (TKR2 0 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
nestedMap target (TKR2 0 (TKScalar r))
x = (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 1 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (target (TKR2 0 (TKScalar r))
x target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Fractional a => a -> a -> a
/) (target (TKR2 0 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
w target (TKR2 0 (TKScalar r))
x)
      variableLengthBuild :: PrimalOf target (TKScalar Int64)
-> target (TKR2 (1 + 0) (TKScalar r))
variableLengthBuild PrimalOf target (TKScalar Int64)
iy = Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
7 (\PrimalOf target (TKScalar Int64)
ix ->
        target (TKR2 ((0 + 1) + 0) (TKScalar r))
-> IxROf target (0 + 1) -> target (TKR2 0 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR2 (0 + 1) (TKScalar r))
target (TKR2 ((0 + 1) + 0) (TKScalar r))
v' (PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
iy PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64)) -> IxROf target (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR))
      doublyBuild :: target (TKR2 (1 + n) (TKScalar r))
doublyBuild =
        Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 (IShR n
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (forall (m :: Natural) (n :: Natural) i.
(KnownNat n, KnownNat m) =>
ShR (m + n) i -> ShR m i
shrTake @n @(6 - n)
                             (ShR (n + (6 - n)) Int -> IShR n)
-> ShR (n + (6 - n)) Int -> IShR n
forall a b. (a -> b) -> a -> b
$ Int
2 Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
-> ShR ((((((0 + 1) + 1) + 1) + 1) + 1) + 1) Int
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: Int
4 Int
-> ShR ((((0 + 1) + 1) + 1) + 1) Int
-> ShR (((((0 + 1) + 1) + 1) + 1) + 1) Int
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int
-> ShR (((0 + 1) + 1) + 1) Int -> ShR ((((0 + 1) + 1) + 1) + 1) Int
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: Int
1 Int -> ShR ((0 + 1) + 1) Int -> ShR (((0 + 1) + 1) + 1) Int
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: Int
3 Int -> IShR (0 + 1) -> ShR ((0 + 1) + 1) Int
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: Int
2 Int -> ShR 0 Int -> IShR (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> ShR n i -> ShR n1 i
:$: ShR 0 Int
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
ShR n i
ZSR)
                   (target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> PrimalOf target (TKScalar Int64)
-> target (TKR2 n (TKScalar r))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 1 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(BaseTensor target, ConvertTensor target, LetTensor target,
 GoodScalar r) =>
target (TKR n r) -> target (TKR 0 r)
rminimum (target (TKR2 1 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 1 (TKScalar r)))
-> PrimalOf target (TKScalar Int64)
-> target (TKR2 0 (TKScalar r))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrimalOf target (TKScalar Int64) -> target (TKR2 1 (TKScalar r))
PrimalOf target (TKScalar Int64)
-> target (TKR2 (1 + 0) (TKScalar r))
variableLengthBuild)
  in (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
-> target (TKR2 (1 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (\target (TKR2 0 (TKScalar r))
x -> target (TKR2 0 (TKScalar r))
x target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* target (TKR2 1 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0
                         (Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 (\PrimalOf target (TKScalar Int64)
ix -> (target (TKR2 0 (TKScalar r)), target (TKR2 0 (TKScalar r)))
-> target (TKR2 0 (TKScalar r))
forall a. RealFloatH a => (a, a) -> a
bar (target (TKR2 0 (TKScalar r))
x, target (TKR2 (1 + 0) (TKScalar r))
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR2 (0 + 1) (TKScalar r))
target (TKR2 (1 + 0) (TKScalar r))
v' [Item (IxR 1 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix]))
                          target (TKR2 1 (TKScalar r))
-> target (TKR2 1 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall a. Num a => a -> a -> a
+ target (TKR2 (1 + 0) (TKScalar r))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n,
 RealFloatH (target (TKR n r))) =>
target (TKR (1 + n) r) -> target (TKR (1 + n) r)
fooBuild1 (target (TKR2 0 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
nestedMap target (TKR2 0 (TKScalar r))
x)
                          target (TKR2 1 (TKScalar r))
-> target (TKR2 1 (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall a. Fractional a => a -> a -> a
/ IShR (1 + 0)
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
IShR (1 + n) -> target (TKR 0 r) -> target (TKR (1 + n) r)
fooMap1 [Int
Item (IShR 1)
3] target (TKR2 0 (TKScalar r))
x)
            ) target (TKR2 (1 + n) (TKScalar r))
doublyBuild

testNestedBuildMap1 :: Assertion
testNestedBuildMap1 :: Assertion
testNestedBuildMap1 =
  Rational
-> Concrete (TKR 0 Double)
-> ((Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), 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 (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double)),
    (Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), 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 (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double),
     Concrete (TKR 0 Double), Concrete (TKR 0 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-8
    (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
22.673212907588812)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @1 f (TKR 0 Double) -> f (TKR2 1 (TKScalar Double))
f (TKR 0 Double) -> f (TKR (1 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR2 1 (TKScalar Double))
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.6))

testNestedBuildMap10 :: Assertion
testNestedBuildMap10 :: Assertion
testNestedBuildMap10 =
  Rational
-> [Concrete (TKR 0 Double)]
-> [Concrete (TKR 0 Double)]
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
    ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257, Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257, Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257])
    ((Concrete (TKR 0 Double) -> Concrete (TKR 0 Double))
-> [Concrete (TKR 0 Double)] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map ((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
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @1 @(TKScalar Double) (ADVal Concrete (TKR2 1 (TKScalar Double))
 -> ADVal Concrete (TKR 0 Double))
-> (ADVal Concrete (TKR 0 Double)
    -> ADVal Concrete (TKR2 1 (TKScalar 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 (TKR2 1 (TKScalar Double))
ADVal Concrete (TKR 0 Double)
-> ADVal Concrete (TKR (1 + 0) Double)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap))
         ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map (Ranked 0 Double -> Concrete (TKR 0 Double)
RepConcrete (TKR 0 Double) -> Concrete (TKR 0 Double)
forall (y :: TK). RepConcrete y -> Concrete y
Concrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> (Double -> Ranked 0 Double) -> Double -> Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar) ([Double] -> [Concrete (TKR 0 Double)])
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> a -> b
$ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1] [Double] -> [Double] -> [Double]
forall a. [a] -> [a] -> [a]
++ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1] [Double] -> [Double] -> [Double]
forall a. [a] -> [a] -> [a]
++ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1]))

testNestedBuildMap11 :: Assertion
testNestedBuildMap11 :: Assertion
testNestedBuildMap11 =
  Rational
-> [Concrete (TKR 0 Double)]
-> [Concrete (TKR 0 Double)]
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-8
    ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar [Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257, Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257, Double
Item [Double]
109.62086996459126,Double
Item [Double]
106.70290239773645,Double
Item [Double]
103.05843225947055,Double
Item [Double]
98.11825678264942,Double
Item [Double]
67.8014491889543,Double
Item [Double]
22.67321290758882,-Double
163.40832575807545,Double
Item [Double]
376.4240286600336,-Double
1996.9068313949347,Double
Item [Double]
249.28292226561257])
    ((Concrete (TKR 0 Double) -> Concrete (TKR 0 Double))
-> [Concrete (TKR 0 Double)] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map ((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 (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
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @1 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR 0 Double)
    -> AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
AstTensor AstMethodLet FullSpan (TKR 0 Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 0) Double)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap))
         ((Double -> Concrete (TKR 0 Double))
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> [a] -> [b]
map (Ranked 0 Double -> Concrete (TKR 0 Double)
RepConcrete (TKR 0 Double) -> Concrete (TKR 0 Double)
forall (y :: TK). RepConcrete y -> Concrete y
Concrete (Ranked 0 Double -> Concrete (TKR 0 Double))
-> (Double -> Ranked 0 Double) -> Double -> Concrete (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Ranked 0 Double
forall a. Elt a => a -> Ranked 0 a
Nested.rscalar) ([Double] -> [Concrete (TKR 0 Double)])
-> [Double] -> [Concrete (TKR 0 Double)]
forall a b. (a -> b) -> a -> b
$ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1] [Double] -> [Double] -> [Double]
forall a. [a] -> [a] -> [a]
++ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1] [Double] -> [Double] -> [Double]
forall a. [a] -> [a] -> [a]
++ [Double
Item [Double]
0.1, Double
Item [Double]
0.2 .. Double
Item [Double]
1]))

{-
testNestedBuildMap7 :: Assertion
testNestedBuildMap7 =
  assertEqualUpToEpsilon' 1e-8
    (rscalar 2176.628439128524)
    (rev' @Double @7 nestedBuildMap (rscalar 0.6))
-}

-- The n <= 4 is necessary despite what GHC claims. Applying @(2 + n)
-- to nestedBuildMap doesn't help.
nestedSumBuild
  :: forall target n r.
     (ADReady target, GoodScalar r, n <= 4, KnownNat n, Differentiable r)
  => target (TKR n r) -> target (TKR (2 + n) r)
nestedSumBuild :: forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 4, KnownNat n,
 Differentiable r) =>
target (TKR n r) -> target (TKR (2 + n) r)
nestedSumBuild target (TKR2 n (TKScalar r))
v =
  Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 (1 + n) (TKScalar r)))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
13 ((PrimalOf target (TKScalar Int64)
  -> target (TKR2 (1 + n) (TKScalar r)))
 -> target (TKR2 (1 + (1 + n)) (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 (1 + n) (TKScalar r)))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix1 -> Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
4 ((PrimalOf target (TKScalar Int64) -> target (TKR2 n (TKScalar r)))
 -> target (TKR2 (1 + n) (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 n (TKScalar r)))
-> target (TKR2 (1 + n) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix2 ->
    BoolOf target
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r))
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
>. PrimalOf target (TKScalar Int64)
ix1)
        ((target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N ((target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-r
0.00000003)) (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Floating a => a -> a
sqrt (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a
abs)
         (target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR2 0 (TKScalar r)) -> target (TKR (1 + (2 + n)) r)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap (target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR2 n (TKScalar r))
v)
           target (TKR2 ((((0 + 1) + 1) + 1) + n) (TKScalar r))
-> IxROf target (((0 + 1) + 1) + 1) -> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
`rindex` (PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
3 PrimalOf target (TKScalar Int64)
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
-> IxROf target (((0 + 1) + 1) + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 PrimalOf target (TKScalar Int64)
ix1 PrimalOf target (TKScalar Int64)
-> IxR (0 + 1) (PrimalOf target (TKScalar Int64))
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
ix1 PrimalOf target (TKScalar Int64)
3 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64))
-> IxR (0 + 1) (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR))
        (target (TKR2 0 (TKScalar r)) -> target (TKR (1 + (2 + n)) r)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 6, KnownNat n,
 Differentiable r) =>
target (TKR 0 r) -> target (TKR (1 + n) r)
nestedBuildMap (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0.00042)
         target (TKR2 ((((0 + 1) + 1) + 1) + n) (TKScalar r))
-> IxROf target (((0 + 1) + 1) + 1) -> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
`rindex` (PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
3 PrimalOf target (TKScalar Int64)
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
-> IxROf target (((0 + 1) + 1) + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 PrimalOf target (TKScalar Int64)
ix1 PrimalOf target (TKScalar Int64)
-> IxR (0 + 1) (PrimalOf target (TKScalar Int64))
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
ix1 PrimalOf target (TKScalar Int64)
3 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64))
-> IxR (0 + 1) (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR))

testNestedSumBuild1 :: Assertion
testNestedSumBuild1 :: Assertion
testNestedSumBuild1 =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> Concrete (TKR2 1 (TKScalar Double))
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-6
    (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
5] [Double
Item [Double]
5.738943380972744e-6,Double
Item [Double]
5.738943380972744e-6,Double
Item [Double]
5.738943380972744e-6,Double
Item [Double]
5.738943380972744e-6,Double
Item [Double]
5.738943380972744e-6])
    ((AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
 -> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value
     (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double)))
-> Value
     (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar 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 (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 (TKR2 1 (TKScalar Double))
    -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @3 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 3 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
    -> AstTensor AstMethodLet FullSpan (TKR 3 Double))
-> AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKR 3 Double)
AstTensor AstMethodLet FullSpan (TKR2 1 (TKScalar Double))
-> AstTensor AstMethodLet FullSpan (TKR (2 + 1) Double)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, (<=) @Natural n 4, KnownNat n,
 Differentiable r) =>
target (TKR n r) -> target (TKR (2 + n) r)
nestedSumBuild) (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
5] [Double
Item [Double]
1.1, Double
Item [Double]
2.2, Double
Item [Double]
3.3, Double
Item [Double]
4, -Double
5.22]))

{-
testNestedSumBuild5 :: Assertion
testNestedSumBuild5 =
  assertEqualUpToEpsilon' 1e-6
    (ringestData [1,2,2] [3.5330436757054903e-3,3.5330436757054903e-3,3.5330436757054903e-3,3.5330436757054903e-3])
    (rev' @Double @5 nestedSumBuild (rsum (rsum t16)))
-}

nestedSumBuildB :: forall target n r. (ADReady target, GoodScalar r, KnownNat n)
                => target (TKR (1 + n) r) -> target (TKR 3 r)
nestedSumBuildB :: forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR 3 r)
nestedSumBuildB target (TKR (1 + n) r)
v =
  forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild @2 [Int
Item (IShR 3)
13, Int
Item (IShR 3)
4, Int
Item (IShR 3)
2] ((IxR 2 (PrimalOf target (TKScalar Int64))
  -> target (TKR2 1 (TKScalar r)))
 -> target (TKR2 (2 + 1) (TKScalar r)))
-> (IxR 2 (PrimalOf target (TKScalar Int64))
    -> target (TKR2 1 (TKScalar r)))
-> target (TKR2 (2 + 1) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \case
    [Item (IxR 2 (PrimalOf target (TKScalar Int64)))
ix, Item (IxR 2 (PrimalOf target (TKScalar Int64)))
ix2] ->
      (target (TKR2 (1 + 1) (TKScalar r))
 -> IxR 1 (PrimalOf target (TKScalar Int64))
 -> target (TKR2 1 (TKScalar r)))
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 (1 + 1) (TKScalar r))
-> target (TKR2 1 (TKScalar r))
forall a b c. (a -> b -> c) -> b -> a -> c
flip target (TKR2 (1 + 1) (TKScalar r))
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 1 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex [Item (IxR 1 (PrimalOf target (TKScalar Int64)))
Item (IxR 2 (PrimalOf target (TKScalar Int64)))
ix2]
        (NonEmpty (target (TKR2 1 (TKScalar r)))
-> target (TKR2 (1 + 1) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList
             [ Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0
             , target (TKR2 (1 + 1) (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (target (TKR2 (1 + 1) (TKScalar r))
 -> target (TKR2 1 (TKScalar r)))
-> target (TKR2 (1 + 1) (TKScalar r))
-> target (TKR2 1 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ IShR (2 + 0)
-> (IxR 2 (PrimalOf target (TKScalar Int64))
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (2 + 0) (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
IShR (m + n)
-> (IxROf target m -> target (TKR2 n x)) -> target (TKR2 (m + n) x)
rbuild [Int
Item (IShR 2)
9, Int
Item (IShR 2)
2] ((IxR 2 (PrimalOf target (TKScalar Int64))
  -> target (TKR2 0 (TKScalar r)))
 -> target (TKR2 (2 + 0) (TKScalar r)))
-> (IxR 2 (PrimalOf target (TKScalar Int64))
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (2 + 0) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR2 0 (TKScalar r))
-> IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall a b. a -> b -> a
const (target (TKR2 0 (TKScalar r))
 -> IxR 2 (PrimalOf target (TKScalar Int64))
 -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 0 (TKScalar r))
-> IxR 2 (PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 Item (IxR 2 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix
             , target (TKR2 (n + 1) (TKScalar r))
-> IxR n (PrimalOf target (TKScalar Int64))
-> target (TKR2 1 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR2 (n + 1) (TKScalar r))
target (TKR (1 + n) r)
v ([Item (IxR n (PrimalOf target (TKScalar Int64)))]
-> IxR n (PrimalOf target (TKScalar Int64))
forall l. IsList l => [Item l] -> l
fromList
                         ([Item (IxR n (PrimalOf target (TKScalar Int64)))]
 -> IxR n (PrimalOf target (TKScalar Int64)))
-> [Item (IxR n (PrimalOf target (TKScalar Int64)))]
-> IxR n (PrimalOf target (TKScalar Int64))
forall a b. (a -> b) -> a -> b
$ Int
-> PrimalOf target (TKScalar Int64)
-> [PrimalOf target (TKScalar Int64)]
forall a. Int -> a -> [a]
replicate (target (TKR (1 + n) r) -> Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> Int
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> Int
rlength target (TKR (1 + n) r)
v Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
                             (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
maxH PrimalOf target (TKScalar Int64)
0 (PrimalOf target (TKScalar Int64)
 -> PrimalOf target (TKScalar Int64))
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
minH PrimalOf target (TKScalar Int64)
1 (PrimalOf target (TKScalar Int64)
 -> PrimalOf target (TKScalar Int64))
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ Item (IxR 2 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` PrimalOf target (TKScalar Int64)
2 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ Item (IxR 2 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` PrimalOf target (TKScalar Int64)
4 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- PrimalOf target (TKScalar Int64)
1))
             , Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 (\PrimalOf target (TKScalar Int64)
_ -> target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
v)
             , target (TKR2 (1 + 1) (TKScalar r)) -> target (TKR2 1 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 1 (TKScalar r)))
-> target (TKR2 (1 + 1) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
7 (\PrimalOf target (TKScalar Int64)
ix7 ->
                 Int
-> target (TKR2 0 (TKScalar r))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
2 (PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 PrimalOf target (TKScalar Int64)
ix7)))
             ])
    IxR 2 (PrimalOf target (TKScalar Int64))
_ -> TestName -> target (TKR2 1 (TKScalar r))
forall a. HasCallStack => TestName -> a
error TestName
"nestedSumBuildB: impossible pattern needlessly required"

testNestedSumBuildB :: Assertion
testNestedSumBuildB :: Assertion
testNestedSumBuildB =
  Rational
-> Concrete (TKR 5 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-8
    (IShR 5 -> [Double] -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
3,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
30.0,Double
Item [Double]
30.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
35.0,Double
Item [Double]
35.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0,Double
Item [Double]
26.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @3 f (TKR 5 Double) -> f (TKR 3 Double)
f (TKR (1 + 4) Double) -> f (TKR 3 Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 3 Double)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR 3 r)
nestedSumBuildB (Concrete (TKR2 (1 + 5) (TKScalar Double))
-> Concrete (TKR 5 Double)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Concrete (TKR2 (1 + 5) (TKScalar Double))
 -> Concrete (TKR 5 Double))
-> Concrete (TKR2 (1 + 5) (TKScalar Double))
-> Concrete (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ Concrete (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> Concrete (TKR2 (1 + 5) (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (Concrete (TKR2 (1 + (1 + 5)) (TKScalar Double))
 -> Concrete (TKR2 (1 + 5) (TKScalar Double)))
-> Concrete (TKR2 (1 + (1 + 5)) (TKScalar Double))
-> Concrete (TKR2 (1 + 5) (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ PermR
-> Concrete (TKR2 7 (TKScalar Double))
-> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
PermR -> target (TKR2 n x) -> target (TKR2 n x)
rtranspose [Int
Item PermR
1, Int
Item PermR
4, Int
Item PermR
2, Int
Item PermR
0, Int
Item PermR
3] Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48))

nestedBuildIndex :: forall target r. (ADReady target, GoodScalar r)
                 => target (TKR 5 r) -> target (TKR 3 r)
nestedBuildIndex :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 5 r) -> target (TKR 3 r)
nestedBuildIndex target (TKR 5 r)
v =
  Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((PrimalOf target (TKScalar Int64) -> target (TKR2 2 (TKScalar r)))
 -> target (TKR2 (1 + 2) (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix2 -> target (TKR2 ((0 + 1) + 2) (TKScalar r))
-> IxROf target (0 + 1) -> target (TKR2 2 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex (Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 ((PrimalOf target (TKScalar Int64) -> target (TKR2 2 (TKScalar r)))
 -> target (TKR2 (1 + 2) (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix3 -> target (TKR2 (1 + 2) (TKScalar r))
-> IxR 1 (PrimalOf target (TKScalar Int64))
-> target (TKR2 2 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex (Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 ((PrimalOf target (TKScalar Int64) -> target (TKR2 2 (TKScalar r)))
 -> target (TKR2 (1 + 2) (TKScalar r)))
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 2 (TKScalar r)))
-> target (TKR2 (1 + 2) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \PrimalOf target (TKScalar Int64)
ix4 -> target (TKR2 ((((0 + 1) + 1) + 1) + 2) (TKScalar r))
-> IxROf target (((0 + 1) + 1) + 1) -> target (TKR2 2 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex target (TKR 5 r)
target (TKR2 ((((0 + 1) + 1) + 1) + 2) (TKScalar r))
v (PrimalOf target (TKScalar Int64)
ix4 PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
2 PrimalOf target (TKScalar Int64)
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
-> IxROf target (((0 + 1) + 1) + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> IxROf target (0 + 1)
-> IxR ((0 + 1) + 1) (PrimalOf target (TKScalar Int64))
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: PrimalOf target (TKScalar Int64)
0 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64)) -> IxROf target (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR)) [Item (IxR 1 (PrimalOf target (TKScalar Int64)))
PrimalOf target (TKScalar Int64)
ix3]) (PrimalOf target (TKScalar Int64)
ix2 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64)) -> IxROf target (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR)

testNestedBuildIndex :: Assertion
testNestedBuildIndex :: Assertion
testNestedBuildIndex =
  Rational
-> Concrete (TKR 5 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0,Double
Item [Double]
1.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @3 f (TKR 5 Double) -> f (TKR 3 Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 3 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 5 r) -> target (TKR 3 r)
nestedBuildIndex Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

barRelu
  :: ( ADReady target, GoodScalar r, KnownNat n, Differentiable r )
  => target (TKR n r) -> target (TKR n r)
barRelu :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu target (TKR2 n (TKScalar r))
x = let t :: target (TKR2 n (TKScalar r))
t = IShR n
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N (target (TKR2 n (TKScalar r)) -> IShR n
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR2 n (TKScalar r))
x) (r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
0.001) target (TKR2 n (TKScalar r))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall a. Num a => a -> a -> a
* target (TKR2 n (TKScalar r))
x
            in target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
relu (target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall a b. (a -> b) -> a -> b
$ (target (TKR2 n (TKScalar r)), target (TKR2 n (TKScalar r)))
-> target (TKR2 n (TKScalar r))
forall a. RealFloatH a => (a, a) -> a
bar (target (TKR2 n (TKScalar r))
t, target (TKR2 n (TKScalar r)) -> target (TKR2 n (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
relu target (TKR2 n (TKScalar r))
t)

testBarReluADValDt :: Assertion
testBarReluADValDt :: Assertion
testBarReluADValDt =
  Rational
-> Concrete (TKR 5 Double) -> Concrete (TKR 5 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-6
    (Ranked 5 Double -> Concrete (TKR 5 Double)
forall r (target :: Target) (n :: Natural).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 5 Double -> Concrete (TKR 5 Double))
-> Ranked 5 Double -> Concrete (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ IShR 5 -> [Double] -> Ranked 5 Double
forall a (n :: Natural). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
1.2916050471365906e-2,Double
Item [Double]
1.2469757606504572e-2,Double
Item [Double]
1.3064120086501589e-2,Double
Item [Double]
1.2320300700062944e-2,Double
Item [Double]
0.0,Double
Item [Double]
1.217049789428711e-2,Double
Item [Double]
1.2185494267265312e-2,Double
Item [Double]
0.0,Double
Item [Double]
1.4105363649830907e-2,Double
Item [Double]
1.3506236503127638e-2,Double
Item [Double]
1.3359213691150671e-2,Double
Item [Double]
0.0,Double
Item [Double]
1.7066665416485535e-2,Double
Item [Double]
1.2618022646204737e-2,Double
Item [Double]
0.0,Double
Item [Double]
1.595161947206668e-2])
    (forall src (ztgt :: TK) 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 ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp @_ @(TKR 5 Double)
           AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu Concrete (TKR 5 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 5 Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16 (IShR 5 -> Concrete (TKR 0 Double) -> Concrete (TKR 5 Double)
forall (n :: Natural) (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)
2 , Int
Item (IShR 5)
2 , Int
Item (IShR 5)
1 , Int
Item (IShR 5)
2 , Int
Item (IShR 5)
2 ] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
42.2)))

testBarReluADValDt2 :: Assertion
testBarReluADValDt2 :: Assertion
testBarReluADValDt2 =
  Rational
-> Concrete (TKR 5 Double) -> Concrete (TKR 5 Double) -> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-6
    (Ranked 5 Double -> Concrete (TKR 5 Double)
forall r (target :: Target) (n :: Natural).
(GoodScalar r, BaseTensor target) =>
Ranked n r -> target (TKR n r)
rconcrete (Ranked 5 Double -> Concrete (TKR 5 Double))
-> Ranked 5 Double -> Concrete (TKR 5 Double)
forall a b. (a -> b) -> a -> b
$ IShR 5 -> [Double] -> Ranked 5 Double
forall a (n :: Natural). PrimElt a => IShR n -> [a] -> Ranked n a
Nested.rfromListPrimLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
84.42583210117625,Double
Item [Double]
84.42493951543845,Double
Item [Double]
84.4261282404092,Double
Item [Double]
84.42464060162287,Double
Item [Double]
84.4,Double
Item [Double]
84.42434099465609,Double
Item [Double]
84.4243709887547,Double
Item [Double]
84.4,Double
Item [Double]
84.42821072755468,Double
Item [Double]
84.42701247325044,Double
Item [Double]
84.42671842762383,Double
Item [Double]
84.4,Double
Item [Double]
84.43413333114152,Double
Item [Double]
84.42523604552053,Double
Item [Double]
84.4,Double
Item [Double]
84.43190323923253])
    (forall src (ztgt :: TK) 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 ztgt :: Type)) =>
(src -> tgt)
-> Value src -> Concrete (ADTensorKind ztgt) -> Value src
vjp @_ @(TKProduct
                  (TKR 4 Double)
                  (TKProduct (TKR 5 Float)
                             (TKS [2,2,1,2,2] Double)))
           (\AstTensor AstMethodLet FullSpan (TKR 5 Double)
x -> AstTensor AstMethodLet FullSpan (TKR2 4 (TKScalar Double))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKProduct
        (TKR 5 Float)
        (TKS2
           ((':)
              @Natural
              2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
           (TKScalar Double)))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKProduct
        (TKR2 4 (TKScalar Double))
        (TKProduct
           (TKR 5 Float)
           (TKS2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural
                    2
                    ((':)
                       @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
              (TKScalar Double))))
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z
-> AstTensor AstMethodLet FullSpan (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
-> AstTensor AstMethodLet FullSpan (TKR2 4 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum AstTensor AstMethodLet FullSpan (TKR 5 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 4) Double)
x) (AstTensor AstMethodLet FullSpan (TKR 5 Float)
-> AstTensor
     AstMethodLet
     FullSpan
     (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKProduct
        (TKR 5 Float)
        (TKS2
           ((':)
              @Natural
              2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
           (TKScalar Double)))
forall (x :: TK) (z :: TK).
AstTensor AstMethodLet FullSpan x
-> AstTensor AstMethodLet FullSpan z
-> AstTensor AstMethodLet FullSpan (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Float)
forall r1 r2 (target :: Target) (n :: Natural).
(RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2,
 BaseTensor target) =>
target (TKR n r1) -> target (TKR n r2)
rcast (AstTensor AstMethodLet FullSpan (TKR 5 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 5 Float))
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Float)
forall a b. (a -> b) -> a -> b
$ AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu AstTensor AstMethodLet FullSpan (TKR 5 Double)
x) (AstTensor
  AstMethodLet
  FullSpan
  (TKR2
     (Rank
        @Natural
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
     (TKScalar Double))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
AstTensor AstMethodLet FullSpan (TKR2 (Rank @Natural sh) x)
-> AstTensor AstMethodLet FullSpan (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR (AstTensor
   AstMethodLet
   FullSpan
   (TKR2
      (Rank
         @Natural
         ((':)
            @Natural
            2
            ((':)
               @Natural
               2
               ((':)
                  @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
      (TKScalar Double))
 -> AstTensor
      AstMethodLet
      FullSpan
      (TKS2
         ((':)
            @Natural
            2
            ((':)
               @Natural
               2
               ((':)
                  @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
         (TKScalar Double)))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKR2
        (Rank
           @Natural
           ((':)
              @Natural
              2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
        (TKScalar Double))
-> AstTensor
     AstMethodLet
     FullSpan
     (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
forall a b. (a -> b) -> a -> b
$ AstTensor AstMethodLet FullSpan (TKR 5 Double)
-> AstTensor AstMethodLet FullSpan (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu AstTensor AstMethodLet FullSpan (TKR 5 Double)
x))) Concrete (TKR 5 Double)
Value (AstTensor AstMethodLet FullSpan (TKR 5 Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16
                  (let dt :: Concrete (TKR 5 Double)
dt = IShR 5 -> Concrete (TKR 0 Double) -> Concrete (TKR 5 Double)
forall (n :: Natural) (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)
2 , Int
Item (IShR 5)
2 , Int
Item (IShR 5)
1 , Int
Item (IShR 5)
2 , Int
Item (IShR 5)
2 ] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
42.2)
                   in Concrete (TKR2 4 (TKScalar Double))
-> Concrete
     (TKProduct
        (TKR 5 Float)
        (TKS2
           ((':)
              @Natural
              2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
           (TKScalar Double)))
-> Concrete
     (TKProduct
        (TKR2 4 (TKScalar Double))
        (TKProduct
           (TKR 5 Float)
           (TKS2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural
                    2
                    ((':)
                       @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
              (TKScalar Double))))
forall (x :: TK) (z :: TK).
Concrete x -> Concrete z -> Concrete (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Concrete (TKR (1 + 4) Double)
-> Concrete (TKR2 4 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum Concrete (TKR 5 Double)
Concrete (TKR (1 + 4) Double)
dt) (Concrete (TKR 5 Float)
-> Concrete
     (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
-> Concrete
     (TKProduct
        (TKR 5 Float)
        (TKS2
           ((':)
              @Natural
              2
              ((':)
                 @Natural
                 2
                 ((':)
                    @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
           (TKScalar Double)))
forall (x :: TK) (z :: TK).
Concrete x -> Concrete z -> Concrete (TKProduct x z)
forall (target :: Target) (x :: TK) (z :: TK).
BaseTensor target =>
target x -> target z -> target (TKProduct x z)
tpair (Concrete (TKR 5 Double) -> Concrete (TKR 5 Float)
forall r1 r2 (target :: Target) (n :: Natural).
(RealFrac r1, GoodScalar r1, RealFrac r2, GoodScalar r2,
 BaseTensor target) =>
target (TKR n r1) -> target (TKR n r2)
rcast Concrete (TKR 5 Double)
dt) (Concrete
  (TKR2
     (Rank
        @Natural
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
     (TKScalar Double))
-> Concrete
     (TKS2
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural))))))
        (TKScalar Double))
forall (sh :: [Natural]) (x :: TK).
(KnownShS sh, KnownSTK x) =>
Concrete (TKR2 (Rank @Natural sh) x) -> Concrete (TKS2 sh x)
forall (target :: Target) (sh :: [Natural]) (x :: TK).
(ConvertTensor target, KnownShS sh, KnownSTK x) =>
target (TKR2 (Rank @Natural sh) x) -> target (TKS2 sh x)
sfromR Concrete (TKR 5 Double)
Concrete
  (TKR2
     (Rank
        @Natural
        ((':)
           @Natural
           2
           ((':)
              @Natural
              2
              ((':)
                 @Natural 1 ((':) @Natural 2 ((':) @Natural 2 ('[] @Natural)))))))
     (TKScalar Double))
dt))))

testBarReluADVal :: Assertion
testBarReluADVal :: Assertion
testBarReluADVal =
  Rational
-> Concrete (TKR2 7 (TKScalar Double))
-> ((Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))),
    (Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 7 -> [Double] -> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [Double
Item [Double]
3.513740871835189e-4,Double
Item [Double]
3.8830416352632824e-4,Double
Item [Double]
3.981974371104471e-4,Double
Item [Double]
4.2420226755643853e-4,Double
Item [Double]
4.6186212581292275e-4,Double
Item [Double]
4.6805323209889415e-4,Double
Item [Double]
5.933633926875981e-4,Double
Item [Double]
4.8311739820100107e-4,Double
Item [Double]
3.513740871835189e-4,Double
Item [Double]
3.8830416352632824e-4,Double
Item [Double]
3.981974371104471e-4,Double
Item [Double]
4.2420226755643853e-4,Double
Item [Double]
4.803836032226148e-4,Double
Item [Double]
4.7114455958615145e-4,Double
Item [Double]
5.933633926875981e-4,Double
Item [Double]
4.6464270870595213e-4,Double
Item [Double]
3.060675467148428e-4,Double
Item [Double]
2.954918864100193e-4,Double
Item [Double]
3.095763053673437e-4,Double
Item [Double]
2.9195025355591045e-4,Double
Item [Double]
0.0,Double
Item [Double]
2.9166656928452994e-4,Double
Item [Double]
2.887557883241243e-4,Double
Item [Double]
0.0,Double
Item [Double]
3.342503234557057e-4,Double
Item [Double]
3.2005299770444394e-4,Double
Item [Double]
3.165690448140097e-4,Double
Item [Double]
0.0,Double
Item [Double]
4.0442335110155446e-4,Double
Item [Double]
2.990052759764126e-4,Double
Item [Double]
0.0,Double
Item [Double]
3.780004614233832e-4,Double
Item [Double]
2.954918864100193e-4,Double
Item [Double]
2.954918864100193e-4,Double
Item [Double]
2.954918864100193e-4,Double
Item [Double]
2.954918864100193e-4,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
3.7466025157760897e-4,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
3.7466025157760897e-4,Double
Item [Double]
3.7466025157760897e-4,Double
Item [Double]
3.7466025157760897e-4,Double
Item [Double]
3.7466025157760897e-4])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @7 f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48)

testBarReluADVal3 :: Assertion
testBarReluADVal3 :: Assertion
testBarReluADVal3 =
  Rational
-> Concrete (TKR2 7 (TKScalar Double))
-> ((Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))),
    (Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 7 -> [Double] -> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [Double
Item [Double]
2.8846476339094805e-4,Double
Item [Double]
2.885038541771792e-4,Double
Item [Double]
2.885145151321922e-4,Double
Item [Double]
2.8854294397024206e-4,Double
Item [Double]
2.885852309100301e-4,Double
Item [Double]
2.885923176600045e-4,Double
Item [Double]
2.887454843457817e-4,Double
Item [Double]
2.886097295122454e-4,Double
Item [Double]
2.8846476339094805e-4,Double
Item [Double]
2.885038541771792e-4,Double
Item [Double]
2.885145151321922e-4,Double
Item [Double]
2.8854294397024206e-4,Double
Item [Double]
2.8860655161315664e-4,Double
Item [Double]
2.88595871110374e-4,Double
Item [Double]
2.887454843457817e-4,Double
Item [Double]
2.885884088500461e-4,Double
Item [Double]
2.884182085399516e-4,Double
Item [Double]
2.884075468755327e-4,Double
Item [Double]
2.8842176240868867e-4,Double
Item [Double]
2.8840399312321096e-4,Double
Item [Double]
0.0,Double
Item [Double]
2.8840370860416445e-4,Double
Item [Double]
2.884007943794131e-4,Double
Item [Double]
0.0,Double
Item [Double]
2.884469945274759e-4,Double
Item [Double]
2.8843242392031246e-4,Double
Item [Double]
2.884288700806792e-4,Double
Item [Double]
0.0,Double
Item [Double]
2.885212670262263e-4,Double
Item [Double]
2.884110805753153e-4,Double
Item [Double]
0.0,Double
Item [Double]
2.8849283778617973e-4,Double
Item [Double]
2.884075468755327e-4,Double
Item [Double]
2.884075468755327e-4,Double
Item [Double]
2.884075468755327e-4,Double
Item [Double]
2.884075468755327e-4,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
2.884892851579934e-4,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
2.884892851579934e-4,Double
Item [Double]
2.884892851579934e-4,Double
Item [Double]
2.884892851579934e-4,Double
Item [Double]
2.884892851579934e-4])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @7 f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (f :: Target).
ADReady f =>
f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
barRelu
         ((Concrete (TKR 0 Double) -> Concrete (TKR 0 Double))
-> Concrete (TKR2 7 (TKScalar Double))
-> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (Concrete (TKR 0 Double)
-> Concrete (TKR 0 Double) -> Concrete (TKR 0 Double)
forall a. Num a => a -> a -> a
* Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
0.001) Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48))

braidedBuilds :: forall target n r. (ADReady target, GoodScalar r, KnownNat n, Differentiable r)
              => target (TKR (1 + n) r) -> target (TKR 2 r)
braidedBuilds :: forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR 2 r)
braidedBuilds target (TKR (1 + n) r)
r =
  Int
-> (IntOf target -> target (TKR2 1 (TKScalar r)))
-> target (TKR2 (1 + 1) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 (\IntOf target
ix1 ->
    Int
-> (IntOf target -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
4 (\IntOf target
ix2 -> target (TKR2 ((1 + 0) + 0) (TKScalar r))
-> IxROf target (1 + 0) -> target (TKR2 0 (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
rindex (NonEmpty (target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rfromList
      [IntOf target -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 IntOf target
ix2, r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar r
7, target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (Int -> Int -> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
Int -> Int -> target (TKR2 (1 + n) x) -> target (TKR2 (1 + n) x)
rslice Int
1 Int
1 target (TKR (1 + n) r)
r), r -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar (-r
0.2)]) (IntOf target
ix1 IntOf target -> IxR 0 (IntOf target) -> IxROf target (1 + 0)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (IntOf target)
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR)))

testBraidedBuilds :: Assertion
testBraidedBuilds :: Assertion
testBraidedBuilds =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
4] [Double
Item [Double]
0.0,Double
Item [Double]
4.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @2 (forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR 2 r)
braidedBuilds @_ @0) (IShR 1
-> Concrete (TKR 0 Double) -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 1)
4] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3.4)))

testBraidedBuilds1 :: Assertion
testBraidedBuilds1 :: Assertion
testBraidedBuilds1 =
  Rational
-> 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0,Double
Item [Double]
4.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @2 f (TKR 5 Double) -> f (TKR 2 Double)
f (TKR (1 + 4) Double) -> f (TKR 2 Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 2 Double)
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR 2 r)
braidedBuilds Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

recycled :: (ADReady target, GoodScalar r, KnownNat n)
         => target (TKR n r) -> target (TKR 7 r)
recycled :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> target (TKR 7 r)
recycled target (TKR n r)
r =
  Int
-> (IntOf target -> target (TKR2 6 (TKScalar r)))
-> target (TKR2 (1 + 6) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((IntOf target -> target (TKR2 6 (TKScalar r)))
 -> target (TKR2 (1 + 6) (TKScalar r)))
-> (IntOf target -> target (TKR2 6 (TKScalar r)))
-> target (TKR2 (1 + 6) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
_ -> Int
-> (IntOf target -> target (TKR2 5 (TKScalar r)))
-> target (TKR2 (1 + 5) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
4 ((IntOf target -> target (TKR2 5 (TKScalar r)))
 -> target (TKR2 (1 + 5) (TKScalar r)))
-> (IntOf target -> target (TKR2 5 (TKScalar r)))
-> target (TKR2 (1 + 5) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
_ -> Int
-> (IntOf target -> target (TKR2 4 (TKScalar r)))
-> target (TKR2 (1 + 4) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 ((IntOf target -> target (TKR2 4 (TKScalar r)))
 -> target (TKR2 (1 + 4) (TKScalar r)))
-> (IntOf target -> target (TKR2 4 (TKScalar r)))
-> target (TKR2 (1 + 4) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
_ -> Int
-> (IntOf target -> target (TKR2 3 (TKScalar r)))
-> target (TKR2 (1 + 3) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
3 ((IntOf target -> target (TKR2 3 (TKScalar r)))
 -> target (TKR2 (1 + 3) (TKScalar r)))
-> (IntOf target -> target (TKR2 3 (TKScalar r)))
-> target (TKR2 (1 + 3) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ \IntOf target
_ ->
    target (TKR (1 + n) r) -> target (TKR2 3 (TKScalar r))
forall (target :: Target) (n :: Natural) r.
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR 3 r)
nestedSumBuildB (Int -> target (TKR n r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate Int
4 target (TKR n r)
r)

testRecycled :: Assertion
testRecycled :: Assertion
testRecycled =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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-6
    (IShR 1 -> Double -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl [Int
Item (IShR 1)
2] Double
5616)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @7 (forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR n r) -> target (TKR 7 r)
recycled @_ @_ @1) (IShR 1
-> Concrete (TKR 0 Double) -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
IShR n -> target (TKR2 0 x) -> target (TKR2 n x)
rreplicate0N [Int
Item (IShR 1)
2] (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
1.0001)))

{-
testRecycled1 :: Assertion
testRecycled1 =
  assertEqualUpToEpsilon' 1e-6
    (ringestData [5, 4, 2] [5184.0,5184.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,5424.0,5424.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0,4992.0])
    (rev' @Double @7 (recycled @_ @_ @3) (rreplicate0N [5, 4, 2] (rscalar 0.0002)))
-}

concatBuild :: forall target r n.
               (ADReady target, GoodScalar r, KnownNat n, Differentiable r)
            => target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild target (TKR (1 + n) r)
r =
  Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 (1 + (1 + n)) (TKScalar r)))
-> target (TKR2 (1 + (1 + (1 + n))) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
7 (\PrimalOf target (TKScalar Int64)
i ->
    NonEmpty (target (TKR2 (1 + (1 + n)) (TKScalar r)))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
NonEmpty (target (TKR2 (1 + n) x)) -> target (TKR2 (1 + n) x)
rconcat [ Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
5 (target (TKR (1 + n) r)
-> PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r)
forall a b. a -> b -> a
const target (TKR (1 + n) r)
r)
            , Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
1 (\PrimalOf target (TKScalar Int64)
j -> (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 (PrimalOf target (TKScalar Int64)
j PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- PrimalOf target (TKScalar Int64)
i)) target (TKR (1 + n) r)
r)
            , Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
11 (\PrimalOf target (TKScalar Int64)
j ->
                (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* (PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0
                  (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target (Int64 -> target (TKR 0 Int64)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Int64
125)) PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* (PrimalOf target (TKScalar Int64)
j PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a
abs (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a
signum PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a
abs PrimalOf target (TKScalar Int64)
i) PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1))
                   PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
maxH PrimalOf target (TKScalar Int64)
j (PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` (PrimalOf target (TKScalar Int64)
j PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)) PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64))
-> (target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKScalar Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart (target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKR 0 Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64)
forall r r2 (target :: Target) (n :: Natural).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKR n r) -> target (TKR n r2)
rfloor) (target (TKR (1 + n) r) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 target (TKR (1 + n) r)
r)
                   PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
- BoolOf (PrimalOf target)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, Boolean (BoolOf target), BaseTensor target) =>
BoolOf target -> target y -> target y -> target y
ifH (target (TKR (1 + n) r)
r target (TKR (1 + n) r) -> target (TKR (1 + n) r) -> BoolOf target
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<=. target (TKR (1 + n) r)
r BoolOf target -> BoolOf target -> BoolOf target
forall b. Boolean b => b -> b -> b
&&* PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64) -> BoolOf (PrimalOf target)
forall (f :: Target) (y :: TK). OrdH f y => f y -> f y -> BoolOf f
<. PrimalOf target (TKScalar Int64)
j)
                         (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64))
-> PrimalOf target (TKR 0 Int64)
-> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart (target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64))
-> target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + 0) r) -> target (TKR 0 Int64)
forall (n :: Natural) r r2 (target :: Target).
(GoodScalar r, GoodScalar r2, BaseTensor target) =>
target (TKR (1 + n) r) -> target (TKR n r2)
rminIndex (target (TKR (1 + n) r) -> target (TKR2 1 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 1 x)
rflatten target (TKR (1 + n) r)
r))
                         ((PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64)
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> PrimalOf target (TKScalar Int64))
-> (target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKScalar Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart (target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKR 0 Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64)
forall r r2 (target :: Target) (n :: Natural).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKR n r) -> target (TKR n r2)
rfloor) (target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKScalar Int64))
-> target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKScalar Int64)
forall a b. (a -> b) -> a -> b
$ target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r)
target (TKR2 ((0 + 1) + n) (TKScalar r))
r target (TKR2 ((0 + 1) + n) (TKScalar r))
-> IxROf target (0 + 1) -> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! ((PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
* PrimalOf target (TKScalar Int64)
j) PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`remH` PrimalOf target (TKScalar Int64)
7 PrimalOf target (TKScalar Int64)
-> IxR 0 (PrimalOf target (TKScalar Int64)) -> IxROf target (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (PrimalOf target (TKScalar Int64))
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR))))) target (TKR (1 + n) r)
r)
            , Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
13 (\PrimalOf target (TKScalar Int64)
_k ->
                target (TKR2 (1 + (1 + n)) (TKScalar r)) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (1 + n) x) -> target (TKR2 n x)
rsum (target (TKR2 (1 + (1 + n)) (TKScalar r))
 -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
-> target (TKR (1 + n) r)
forall a b. (a -> b) -> a -> b
$ target (TKR2 (2 + n) (TKScalar r))
-> target (TKR2 (2 + n) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownSTK x, BaseTensor target) =>
target (TKR2 (2 + n) x) -> target (TKR2 (2 + n) x)
rtr (target (TKR2 (2 + n) (TKScalar r))
 -> target (TKR2 (2 + n) (TKScalar r)))
-> target (TKR2 (2 + n) (TKScalar r))
-> target (TKR2 (2 + n) (TKScalar r))
forall a b. (a -> b) -> a -> b
$ Int
-> target (TKR (1 + n) r)
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int -> target (TKR2 n x) -> target (TKR2 (1 + n) x)
rreplicate (target (TKR (1 + n) r) -> Int
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 (1 + n) x) -> Int
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 (1 + n) x) -> Int
rwidth target (TKR (1 + n) r)
r) (Int -> Int -> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (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 target (TKR (1 + n) r)
r)) ])

testConcatBuild0 :: Assertion
testConcatBuild0 :: Assertion
testConcatBuild0 =
  Rational
-> Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
7] [Double
Item [Double]
16917.0,Double
Item [Double]
16280.0,Double
Item [Double]
16280.0,Double
Item [Double]
16280.0,Double
Item [Double]
16280.0,Double
Item [Double]
16280.0,Double
Item [Double]
16280.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @3 f (TKR2 1 (TKScalar Double)) -> f (TKR 3 Double)
f (TKR (1 + 0) Double) -> f (TKR (3 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR 3 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild
       (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
7] [Double
Item [Double]
0.651,Double
Item [Double]
0.14,Double
Item [Double]
0.3414,-Double
0.14,Double
Item [Double]
0.0014,Double
Item [Double]
0.0020014,Double
Item [Double]
0.9999]))

testConcatBuild1 :: Assertion
testConcatBuild1 :: Assertion
testConcatBuild1 =
  Rational
-> Concrete (TKR (1 + 6) Double)
-> Concrete (TKR (1 + 6) Double)
-> Assertion
forall a.
(AssertEqualUpToEpsilon a, HasCallStack) =>
Rational -> a -> a -> Assertion
assertEqualUpToEpsilon Rational
1e-10
    (IShR (1 + 6) -> [Double] -> Concrete (TKR (1 + 6) Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR (1 + 6))
3,Int
Item (IShR (1 + 6))
1,Int
Item (IShR (1 + 6))
2,Int
Item (IShR (1 + 6))
2,Int
Item (IShR (1 + 6))
1,Int
Item (IShR (1 + 6))
2,Int
Item (IShR (1 + 6))
2] [Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4816999999999999e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3,Double
Item [Double]
1.4544e-3])
    ((AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
 -> AstTensor AstMethodLet FullSpan (TKScalar Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double))
-> Value (AstTensor AstMethodLet FullSpan (TKR (1 + 6) 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 (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 (1 + 6) Double)
    -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKScalar Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 @9 @(TKScalar Double) (AstTensor AstMethodLet FullSpan (TKR 9 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> (AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
    -> AstTensor AstMethodLet FullSpan (TKR 9 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKR 0 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKR 9 Double)
AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKR (3 + 6) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild (AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
 -> AstTensor AstMethodLet FullSpan (TKR 9 Double))
-> (AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
    -> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKR 9 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AstTensor AstMethodLet FullSpan (TKR 0 Double)
 -> AstTensor AstMethodLet FullSpan (TKR 0 Double))
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
-> AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (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
1e-7)) Concrete (TKR2 7 (TKScalar Double))
Value (AstTensor AstMethodLet FullSpan (TKR (1 + 6) Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48)

concatBuildm :: forall target r n.
                (ADReady target, GoodScalar r, KnownNat n, Differentiable r)
             => target (TKR (1 + n) r) -> target (TKR (2 + n) r)
concatBuildm :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (2 + n) r)
concatBuildm target (TKR (1 + n) r)
r =
  Int
-> (IntOf target -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
7 (\IntOf target
i ->
    (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* (IntOf target -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0
      ((PrimalOf target (TKR 0 Int64) -> IntOf target
forall r.
GoodScalar r =>
PrimalOf target (TKR 0 r) -> PrimalOf target (TKScalar r)
forall (target :: Target) r.
(ConvertTensor target, GoodScalar r) =>
target (TKR 0 r) -> target (TKScalar r)
kfromR (PrimalOf target (TKR 0 Int64) -> IntOf target)
-> (target (TKR2 0 (TKScalar r)) -> PrimalOf target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> IntOf target
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart (target (TKR 0 Int64) -> PrimalOf target (TKR 0 Int64))
-> (target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64))
-> target (TKR2 0 (TKScalar r))
-> PrimalOf target (TKR 0 Int64)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. target (TKR2 0 (TKScalar r)) -> target (TKR 0 Int64)
forall r r2 (target :: Target) (n :: Natural).
(GoodScalar r, RealFrac r, GoodScalar r2, Integral r2,
 BaseTensor target) =>
target (TKR n r) -> target (TKR n r2)
rfloor) (target (TKR2 0 (TKScalar r)) -> IntOf target)
-> target (TKR2 0 (TKScalar r)) -> IntOf target
forall a b. (a -> b) -> a -> b
$ target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 n x) -> target (TKR2 0 x)
rsum0 (target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 n (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a b. (a -> b) -> a -> b
$ target (TKR (1 + n) r)
target (TKR2 ((0 + 1) + n) (TKScalar r))
r target (TKR2 ((0 + 1) + n) (TKScalar r))
-> IxROf target (0 + 1) -> target (TKR2 n (TKScalar r))
forall (m :: Natural) (n :: Natural) (x :: TK) (target :: Target).
(KnownNat m, KnownNat n, KnownSTK x, BaseTensor target) =>
target (TKR2 (m + n) x) -> IxROf target m -> target (TKR2 n x)
! (IntOf target
i IntOf target -> IxR 0 (IntOf target) -> IxROf target (0 + 1)
forall {n1 :: Natural} {i} (n :: Natural).
((n + 1 :: Natural) ~ (n1 :: Natural)) =>
i -> IxR n i -> IxR n1 i
:.: IxR 0 (IntOf target)
forall (n :: Natural) i.
((n :: Natural) ~ (0 :: Natural)) =>
IxR n i
ZIR)))) target (TKR (1 + n) r)
r)

testConcatBuild0m :: Assertion
testConcatBuild0m :: Assertion
testConcatBuild0m =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
7] [-Double
1.0,-Double
1.0,-Double
1.0,-Double
1.0,-Double
1.0,-Double
1.0,-Double
1.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @2 f (TKR2 1 (TKScalar Double)) -> f (TKR 2 Double)
f (TKR (1 + 0) Double) -> f (TKR (2 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR 2 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (2 + n) r)
concatBuildm
       (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
7] [Double
Item [Double]
0.651,Double
Item [Double]
0.14,Double
Item [Double]
0.3414,-Double
0.14,Double
Item [Double]
0.0014,Double
Item [Double]
0.0020014,Double
Item [Double]
0.9999]))

testConcatBuild1m :: Assertion
testConcatBuild1m :: Assertion
testConcatBuild1m =
  Rational
-> Concrete (TKR2 7 (TKScalar Double))
-> ((Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR 8 Double),
     AstTensor AstMethodLet PrimalSpan (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))),
    (Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR 8 Double),
     AstTensor AstMethodLet PrimalSpan (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)), Concrete (TKR 8 Double),
     Concrete (TKR 8 Double), Concrete (TKR 8 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 7 -> [Double] -> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0,Double
Item [Double]
0.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @8 (f (TKR2 7 (TKScalar Double)) -> f (TKR 8 Double)
f (TKR (1 + 6) Double) -> f (TKR (2 + 6) Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n, Differentiable r) =>
target (TKR (1 + n) r) -> target (TKR (2 + n) r)
concatBuildm (f (TKR2 7 (TKScalar Double)) -> f (TKR 8 Double))
-> (f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double)))
-> f (TKR2 7 (TKScalar Double))
-> f (TKR 8 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (f (TKR 0 Double) -> f (TKR 0 Double))
-> f (TKR2 7 (TKScalar Double)) -> f (TKR2 7 (TKScalar Double))
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (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
1e-7)) Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48)

concatBuild2 :: (ADReady target, GoodScalar r, KnownNat n)
             => target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild2 :: forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild2 target (TKR (1 + n) r)
r =
  Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 (1 + (1 + n)) (TKScalar r)))
-> target (TKR2 (1 + (1 + (1 + n))) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
5 (\PrimalOf target (TKScalar Int64)
i ->
    Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR (1 + n) r))
-> target (TKR2 (1 + (1 + n)) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 (\PrimalOf target (TKScalar Int64)
j -> (target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r)))
-> target (TKR (1 + n) r) -> target (TKR (1 + n) r)
forall (n :: Natural) (x :: TK) (x1 :: TK) (target :: Target).
(KnownNat n, KnownSTK x, KnownSTK x1, BaseTensor target) =>
(target (TKR2 0 x1) -> target (TKR2 0 x))
-> target (TKR2 n x1) -> target (TKR2 n x)
rmap0N (target (TKR2 0 (TKScalar r))
-> target (TKR2 0 (TKScalar r)) -> target (TKR2 0 (TKScalar r))
forall a. Num a => a -> a -> a
* PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
maxH PrimalOf target (TKScalar Int64)
j (PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` (PrimalOf target (TKScalar Int64)
j PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)))) target (TKR (1 + n) r)
r))

testConcatBuild2 :: Assertion
testConcatBuild2 :: Assertion
testConcatBuild2 =
  Rational
-> Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 3 Double),
     Concrete (TKR 3 Double), Concrete (TKR 3 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @3 f (TKR2 1 (TKScalar Double)) -> f (TKR 3 Double)
f (TKR (1 + 0) Double) -> f (TKR (3 + 0) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR 3 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild2 (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
3] [Double
Item [Double]
0.651,Double
Item [Double]
0.14,Double
Item [Double]
0.3414]))

testConcatBuild22 :: Assertion
testConcatBuild22 :: Assertion
testConcatBuild22 =
  Rational
-> Concrete (TKR2 7 (TKScalar Double))
-> ((Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR 9 Double),
     AstTensor AstMethodLet PrimalSpan (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))),
    (Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     AstTensor AstMethodLet PrimalSpan (TKR 9 Double),
     AstTensor AstMethodLet PrimalSpan (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)), Concrete (TKR 9 Double),
     Concrete (TKR 9 Double), Concrete (TKR 9 Double),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double)),
     Concrete (TKR2 7 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 7 -> [Double] -> Concrete (TKR2 7 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 7)
3,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2,Int
Item (IShR 7)
1,Int
Item (IShR 7)
2,Int
Item (IShR 7)
2] [Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0,Double
Item [Double]
16.0])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @9 f (TKR2 7 (TKScalar Double)) -> f (TKR 9 Double)
f (TKR (1 + 6) Double) -> f (TKR (3 + 6) Double)
forall (f :: Target).
ADReady f =>
f (TKR2 7 (TKScalar Double)) -> f (TKR 9 Double)
forall (target :: Target) r (n :: Natural).
(ADReady target, GoodScalar r, KnownNat n) =>
target (TKR (1 + n) r) -> target (TKR (3 + n) r)
concatBuild2 Concrete (TKR2 7 (TKScalar Double))
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 7 r)
t48)

concatBuild3 :: (ADReady target, GoodScalar r)
             => target (TKR 1 r) -> target (TKR 2 r)
concatBuild3 :: forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 1 r) -> target (TKR 2 r)
concatBuild3 target (TKR 1 r)
_r =
  Int
-> (PrimalOf target (TKScalar Int64) -> target (TKR 1 r))
-> target (TKR2 (1 + 1) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
5 (\PrimalOf target (TKScalar Int64)
i ->
    Int
-> (PrimalOf target (TKScalar Int64)
    -> target (TKR2 0 (TKScalar r)))
-> target (TKR2 (1 + 0) (TKScalar r))
forall (n :: Natural) (x :: TK) (target :: Target).
(KnownNat n, KnownSTK x, BaseTensor target) =>
Int
-> (IntOf target -> target (TKR2 n x)) -> target (TKR2 (1 + n) x)
rbuild1 Int
2 (\PrimalOf target (TKScalar Int64)
j -> PrimalOf target (TKScalar Int64) -> target (TKR2 0 (TKScalar r))
forall r (target :: Target).
(BaseTensor target, ConvertTensor target, GoodScalar r) =>
IntOf target -> target (TKR 0 r)
rfromIndex0 (PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall (y :: TK) (target :: Target).
(KnownSTK y, OrdH target y, BaseTensor target) =>
target y -> target y -> target y
maxH PrimalOf target (TKScalar Int64)
j (PrimalOf target (TKScalar Int64)
i PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. IntegralH a => a -> a -> a
`quotH` (PrimalOf target (TKScalar Int64)
j PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
-> PrimalOf target (TKScalar Int64)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKScalar Int64)
1)))))

testConcatBuild3 :: Assertion
testConcatBuild3 :: Assertion
testConcatBuild3 =
  Rational
-> Concrete (TKR2 1 (TKScalar Double))
-> ((Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))),
    (Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar 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 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)), Concrete (TKR 2 Double),
     Concrete (TKR 2 Double), Concrete (TKR 2 Double),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double)),
     Concrete (TKR2 1 (TKScalar Double))))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
0] [])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @2 f (TKR2 1 (TKScalar Double)) -> f (TKR 2 Double)
forall (f :: Target).
ADReady f =>
f (TKR2 1 (TKScalar Double)) -> f (TKR 2 Double)
forall (target :: Target) r.
(ADReady target, GoodScalar r) =>
target (TKR 1 r) -> target (TKR 2 r)
concatBuild3 (IShR 1 -> [Double] -> Concrete (TKR2 1 (TKScalar Double))
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> [r] -> target (TKR n r)
ringestData [Int
Item (IShR 1)
0] []))

testLogistic0 :: Assertion
testLogistic0 :: Assertion
testLogistic0 =
  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 :: Natural) (m :: Natural) 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.5176659730912e-2)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
logistic (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3))

testLogistic5 :: Assertion
testLogistic5 :: Assertion
testLogistic5 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 -> NonEmpty Double -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> NonEmpty r -> target (TKR n r)
rfromListLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item (NonEmpty Double)
6.648056670790033e-3,Double
Item (NonEmpty Double)
0.10499358540350662,Double
Item (NonEmpty Double)
2.466509291359931e-3,Double
Item (NonEmpty Double)
0.19661193324148185,Double
Item (NonEmpty Double)
0.1049935854035065,Double
Item (NonEmpty Double)
0.2499999999999375,Double
Item (NonEmpty Double)
0.24937604019289197,Double
Item (NonEmpty Double)
0.24751657271185995,Double
Item (NonEmpty Double)
2.0452222584760427e-6,Double
Item (NonEmpty Double)
1.2337934976493025e-4,Double
Item (NonEmpty Double)
3.3523767075636815e-4,Double
Item (NonEmpty Double)
1.7662706213291118e-2,Double
Item (NonEmpty Double)
1.7763568394002473e-15,Double
Item (NonEmpty Double)
4.540945566439111e-2,Double
Item (NonEmpty Double)
4.6588861451033536e-15,Double
Item (NonEmpty Double)
5.109024314693943e-12])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
logistic Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

testLogistic52 :: Assertion
testLogistic52 :: Assertion
testLogistic52 =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 -> NonEmpty Double -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> NonEmpty r -> target (TKR n r)
rfromListLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item (NonEmpty Double)
1.3111246391159124e-3,Double
Item (NonEmpty Double)
2.1750075272657612e-2,Double
Item (NonEmpty Double)
4.8549901151740267e-4,Double
Item (NonEmpty Double)
4.312916016242333e-2,Double
Item (NonEmpty Double)
2.6155373652699744e-2,Double
Item (NonEmpty Double)
5.8750924453083504e-2,Double
Item (NonEmpty Double)
5.8238333583278255e-2,Double
Item (NonEmpty Double)
5.8847120842749026e-2,Double
Item (NonEmpty Double)
4.0211548220008027e-7,Double
Item (NonEmpty Double)
2.425923569564766e-5,Double
Item (NonEmpty Double)
6.592194028602285e-5,Double
Item (NonEmpty Double)
4.415319450597324e-3,Double
Item (NonEmpty Double)
3.4925295232121135e-16,Double
Item (NonEmpty Double)
9.12284655835676e-3,Double
Item (NonEmpty Double)
1.1647215362758384e-15,Double
Item (NonEmpty Double)
1.0044951474920845e-12])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 (f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
logistic (f (TKR 5 Double) -> f (TKR 5 Double))
-> (f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR 5 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
logistic) Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

logisticOld :: forall target r n.
            ( BaseTensor target, LetTensor target
            , BaseTensor (PrimalOf target), KnownNat n, GoodScalar r
            , Floating (PrimalOf target (TKR n r)) )
         => target (TKR n r) -> target (TKR n r)
logisticOld :: forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticOld target (TKR n r)
d0 = target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR n r)
d0 ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
d ->  -- used in rprimalPart and in tdualPart
  let sh :: IShR n
sh = target (TKR n r) -> IShR n
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR n r)
d
      y0 :: PrimalOf target (TKR n r)
y0 = PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Fractional a => a -> a
recip (IShR n -> r -> PrimalOf target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl IShR n
sh r
1 PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Floating a => a -> a
exp (- forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
d))
  in target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal @target PrimalOf target (TKR n r)
y0)
     ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
y1 -> let y :: PrimalOf target (TKR n r)
y = forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
y1
              in SingletonTK (TKR n r)
-> PrimalOf target (TKR n r)
-> DualOf target (TKR n r)
-> target (TKR n r)
forall (y :: TK).
BaseTensor target =>
SingletonTK y -> PrimalOf target y -> DualOf target y -> target y
forall (target :: Target) (y :: TK).
(LetTensor target, BaseTensor target) =>
SingletonTK y -> PrimalOf target y -> DualOf target y -> target y
tD SingletonTK (TKR n r)
forall (y :: TK). KnownSTK y => SingletonTK y
knownSTK PrimalOf target (TKR n r)
y (forall (target :: Target) (n :: Natural) r.
(BaseTensor target, KnownNat n, GoodScalar r,
 Num (target (TKR n r)), Num (PrimalOf target (TKR n r))) =>
PrimalOf target (TKR n r)
-> DualOf target (TKR n r) -> DualOf target (TKR n r)
rScale @target (PrimalOf target (TKR n r)
y PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
* (IShR n -> r -> PrimalOf target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl IShR n
sh r
1 PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
- PrimalOf target (TKR n r)
y))
                                (DualOf target (TKR n r) -> DualOf target (TKR n r))
-> DualOf target (TKR n r) -> DualOf target (TKR n r)
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
target (TKR2 n x) -> DualOf target (TKR2 n x)
rdualPart @target target (TKR n r)
d)

testLogistic0Old :: Assertion
testLogistic0Old :: Assertion
testLogistic0Old =
  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 :: Natural) (m :: Natural) 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.5176659730912e-2)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticOld (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3))

testLogistic5Old :: Assertion
testLogistic5Old :: Assertion
testLogistic5Old =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 -> NonEmpty Double -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> NonEmpty r -> target (TKR n r)
rfromListLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item (NonEmpty Double)
6.648056670790033e-3,Double
Item (NonEmpty Double)
0.10499358540350662,Double
Item (NonEmpty Double)
2.466509291359931e-3,Double
Item (NonEmpty Double)
0.19661193324148185,Double
Item (NonEmpty Double)
0.1049935854035065,Double
Item (NonEmpty Double)
0.2499999999999375,Double
Item (NonEmpty Double)
0.24937604019289197,Double
Item (NonEmpty Double)
0.24751657271185995,Double
Item (NonEmpty Double)
2.0452222584760427e-6,Double
Item (NonEmpty Double)
1.2337934976493025e-4,Double
Item (NonEmpty Double)
3.3523767075636815e-4,Double
Item (NonEmpty Double)
1.7662706213291118e-2,Double
Item (NonEmpty Double)
1.7763568394002473e-15,Double
Item (NonEmpty Double)
4.540945566439111e-2,Double
Item (NonEmpty Double)
4.6588861451033536e-15,Double
Item (NonEmpty Double)
5.109024314693943e-12])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 f (TKR 5 Double) -> f (TKR 5 Double)
forall (f :: Target).
ADReady f =>
f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticOld Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

testLogistic52Old :: Assertion
testLogistic52Old :: Assertion
testLogistic52Old =
  Rational
-> Concrete (TKR 5 Double)
-> ((Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)),
    (Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     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 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 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double), Concrete (TKR 5 Double),
     Concrete (TKR 5 Double)))
-> Assertion
forall (n :: Natural) (m :: Natural) 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 -> NonEmpty Double -> Concrete (TKR 5 Double)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> NonEmpty r -> target (TKR n r)
rfromListLinear [Int
Item (IShR 5)
2,Int
Item (IShR 5)
2,Int
Item (IShR 5)
1,Int
Item (IShR 5)
2,Int
Item (IShR 5)
2] [Double
Item (NonEmpty Double)
1.3111246391159124e-3,Double
Item (NonEmpty Double)
2.1750075272657612e-2,Double
Item (NonEmpty Double)
4.8549901151740267e-4,Double
Item (NonEmpty Double)
4.312916016242333e-2,Double
Item (NonEmpty Double)
2.6155373652699744e-2,Double
Item (NonEmpty Double)
5.8750924453083504e-2,Double
Item (NonEmpty Double)
5.8238333583278255e-2,Double
Item (NonEmpty Double)
5.8847120842749026e-2,Double
Item (NonEmpty Double)
4.0211548220008027e-7,Double
Item (NonEmpty Double)
2.425923569564766e-5,Double
Item (NonEmpty Double)
6.592194028602285e-5,Double
Item (NonEmpty Double)
4.415319450597324e-3,Double
Item (NonEmpty Double)
3.4925295232121135e-16,Double
Item (NonEmpty Double)
9.12284655835676e-3,Double
Item (NonEmpty Double)
1.1647215362758384e-15,Double
Item (NonEmpty Double)
1.0044951474920845e-12])
    (forall r (m :: Natural) (n :: Natural) 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' @Double @5 (f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticOld (f (TKR 5 Double) -> f (TKR 5 Double))
-> (f (TKR 5 Double) -> f (TKR 5 Double))
-> f (TKR 5 Double)
-> f (TKR 5 Double)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. f (TKR 5 Double) -> f (TKR 5 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Differentiable r) =>
target (TKR n r) -> target (TKR n r)
logistic) Concrete (TKR 5 Double)
forall r. (GoodScalar r, Fractional r) => Concrete (TKR 5 r)
t16)

logisticA :: forall target r n.
            ( BaseTensor target, LetTensor target
            , BaseTensor (PrimalOf target), KnownNat n, GoodScalar r
            , Floating (PrimalOf target (TKR n r)) )
         => target (TKR n r) -> target (TKR n r)
logisticA :: forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticA target (TKR n r)
d0 = target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR n r)
d0 ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
d ->  -- used in rprimalPart and in tdualPart
  let sh :: IShR n
sh = target (TKR n r) -> IShR n
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR n r)
d
      y0 :: PrimalOf target (TKR n r)
y0 = PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Fractional a => a -> a
recip (IShR n -> r -> PrimalOf target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl IShR n
sh r
1 PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Floating a => a -> a
exp (- forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
d))
  in target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal @target PrimalOf target (TKR n r)
y0)
     ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
y1 -> let y :: PrimalOf target (TKR n r)
y = forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
y1
              in PrimalOf target (TKR n r) -> target (TKR n r)
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal PrimalOf target (TKR n r)
y
                 target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
+ DualOf target (TKR n r) -> target (TKR n r)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
DualOf target (TKR2 n x) -> target (TKR2 n x)
rfromDual (forall (target :: Target) (n :: Natural) r.
(BaseTensor target, KnownNat n, GoodScalar r,
 Num (target (TKR n r)), Num (PrimalOf target (TKR n r))) =>
PrimalOf target (TKR n r)
-> DualOf target (TKR n r) -> DualOf target (TKR n r)
rScale @target (PrimalOf target (TKR n r)
y PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
* (IShR n -> r -> PrimalOf target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl IShR n
sh r
1 PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
- PrimalOf target (TKR n r)
y))
                              (DualOf target (TKR n r) -> DualOf target (TKR n r))
-> DualOf target (TKR n r) -> DualOf target (TKR n r)
forall a b. (a -> b) -> a -> b
$ forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
target (TKR2 n x) -> DualOf target (TKR2 n x)
rdualPart @target target (TKR n r)
d)

testLogisticA0 :: Assertion
testLogisticA0 :: Assertion
testLogisticA0 =
  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 :: Natural) (m :: Natural) 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.5176659730912e-2)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticA (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3))

logisticB :: forall target r n.
            ( BaseTensor target, LetTensor target
            , BaseTensor (PrimalOf target), KnownNat n, GoodScalar r
            , Floating (PrimalOf target (TKR n r)) )
         => target (TKR n r) -> target (TKR n r)
logisticB :: forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticB target (TKR n r)
d0 = target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR n r)
d0 ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
d ->  -- used in rprimalPart and in tdualPart
  let sh :: IShR n
sh = target (TKR n r) -> IShR n
forall (n :: Natural) (x :: TK).
KnownSTK x =>
target (TKR2 n x) -> IShR n
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownSTK x) =>
target (TKR2 n x) -> IShR n
rshape target (TKR n r)
d
      y0 :: PrimalOf target (TKR n r)
y0 = PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Fractional a => a -> a
recip (IShR n -> r -> PrimalOf target (TKR n r)
forall (n :: Natural) r (target :: Target).
(GoodScalar r, BaseTensor target) =>
IShR n -> r -> target (TKR n r)
rrepl IShR n
sh r
1 PrimalOf target (TKR n r)
-> PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Num a => a -> a -> a
+ PrimalOf target (TKR n r) -> PrimalOf target (TKR n r)
forall a. Floating a => a -> a
exp (- forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
d))
  in target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet (forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal @target PrimalOf target (TKR n r)
y0)
     ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
y1 -> let y :: PrimalOf target (TKR n r)
y = forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
y1
              in PrimalOf target (TKR n r) -> target (TKR n r)
forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal PrimalOf target (TKR n r)
y target (TKR n r) -> target (TKR n r) -> target (TKR n r)
forall a. Num a => a -> a -> a
+ DualOf target (TKR n r) -> target (TKR n r)
forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
DualOf target (TKR2 n x) -> target (TKR2 n x)
rfromDual (forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
target (TKR2 n x) -> DualOf target (TKR2 n x)
rdualPart @target target (TKR n r)
d)

testLogisticB0 :: Assertion
testLogisticB0 :: Assertion
testLogisticB0 =
  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 :: Natural) (m :: Natural) 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 r (m :: Natural) (n :: Natural) 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' @Double @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, BaseTensor (PrimalOf target),
 KnownNat n, GoodScalar r, Floating (PrimalOf target (TKR n r))) =>
target (TKR n r) -> target (TKR n r)
logisticB (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3))

logisticC :: forall target r n.
            ( BaseTensor target, LetTensor target
            , KnownNat n, GoodScalar r )
         => target (TKR n r) -> target (TKR n r)
logisticC :: forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR n r)
logisticC target (TKR n r)
d0 = target (TKR n r)
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall (x :: TK) (z :: TK) (target :: Target).
LetTensor target =>
target x -> (target x -> target z) -> target z
tlet target (TKR n r)
d0 ((target (TKR n r) -> target (TKR n r)) -> target (TKR n r))
-> (target (TKR n r) -> target (TKR n r)) -> target (TKR n r)
forall a b. (a -> b) -> a -> b
$ \target (TKR n r)
d ->  -- used in rprimalPart and in tdualPart
  let y0 :: PrimalOf target (TKR n r)
y0 = forall (target :: Target) (n :: Natural) (x :: TK).
BaseTensor target =>
target (TKR2 n x) -> PrimalOf target (TKR2 n x)
rprimalPart @target target (TKR n r)
d
  in forall (target :: Target) (n :: Natural) (x :: TK).
(BaseTensor target, KnownNat n, KnownSTK x) =>
PrimalOf target (TKR2 n x) -> target (TKR2 n x)
rfromPrimal @target PrimalOf target (TKR n r)
y0

testLogisticC0 :: Assertion
testLogisticC0 :: Assertion
testLogisticC0 =
  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 :: Natural) (m :: Natural) 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)
    (forall r (m :: Natural) (n :: Natural) 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' @Double @0 f (TKR 0 Double) -> f (TKR 0 Double)
forall (f :: Target).
ADReady f =>
f (TKR 0 Double) -> f (TKR 0 Double)
forall (target :: Target) r (n :: Natural).
(BaseTensor target, LetTensor target, KnownNat n, GoodScalar r) =>
target (TKR n r) -> target (TKR n r)
logisticC (Double -> Concrete (TKR 0 Double)
forall r (target :: Target).
(GoodScalar r, BaseTensor target) =>
r -> target (TKR 0 r)
rscalar Double
3))