summaryrefslogtreecommitdiffstats
path: root/source/slang/diff.meta.slang
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/diff.meta.slang')
-rw-r--r--source/slang/diff.meta.slang25
1 files changed, 25 insertions, 0 deletions
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<T, N> : IDifferentiable
}
}
+__generic<each T : IDifferentiable>
+extension Tuple<T> : IDifferentiable
+{
+ typealias Differential = Tuple<expand(each T).Differential>;
+
+ [__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<U : __BuiltinRealType>
+ [__unsafeForceInlineEarly]
+ static Differential dmul(U a, Differential b)
+ {
+ return makeTuple(expand(each T).dmul(a, each b));
+ }
+}
+
// Matrix transpose
__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
[ForceInline]