diff options
Diffstat (limited to 'source/slang/diff.meta.slang')
| -rw-r--r-- | source/slang/diff.meta.slang | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/source/slang/diff.meta.slang b/source/slang/diff.meta.slang index adbf8ae48..055c44135 100644 --- a/source/slang/diff.meta.slang +++ b/source/slang/diff.meta.slang @@ -313,6 +313,24 @@ DifferentialPair<vector<T, N>> __d_sin_vector(DifferentialPair<vector<T, N>> dpx VECTOR_MAP_D_UNARY(T, N, __d_sin, dpx); } +__generic<T : __BuiltinFloatingPointType> +[BackwardDerivativeOf(sin)] +void __d_sin(inout DifferentialPair<T> dpx, T.Differential dOut) +{ + dpx = diffPair( + dpx.p, + T.dmul(cos(dpx.p), dOut)); +} + +__generic<T : __BuiltinFloatingPointType, let N : int> +[BackwardDerivativeOf(sin)] +void __d_sin_vector(inout DifferentialPair<vector<T, N>> dpx, vector<T, N>.Differential dOut) +{ + dpx = diffPair( + dpx.p, + vector<T, N>.dmul(cos(dpx.p), dOut)); +} + // Cosine __generic<T : __BuiltinFloatingPointType> @@ -331,6 +349,24 @@ DifferentialPair<vector<T, N>> __d_cos_vector(DifferentialPair<vector<T, N>> dpx VECTOR_MAP_D_UNARY(T, N, __d_cos, dpx); } +__generic<T : __BuiltinFloatingPointType> +[BackwardDerivativeOf(cos)] +void __d_cos(inout DifferentialPair<T> dpx, T.Differential dOut) +{ + dpx = diffPair( + dpx.p, + T.dmul(-sin(dpx.p), dOut)); +} + +__generic<T : __BuiltinFloatingPointType, let N : int> +[BackwardDerivativeOf(cos)] +void __d_cos_vector(inout DifferentialPair<vector<T, N>> dpx, vector<T, N>.Differential dOut) +{ + dpx = diffPair( + dpx.p, + vector<T, N>.dmul(-sin(dpx.p), dOut)); +} + // Base-e logarithm __generic<T : __BuiltinFloatingPointType> |
