summaryrefslogtreecommitdiffstats
path: root/source/slang/diff.meta.slang
diff options
context:
space:
mode:
authorLifan Wu <winmad.wlf@gmail.com>2024-04-23 10:19:30 -0700
committerGitHub <noreply@github.com>2024-04-23 10:19:30 -0700
commit0d9206855888d694e0b8f91be4524b57293773d6 (patch)
tree4b9a32dd767883f3bbe5f9c3640c2221020de9f3 /source/slang/diff.meta.slang
parent9f892c96c9cc093988a7d1527fdf1b0005031ded (diff)
Fix a bug in the forward derivative of cross product (#4006)
* Fix a bug in fwd-diff for cross product * Also add a test for the reverse-mode AD --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/diff.meta.slang')
-rw-r--r--source/slang/diff.meta.slang6
1 files changed, 3 insertions, 3 deletions
diff --git a/source/slang/diff.meta.slang b/source/slang/diff.meta.slang
index 5817ac7cf..0026a76f9 100644
--- a/source/slang/diff.meta.slang
+++ b/source/slang/diff.meta.slang
@@ -1018,17 +1018,17 @@ DifferentialPair<vector<T, 3>> __d_cross(DifferentialPair<vector<T, 3>> a, Diffe
T aybz = a.p.y * b.p.z;
T azby = a.p.z * b.p.y;
T px = aybz - azby;
- T dx = (b.p.z - azby) * a.d.y + (a.p.y - azby) * b.d.z + (aybz - b.p.y) * a.d.z + (aybz - a.p.z) * b.d.y;
+ T dx = a.d.y * b.p.z + a.p.y * b.d.z - a.d.z * b.p.y - a.p.z * b.d.y;
T azbx = a.p.z * b.p.x;
T axbz = a.p.x * b.p.z;
T py = azbx - axbz;
- T dy = (b.p.x - axbz) * a.d.z + (a.p.z - axbz) * b.d.x + (azbx - b.p.z) * a.d.x + (azbx - a.p.x) * b.d.z;
+ T dy = a.d.z * b.p.x + a.p.z * b.d.x - a.d.x * b.p.z - a.p.x * b.d.z;
T axby = a.p.x * b.p.y;
T aybx = a.p.y * b.p.x;
T pz = axby - aybx;
- T dz = (b.p.y - aybx) * a.d.x + (a.p.x - aybx) * b.d.y + (axby - b.p.x) * a.d.y + (axby - a.p.y) * b.d.x;
+ T dz = a.d.x * b.p.y + a.p.x * b.d.y - a.d.y * b.p.x - a.p.y * b.d.x;
return DifferentialPair<vector<T, 3>>(vector<T, 3>(px, py, pz), vector<T, 3>.Differential(dx, dy, dz));
}