From 638e5fb000d4e242a91e8b653da4a72daec0efda Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 28 Aug 2024 09:23:08 -0700 Subject: Make tuple types work in autodiff. (#4923) --- source/slang/diff.meta.slang | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'source/slang/diff.meta.slang') diff --git a/source/slang/diff.meta.slang b/source/slang/diff.meta.slang index a4c468ef7..80aca230a 100644 --- a/source/slang/diff.meta.slang +++ b/source/slang/diff.meta.slang @@ -1210,6 +1210,31 @@ extension Array : IDifferentiable } } +__generic +extension Tuple : IDifferentiable +{ + typealias Differential = Tuple; + + [__unsafeForceInlineEarly] + static Differential dzero() + { + return makeTuple(expand (each T).dzero()); + } + + [__unsafeForceInlineEarly] + static Differential dadd(Differential a, Differential b) + { + return makeTuple(expand(each T).dadd(each a, each b)); + } + + __generic + [__unsafeForceInlineEarly] + static Differential dmul(U a, Differential b) + { + return makeTuple(expand(each T).dmul(a, each b)); + } +} + // Matrix transpose __generic [ForceInline] -- cgit v1.2.3