diff options
| author | Lifan Wu <winmad.wlf@gmail.com> | 2024-04-23 10:19:30 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-23 10:19:30 -0700 |
| commit | 0d9206855888d694e0b8f91be4524b57293773d6 (patch) | |
| tree | 4b9a32dd767883f3bbe5f9c3640c2221020de9f3 /source/slang/diff.meta.slang | |
| parent | 9f892c96c9cc093988a7d1527fdf1b0005031ded (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.slang | 6 |
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)); } |
