summaryrefslogtreecommitdiff
path: root/src/CHAD.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/CHAD.hs')
-rw-r--r--src/CHAD.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/CHAD.hs b/src/CHAD.hs
index 26c918e..d0358b8 100644
--- a/src/CHAD.hs
+++ b/src/CHAD.hs
@@ -238,6 +238,11 @@ d2op op e d = case op of
STF64 -> float
STBool -> EInl ext (STPair STNil STNil) (ENil ext)
+freezeRet :: Ret env t
+ -> (forall env'. Ex env' (D2 t)) -- the incoming cotangent value
+ -> Ex (D1E env) (TPair (D1 t) (TEVM (D2E env) TNil))
+freezeRet (Ret e0 e1 e2) d = letBinds e0 $ EPair ext e1 (ELet ext d e2)
+
drev :: SList STy env -> Ex env t -> Ret env t
drev senv = \case
EVar _ t i ->