Last active
December 1, 2024 05:00
-
-
Save tiye/c96ceb4345162ca5a4e3b37478e1e0bd to your computer and use it in GitHub Desktop.
expanding 4D geometric algebra multiplication
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// struct holding 4D geometric algebra(contains faults....) | |
struct GometricAlgebra4D { | |
s: f32; | |
x: f32; | |
y: f32; | |
z: f32; | |
w: f32; | |
xy: f32; | |
yz: f32; | |
zw: f32; | |
wx: f32; | |
zx: f32; | |
wy: f32; | |
xyz: f32; | |
yzw: f32; | |
zwx: f32; | |
wxy: f32; | |
xyzw: f32; | |
} | |
// now I try to find the equation for the geometric product of two 4D vectors | |
// a is | |
a.s + a.x * e1 + a.y * e2 + a.z * e3 + a.w * e4 | |
+ a.xy * e12 + a.yz * e23 + a.zw * e34 + a.wx * e41 + a.zx * e41 + a.wy * e42 | |
+ a.xyz * e123 + a.yzw * e234 + a.zwx * e341 + a.wxy * e412 | |
+ a.xyzw * e1234 | |
// b is | |
b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 | |
+ b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 | |
+ b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 | |
+ b.xyzw * e1234 | |
// which is | |
a.s * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.x * e1 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.y * e2 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.z * e3 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.w * e4 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.xy * e12 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.yz * e23 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.zw * e34 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.wx * e41 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.zx * e41 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.wy * e42 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.xyz * e123 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.yzw * e234 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.zwx * e341 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.wxy * e412 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
+ a.xyzw * e1234 * (b.s + b.x * e1 + b.y * e2 + b.z * e3 + b.w * e4 + b.xy * e12 + b.yz * e23 + b.zw * e34 + b.wx * e41 + b.zx * e31 + b.wy * e42 + b.xyz * e123 + b.yzw * e234 + b.zwx * e341 + b.wxy * e412 + b.xyzw * e1234) | |
// expand each line we got | |
a.s * b.s + a.s * b.x * e1 + a.s * b.y * e2 + a.s * b.z * e3 + a.s * b.w * e4 + a.s * b.xy * e12 + a.s * b.yz * e23 + a.s * b.zw * e34 + a.s * b.wx * e41 + a.s * b.zx * e31 + a.s * b.wy * e42 + a.s * b.xyz * e123 + a.s * b.yzw * e234 + a.s * b.zwx * e341 + a.s * b.wxy * e412 + a.s * b.xyzw * e1234 | |
+ a.x * e1 * b.s + a.x * e1 * b.x * e1 + a.x * e1 * b.y * e2 + a.x * e1 * b.z * e3 + a.x * e1 * b.w * e4 + a.x * e1 * b.xy * e12 + a.x * e1 * b.yz * e23 + a.x * e1 * b.zw * e34 + a.x * e1 * b.wx * e41 + a.x * e1 * b.zx * e31 + a.x * e1 * b.wy * e42 + a.x * e1 * b.xyz * e123 + a.x * e1 * b.yzw * e234 + a.x * e1 * b.zwx * e341 + a.x * e1 * b.wxy * e412 + a.x * e1 * b.xyzw * e1234 | |
+ a.y * e2 * b.s + a.y * e2 * b.x * e1 + a.y * e2 * b.y * e2 + a.y * e2 * b.z * e3 + a.y * e2 * b.w * e4 + a.y * e2 * b.xy * e12 + a.y * e2 * b.yz * e23 + a.y * e2 * b.zw * e34 + a.y * e2 * b.wx * e41 + a.y * e2 * b.zx * e31 + a.y * e2 * b.wy * e42 + a.y * e2 * b.xyz * e123 + a.y * e2 * b.yzw * e234 + a.y * e2 * b.zwx * e341 + a.y * e2 * b.wxy * e412 + a.y * e2 * b.xyzw * e1234 | |
+ a.z * e3 * b.s + a.z * e3 * b.x * e1 + a.z * e3 * b.y * e2 + a.z * e3 * b.z * e3 + a.z * e3 * b.w * e4 + a.z * e3 * b.xy * e12 + a.z * e3 * b.yz * e23 + a.z * e3 * b.zw * e34 + a.z * e3 * b.wx * e41 + a.z * e3 * b.zx * e31 + a.z * e3 * b.wy * e42 + a.z * e3 * b.xyz * e123 + a.z * e3 * b.yzw * e234 + a.z * e3 * b.zwx * e341 + a.z * e3 * b.wxy * e412 + a.z * e3 * b.xyzw * e1234 | |
+ a.w * e4 * b.s + a.w * e4 * b.x * e1 + a.w * e4 * b.y * e2 + a.w * e4 * b.z * e3 + a.w * e4 * b.w * e4 + a.w * e4 * b.xy * e12 + a.w * e4 * b.yz * e23 + a.w * e4 * b.zw * e34 + a.w * e4 * b.wx * e41 + a.w * e4 * b.zx * e31 + a.w * e4 * b.wy * e42 + a.w * e4 * b.xyz * e123 + a.w * e4 * b.yzw * e234 + a.w * e4 * b.zwx * e341 + a.w * e4 * b.wxy * e412 + a.w * e4 * b.xyzw * e1234 | |
+ a.xy * e12 * b.s + a.xy * e12 * b.x * e1 + a.xy * e12 * b.y * e2 + a.xy * e12 * b.z * e3 + a.xy * e12 * b.w * e4 + a.xy * e12 * b.xy * e12 + a.xy * e12 * b.yz * e23 + a.xy * e12 * b.zw * e34 + a.xy * e12 * b.wx * e41 + a.xy * e12 * b.zx * e31 + a.xy * e12 * b.wy * e42 + a.xy * e12 * b.xyz * e123 + a.xy * e12 * b.yzw * e234 + a.xy * e12 * b.zwx * e341 + a.xy * e12 * b.wxy * e412 + a.xy * e12 * b.xyzw * e1234 | |
+ a.yz * e23 * b.s + a.yz * e23 * b.x * e1 + a.yz * e23 * b.y * e2 + a.yz * e23 * b.z * e3 + a.yz * e23 * b.w * e4 + a.yz * e23 * b.xy * e12 + a.yz * e23 * b.yz * e23 + a.yz * e23 * b.zw * e34 + a.yz * e23 * b.wx * e41 + a.yz * e23 * b.zx * e31 + a.yz * e23 * b.wy * e42 + a.yz * e23 * b.xyz * e123 + a.yz * e23 * b.yzw * e234 + a.yz * e23 * b.zwx * e341 + a.yz * e23 * b.wxy * e412 + a.yz * e23 * b.xyzw * e1234 | |
+ a.zw * e34 * b.s + a.zw * e34 * b.x * e1 + a.zw * e34 * b.y * e2 + a.zw * e34 * b.z * e3 + a.zw * e34 * b.w * e4 + a.zw * e34 * b.xy * e12 + a.zw * e34 * b.yz * e23 + a.zw * e34 * b.zw * e34 + a.zw * e34 * b.wx * e41 + a.zw * e34 * b.zx * e31 + a.zw * e34 * b.wy * e42 + a.zw * e34 * b.xyz * e123 + a.zw * e34 * b.yzw * e234 + a.zw * e34 * b.zwx * e341 + a.zw * e34 * b.wxy * e412 + a.zw * e34 * b.xyzw * e1234 | |
+ a.wx * e41 * b.s + a.wx * e41 * b.x * e1 + a.wx * e41 * b.y * e2 + a.wx * e41 * b.z * e3 + a.wx * e41 * b.w * e4 + a.wx * e41 * b.xy * e12 + a.wx * e41 * b.yz * e23 + a.wx * e41 * b.zw * e34 + a.wx * e41 * b.wx * e41 + a.wx * e41 * b.zx * e31 + a.wx * e41 * b.wy * e42 + a.wx * e41 * b.xyz * e123 + a.wx * e41 * b.yzw * e234 + a.wx * e41 * b.zwx * e341 + a.wx * e41 * b.wxy * e412 + a.wx * e41 * b.xyzw * e1234 | |
+ a.zx * e41 * b.s + a.zx * e41 * b.x * e1 + a.zx * e41 * b.y * e2 + a.zx * e41 * b.z * e3 + a.zx * e41 * b.w * e4 + a.zx * e41 * b.xy * e12 + a.zx * e41 * b.yz * e23 + a.zx * e41 * b.zw * e34 + a.zx * e41 * b.wx * e41 + a.zx * e41 * b.zx * e31 + a.zx * e41 * b.wy * e42 + a.zx * e41 * b.xyz * e123 + a.zx * e41 * b.yzw * e234 + a.zx * e41 * b.zwx * e341 + a.zx * e41 * b.wxy * e412 + a.zx * e41 * b.xyzw * e1234 | |
+ a.wy * e42 * b.s + a.wy * e42 * b.x * e1 + a.wy * e42 * b.y * e2 + a.wy * e42 * b.z * e3 + a.wy * e42 * b.w * e4 + a.wy * e42 * b.xy * e12 + a.wy * e42 * b.yz * e23 + a.wy * e42 * b.zw * e34 + a.wy * e42 * b.wx * e41 + a.wy * e42 * b.zx * e31 + a.wy * e42 * b.wy * e42 + a.wy * e42 * b.xyz * e123 + a.wy * e42 * b.yzw * e234 + a.wy * e42 * b.zwx * e341 + a.wy * e42 * b.wxy * e412 + a.wy * e42 * b.xyzw * e1234 | |
+ a.xyz * e123 * b.s + a.xyz * e123 * b.x * e1 + a.xyz * e123 * b.y * e2 + a.xyz * e123 * b.z * e3 + a.xyz * e123 * b.w * e4 + a.xyz * e123 * b.xy * e12 + a.xyz * e123 * b.yz * e23 + a.xyz * e123 * b.zw * e34 + a.xyz * e123 * b.wx * e41 + a.xyz * e123 * b.zx * e31 + a.xyz * e123 * b.wy * e42 + a.xyz * e123 * b.xyz * e123 + a.xyz * e123 * b.yzw * e234 + a.xyz * e123 * b.zwx * e341 + a.xyz * e123 * b.wxy * e412 + a.xyz * e123 * b.xyzw * e1234 | |
+ a.yzw * e234 * b.s + a.yzw * e234 * b.x * e1 + a.yzw * e234 * b.y * e2 + a.yzw * e234 * b.z * e3 + a.yzw * e234 * b.w * e4 + a.yzw * e234 * b.xy * e12 + a.yzw * e234 * b.yz * e23 + a.yzw * e234 * b.zw * e34 + a.yzw * e234 * b.wx * e41 + a.yzw * e234 * b.zx * e31 + a.yzw * e234 * b.wy * e42 + a.yzw * e234 * b.xyz * e123 + a.yzw * e234 * b.yzw * e234 + a.yzw * e234 * b.zwx * e341 + a.yzw * e234 * b.wxy * e412 + a.yzw * e234 * b.xyzw * e1234 | |
+ a.zwx * e341 * b.s + a.zwx * e341 * b.x * e1 + a.zwx * e341 * b.y * e2 + a.zwx * e341 * b.z * e3 + a.zwx * e341 * b.w * e4 + a.zwx * e341 * b.xy * e12 + a.zwx * e341 * b.yz * e23 + a.zwx * e341 * b.zw * e34 + a.zwx * e341 * b.wx * e41 + a.zwx * e341 * b.zx * e31 + a.zwx * e341 * b.wy * e42 + a.zwx * e341 * b.xyz * e123 + a.zwx * e341 * b.yzw * e234 + a.zwx * e341 * b.zwx * e341 + a.zwx * e341 * b.wxy * e412 + a.zwx * e341 * b.xyzw * e1234 | |
+ a.wxy * e412 * b.s + a.wxy * e412 * b.x * e1 + a.wxy * e412 * b.y * e2 + a.wxy * e412 * b.z * e3 + a.wxy * e412 * b.w * e4 + a.wxy * e412 * b.xy * e12 + a.wxy * e412 * b.yz * e23 + a.wxy * e412 * b.zw * e34 + a.wxy * e412 * b.wx * e41 + a.wxy * e412 * b.zx * e31 + a.wxy * e412 * b.wy * e42 + a.wxy * e412 * b.xyz * e123 + a.wxy * e412 * b.yzw * e234 + a.wxy * e412 * b.zwx * e341 + a.wxy * e412 * b.wxy * e412 + a.wxy * e412 * b.xyzw * e1234 | |
+ a.xyzw * e1234 * b.s + a.xyzw * e1234 * b.x * e1 + a.xyzw * e1234 * b.y * e2 + a.xyzw * e1234 * b.z * e3 + a.xyzw * e1234 * b.w * e4 + a.xyzw * e1234 * b.xy * e12 + a.xyzw * e1234 * b.yz * e23 + a.xyzw * e1234 * b.zw * e34 + a.xyzw * e1234 * b.wx * e41 + a.xyzw * e1234 * b.zx * e31 + a.xyzw * e1234 * b.wy * e42 + a.xyzw * e1234 * b.xyz * e123 + a.xyzw * e1234 * b.yzw * e234 + a.xyzw * e1234 * b.zwx * e341 + a.xyzw * e1234 * b.wxy * e412 + a.xyzw * e1234 * b.xyzw * e1234 | |
// merge e1 e2 e3 e4 in each mutiplication, for example a.x*e1 * b.x*e2 = a.x*b.x*e12, a.x*e23 * b.y*e1 = a.x*b.y*e231 | |
// a.s * b.s + a.s * b.x * e1 + a.s * b.y * e2 + a.s * b.z * e3 + a.s * b.w * e4 + a.s * b.xy * e12 + a.s * b.yz * e23 + a.s * b.zw * e34 + a.s * b.wx * e41 + a.s * b.zx * e31 + a.s * b.wy * e42 + a.s * b.xyz * e123 + a.s * b.yzw * e234 + a.s * b.zwx * e341 + a.s * b.wxy * e412 + a.s * b.xyzw * e1234 | |
a.s * b.s + a.s * b.x * e1 + a.s * b.y * e2 + a.s * b.z * e3 + a.s * b.w * e4 + a.s * b.xy * e12 + a.s * b.yz * e23 + a.s * b.zw * e34 + a.s * b.wx * e41 + a.s * b.zx * e31 + a.s * b.wy * e42 + a.s * b.xyz * e123 + a.s * b.yzw * e234 + a.s * b.zwx * e341 + a.s * b.wxy * e412 + a.s * b.xyzw * e1234 | |
// + a.x * e1 * b.s + a.x * e1 * b.x * e1 + a.x * e1 * b.y * e2 + a.x * e1 * b.z * e3 + a.x * e1 * b.w * e4 + a.x * e1 * b.xy * e12 + a.x * e1 * b.yz * e23 + a.x * e1 * b.zw * e34 + a.x * e1 * b.wx * e41 + a.x * e1 * b.zx * e31 + a.x * e1 * b.wy * e42 + a.x * e1 * b.xyz * e123 + a.x * e1 * b.yzw * e234 + a.x * e1 * b.zwx * e341 + a.x * e1 * b.wxy * e412 + a.x * e1 * b.xyzw * e1234 | |
+ a.x * b.s * e1 + a.x * b.x * e11 + a.x * b.y * e12 + a.x * b.z * e13 + a.x * b.w * e14 + a.x * b.xy * e112 + a.x * b.yz * e123 + a.x * b.zw * e134 + a.x * b.wx * e141 + a.x * b.zx * e131 + a.x * b.wy * e142 + a.x * b.xyz * e1231 + a.x * b.yzw * e1234 + a.x * b.zwx * e1341 + a.x * b.wxy * e1412 + a.x * b.xyzw * e12341 | |
// + a.y * e2 * b.s + a.y * e2 * b.x * e1 + a.y * e2 * b.y * e2 + a.y * e2 * b.z * e3 + a.y * e2 * b.w * e4 + a.y * e2 * b.xy * e12 + a.y * e2 * b.yz * e23 + a.y * e2 * b.zw * e34 + a.y * e2 * b.wx * e41 + a.y * e2 * b.zx * e31 + a.y * e2 * b.wy * e42 + a.y * e2 * b.xyz * e123 + a.y * e2 * b.yzw * e234 + a.y * e2 * b.zwx * e341 + a.y * e2 * b.wxy * e412 + a.y * e2 * b.xyzw * e1234 | |
+ a.y * b.s * e2 + a.y * b.x * e21 + a.y * b.y * e22 + a.y * b.z * e23 + a.y * b.w * e24 + a.y * b.xy * e212 + a.y * b.yz * e223 + a.y * b.zw * e234 + a.y * b.wx * e241 + a.y * b.zx * e241 + a.y * b.wy * e242 + a.y * b.xyz * e2123 + a.y * b.yzw * e2234 + a.y * b.zwx * e2341 + a.y * b.wxy * e2412 + a.y * b.xyzw * e21234 | |
// + a.z * e3 * b.s + a.z * e3 * b.x * e1 + a.z * e3 * b.y * e2 + a.z * e3 * b.z * e3 + a.z * e3 * b.w * e4 + a.z * e3 * b.xy * e12 + a.z * e3 * b.yz * e23 + a.z * e3 * b.zw * e34 + a.z * e3 * b.wx * e41 + a.z * e3 * b.zx * e31 + a.z * e3 * b.wy * e42 + a.z * e3 * b.xyz * e123 + a.z * e3 * b.yzw * e234 + a.z * e3 * b.zwx * e341 + a.z * e3 * b.wxy * e412 + a.z * e3 * b.xyzw * e1234 | |
+ a.z * b.s * e3 + a.z * b.x * e31 + a.z * b.y * e32 + a.z * b.z * e33 + a.z * b.w * e34 + a.z * b.xy * e312 + a.z * b.yz * e323 + a.z * b.zw * e334 + a.z * b.wx * e341 + a.z * b.zx * e331 + a.z * b.wy * e342 + a.z * b.xyz * e3123 + a.z * b.yzw * e3234 + a.z * b.zwx * e3341 + a.z * b.wxy * e3412 + a.z * b.xyzw * e31234 | |
// + a.w * e4 * b.s + a.w * e4 * b.x * e1 + a.w * e4 * b.y * e2 + a.w * e4 * b.z * e3 + a.w * e4 * b.w * e4 + a.w * e4 * b.xy * e12 + a.w * e4 * b.yz * e23 + a.w * e4 * b.zw * e34 + a.w * e4 * b.wx * e41 + a.w * e4 * b.zx * e31 + a.w * e4 * b.wy * e42 + a.w * e4 * b.xyz * e123 + a.w * e4 * b.yzw * e234 + a.w * e4 * b.zwx * e341 + a.w * e4 * b.wxy * e412 + a.w * e4 * b.xyzw * e1234 | |
+ a.w * b.s * e4 + a.w * b.x * e41 + a.w * b.y * e42 + a.w * b.z * e43 + a.w * b.w * e44 + a.w * b.xy * e412 + a.w * b.yz * e423 + a.w * b.zw * e434 + a.w * b.wx * e441 + a.w * b.zx * e431 + a.w * b.wy * e442 + a.w * b.xyz * e4123 + a.w * b.yzw * e4234 + a.w * b.zwx * e4341 + a.w * b.wxy * e4412 + a.w * b.xyzw * e41234 | |
// + a.xy * e12 * b.s + a.xy * e12 * b.x * e1 + a.xy * e12 * b.y * e2 + a.xy * e12 * b.z * e3 + a.xy * e12 * b.w * e4 + a.xy * e12 * b.xy * e12 + a.xy * e12 * b.yz * e23 + a.xy * e12 * b.zw * e34 + a.xy * e12 * b.wx * e41 + a.xy * e12 * b.zx * e31 + a.xy * e12 * b.wy * e42 + a.xy * e12 * b.xyz * e123 + a.xy * e12 * b.yzw * e234 + a.xy * e12 * b.zwx * e341 + a.xy * e12 * b.wxy * e412 + a.xy * e12 * b.xyzw * e1234 | |
+ a.xy * b.s * e12 + a.xy * b.x * e121 + a.xy * b.y * e122 + a.xy * b.z * e123 + a.xy * b.w * e124 + a.xy * b.xy * e1212 + a.xy * b.yz * e1223 + a.xy * b.zw * e1234 + a.xy * b.wx * e1241 + a.xy * b.zx * e1231 + a.xy * b.wy * e1242 + a.xy * b.xyz * e12123 + a.xy * b.yzw * e12234 + a.xy * b.zwx * e12341 + a.xy * b.wxy * e12412 + a.xy * b.xyzw * e12234 | |
// + a.yz * e23 * b.s + a.yz * e23 * b.x * e1 + a.yz * e23 * b.y * e2 + a.yz * e23 * b.z * e3 + a.yz * e23 * b.w * e4 + a.yz * e23 * b.xy * e12 + a.yz * e23 * b.yz * e23 + a.yz * e23 * b.zw * e34 + a.yz * e23 * b.wx * e41 + a.yz * e23 * b.zx * e31 + a.yz * e23 * b.wy * e42 + a.yz * e23 * b.xyz * e123 + a.yz * e23 * b.yzw * e234 + a.yz * e23 * b.zwx * e341 + a.yz * e23 * b.wxy * e412 + a.yz * e23 * b.xyzw * e1234 | |
+ a.yz * b.s * e23 + a.yz * b.x * e231 + a.yz * b.y * e232 + a.yz * b.z * e233 + a.yz * b.w * e234 + a.yz * b.xy * e2312 + a.yz * b.yz * e2323 + a.yz * b.zw * e2334 + a.yz * b.wx * e2341 + a.yz * b.zx * e2331 + a.yz * b.wy * e2342 + a.yz * b.xyz * e23123 + a.yz * b.yzw * e23234 + a.yz * b.zwx * e23341 + a.yz * b.wxy * e23412 + a.yz * b.xyzw * e23234 | |
// + a.zw * e34 * b.s + a.zw * e34 * b.x * e1 + a.zw * e34 * b.y * e2 + a.zw * e34 * b.z * e3 + a.zw * e34 * b.w * e4 + a.zw * e34 * b.xy * e12 + a.zw * e34 * b.yz * e23 + a.zw * e34 * b.zw * e34 + a.zw * e34 * b.wx * e41 + a.zw * e34 * b.zx * e31 + a.zw * e34 * b.wy * e42 + a.zw * e34 * b.xyz * e123 + a.zw * e34 * b.yzw * e234 + a.zw * e34 * b.zwx * e341 + a.zw * e34 * b.wxy * e412 + a.zw * e34 * b.xyzw * e1234 | |
+ a.zw * b.s * e34 + a.zw * b.x * e341 + a.zw * b.y * e342 + a.zw * b.z * e343 + a.zw * b.w * e344 + a.zw * b.xy * e3412 + a.zw * b.yz * e3423 + a.zw * b.zw * e3434 + a.zw * b.wx * e3441 + a.zw * b.zx * e3431 + a.zw * b.wy * e3442 + a.zw * b.xyz * e34123 + a.zw * b.yzw * e34234 + a.zw * b.zwx * e34341 + a.zw * b.wxy * e34412 + a.zw * b.xyzw * e34234 | |
// + a.wx * e41 * b.s + a.wx * e41 * b.x * e1 + a.wx * e41 * b.y * e2 + a.wx * e41 * b.z * e3 + a.wx * e41 * b.w * e4 + a.wx * e41 * b.xy * e12 + a.wx * e41 * b.yz * e23 + a.wx * e41 * b.zw * e34 + a.wx * e41 * b.wx * e41 + a.wx * e41 * b.zx * e31 + a.wx * e41 * b.wy * e42 + a.wx * e41 * b.xyz * e123 + a.wx * e41 * b.yzw * e234 + a.wx * e41 * b.zwx * e341 + a.wx * e41 * b.wxy * e412 + a.wx * e41 * b.xyzw * e1234 | |
+ a.wx * b.s * e41 + a.wx * b.x * e411 + a.wx * b.y * e412 + a.wx * b.z * e413 + a.wx * b.w * e414 + a.wx * b.xy * e4112 + a.wx * b.yz * e4123 + a.wx * b.zw * e4134 + a.wx * b.wx * e4141 + a.wx * b.zx * e4131 + a.wx * b.wy * e4142 + a.wx * b.xyz * e4123 + a.wx * b.yzw * e4134 + a.wx * b.zwx * e41341 + a.wx * b.wxy * e41412 + a.wx * b.xyzw * e41234 | |
// + a.zx * e41 * b.s + a.zx * e41 * b.x * e1 + a.zx * e41 * b.y * e2 + a.zx * e41 * b.z * e3 + a.zx * e41 * b.w * e4 + a.zx * e41 * b.xy * e12 + a.zx * e41 * b.yz * e23 + a.zx * e41 * b.zw * e34 + a.zx * e41 * b.wx * e41 + a.zx * e41 * b.zx * e31 + a.zx * e41 * b.wy * e42 + a.zx * e41 * b.xyz * e123 + a.zx * e41 * b.yzw * e234 + a.zx * e41 * b.zwx * e341 + a.zx * e41 * b.wxy * e412 + a.zx * e41 * b.xyzw * e1234 | |
+ a.zx * b.s * e41 + a.zx * b.x * e411 + a.zx * b.y * e412 + a.zx * b.z * e413 + a.zx * b.w * e414 + a.zx * b.xy * e4112 + a.zx * b.yz * e4123 + a.zx * b.zw * e4134 + a.zx * b.wx * e4141 + a.zx * b.zx * e4131 + a.zx * b.wy * e4142 + a.zx * b.xyz * e41123 + a.zx * b.yzw * e31234 + a.zx * b.zwx * e41341 + a.zx * b.wxy * e41412 + a.zx * b.xyzw * e41234 | |
// + a.wy * e42 * b.s + a.wy * e42 * b.x * e1 + a.wy * e42 * b.y * e2 + a.wy * e42 * b.z * e3 + a.wy * e42 * b.w * e4 + a.wy * e42 * b.xy * e12 + a.wy * e42 * b.yz * e23 + a.wy * e42 * b.zw * e34 + a.wy * e42 * b.wx * e41 + a.wy * e42 * b.zx * e31 + a.wy * e42 * b.wy * e42 + a.wy * e42 * b.xyz * e123 + a.wy * e42 * b.yzw * e234 + a.wy * e42 * b.zwx * e341 + a.wy * e42 * b.wxy * e412 + a.wy * e42 * b.xyzw * e1234 | |
+ a.wy * b.s * e42 + a.wy * b.x * e421 + a.wy * b.y * e422 + a.wy * b.z * e423 + a.wy * b.w * e424 + a.wy * b.xy * e4212 + a.wy * b.yz * e4223 + a.wy * b.zw * e4234 + a.wy * b.wx * e4241 + a.wy * b.zx * e4231 + a.wy * b.wy * e4242 + a.wy * b.xyz * e42123 + a.wy * b.yzw * e42234 + a.wy * b.zwx * e42341 + a.wy * b.wxy * e42412 + a.wy * b.xyzw * e42234 | |
// + a.xyz * e123 * b.s + a.xyz * e123 * b.x * e1 + a.xyz * e123 * b.y * e2 + a.xyz * e123 * b.z * e3 + a.xyz * e123 * b.w * e4 + a.xyz * e123 * b.xy * e12 + a.xyz * e123 * b.yz * e23 + a.xyz * e123 * b.zw * e34 + a.xyz * e123 * b.wx * e41 + a.xyz * e123 * b.zx * e31 + a.xyz * e123 * b.wy * e42 + a.xyz * e123 * b.xyz * e123 + a.xyz * e123 * b.yzw * e234 + a.xyz * e123 * b.zwx * e341 + a.xyz * e123 * b.wxy * e412 + a.xyz * e123 * b.xyzw * e1234 | |
+ a.xyz * b.s * e123 + a.xyz * b.x * e1231 + a.xyz * b.y * e1232 + a.xyz * b.z * e1233 + a.xyz * b.w * e1234 + a.xyz * b.xy * e12312 + a.xyz * b.yz * e12323 + a.xyz * b.zw * e12334 + a.xyz * b.wx * e12341 + a.xyz * b.zx * e12331 + a.xyz * b.wy * e12342 + a.xyz * b.xyz * e123123 + a.xyz * b.yzw * e123234 + a.xyz * b.zwx * e123341 + a.xyz * b.wxy * e123412 + a.xyz * b.xyzw * e12341 | |
// + a.yzw * e234 * b.s + a.yzw * e234 * b.x * e1 + a.yzw * e234 * b.y * e2 + a.yzw * e234 * b.z * e3 + a.yzw * e234 * b.w * e4 + a.yzw * e234 * b.xy * e12 + a.yzw * e234 * b.yz * e23 + a.yzw * e234 * b.zw * e34 + a.yzw * e234 * b.wx * e41 + a.yzw * e234 * b.zx * e31 + a.yzw * e234 * b.wy * e42 + a.yzw * e234 * b.xyz * e123 + a.yzw * e234 * b.yzw * e234 + a.yzw * e234 * b.zwx * e341 + a.yzw * e234 * b.wxy * e412 + a.yzw * e234 * b.xyzw * e1234 | |
+ a.yzw * b.s * e234 + a.yzw * b.x * e2341 + a.yzw * b.y * e2342 + a.yzw * b.z * e2343 + a.yzw * b.w * e2344 + a.yzw * b.xy * e23412 + a.yzw * b.yz * e23423 + a.yzw * b.zw * e23434 + a.yzw * b.wx * e23441 + a.yzw * b.zx * e23431 + a.yzw * b.wy * e23442 + a.yzw * b.xyz * e234123 + a.yzw * b.yzw * e234234 + a.yzw * b.zwx * e234341 + a.yzw * b.wxy * e234412 + a.yzw * b.xyzw * e2341 | |
// + a.zwx * e341 * b.s + a.zwx * e341 * b.x * e1 + a.zwx * e341 * b.y * e2 + a.zwx * e341 * b.z * e3 + a.zwx * e341 * b.w * e4 + a.zwx * e341 * b.xy * e12 + a.zwx * e341 * b.yz * e23 + a.zwx * e341 * b.zw * e34 + a.zwx * e341 * b.wx * e41 + a.zwx * e341 * b.zx * e31 + a.zwx * e341 * b.wy * e42 + a.zwx * e341 * b.xyz * e123 + a.zwx * e341 * b.yzw * e234 + a.zwx * e341 * b.zwx * e341 + a.zwx * e341 * b.wxy * e412 + a.zwx * e341 * b.xyzw * e1234 | |
+ a.zwx * b.s * e341 + a.zwx * b.x * e3411 + a.zwx * b.y * e3412 + a.zwx * b.z * e3413 + a.zwx * b.w * e3414 + a.zwx * b.xy * e3412 + a.zwx * b.yz * e34123 + a.zwx * b.zw * e34134 + a.zwx * b.wx * e34141 + a.zwx * b.zx * e34131 + a.zwx * b.wy * e34142 + a.zwx * b.xyz * e34123 + a.zwx * b.yzw * e34134 + a.zwx * b.zwx * e34141 + a.zwx * b.wxy * e34142 + a.zwx * b.xyzw * e34134 | |
// + a.wxy * e412 * b.s + a.wxy * e412 * b.x * e1 + a.wxy * e412 * b.y * e2 + a.wxy * e412 * b.z * e3 + a.wxy * e412 * b.w * e4 + a.wxy * e412 * b.xy * e12 + a.wxy * e412 * b.yz * e23 + a.wxy * e412 * b.zw * e34 + a.wxy * e412 * b.wx * e41 + a.wxy * e412 * b.zx * e31 + a.wxy * e412 * b.wy * e42 + a.wxy * e412 * b.xyz * e123 + a.wxy * e412 * b.yzw * e234 + a.wxy * e412 * b.zwx * e341 + a.wxy * e412 * b.wxy * e412 + a.wxy * e412 * b.xyzw * e1234 | |
+ a.wxy * b.s * e412 + a.wxy * b.x * e4121 + a.wxy * b.y * e4122 + a.wxy * b.z * e4123 + a.wxy * b.w * e4124 + a.wxy * b.xy * e41212 + a.wxy * b.yz * e41223 + a.wxy * b.zw * e41234 + a.wxy * b.wx * e41241 + a.wxy * b.zx * e41231 + a.wxy * b.wy * e41242 + a.wxy * b.xyz * e412123 + a.wxy * b.yzw * e41234 + a.wxy * b.zwx * e412341 + a.wxy * b.wxy * e412412 + a.wxy * b.xyzw * e41234 | |
// + a.xyzw * e1234 * b.s + a.xyzw * e1234 * b.x * e1 + a.xyzw * e1234 * b.y * e2 + a.xyzw * e1234 * b.z * e3 + a.xyzw * e1234 * b.w * e4 + a.xyzw * e1234 * b.xy * e12 + a.xyzw * e1234 * b.yz * e23 + a.xyzw * e1234 * b.zw * e34 + a.xyzw * e1234 * b.wx * e41 + a.xyzw * e1234 * b.zx * e31 + a.xyzw * e1234 * b.wy * e42 + a.xyzw * e1234 * b.xyz * e123 + a.xyzw * e1234 * b.yzw * e234 + a.xyzw * e1234 * b.zwx * e341 + a.xyzw * e1234 * b.wxy * e412 + a.xyzw * e1234 * b.xyzw * e1234 | |
+ a.xyzw * b.s * e1234 + a.xyzw * b.x * e12341 + a.xyzw * b.y * e12342 + a.xyzw * b.z * e12343 + a.xyzw * b.w * e12344 + a.xyzw * b.xy * e123412 + a.xyzw * b.yz * e123423 + a.xyzw * b.zw * e123434 + a.xyzw * b.wx * e123441 + a.xyzw * b.zx * e123431 + a.xyzw * b.wy * e123442 + a.xyzw * b.xyz * e123123 + a.xyzw * b.yzw * e123234 + a.xyzw * b.zwx * e123341 + a.xyzw * b.wxy * e123412 + a.xyzw * b.xyzw * e123434 | |
// calculate e1 e2 e3 e4 mutiplication, only merge the duplicated pair, for example e112 turns to e2 since e11 is 1, e111 turns to e1 since e11 is 1, if we swap the order of e12 to e21 to elimilate duplicated pair, we need to change the sign of the result | |
// a.s*b.s + a.s*b.x * e1 + a.s*b.y * e2 + a.s*b.z * e3 + a.s*b.w * e4 + a.s*b.xy * e12 + a.s*b.yz * e23 + a.s*b.zw * e34 + a.s*b.wx * e41 + a.s*b.zx * e31 + a.s*b.wy * e42 + a.s*b.xyz * e123 + a.s*b.yzw * e234 + a.s*b.zwx * e341 + a.s*b.wxy * e412 + a.s*b.xyzw * e1234 | |
a.s*b.s + a.s*b.x * e1 + a.s*b.y * e2 + a.s*b.z * e3 + a.s*b.w * e4 + a.s*b.xy * e12 + a.s*b.yz * e23 + a.s*b.zw * e34 + a.s*b.wx * e41 + a.s*b.zx * e31 + a.s*b.wy * e42 + a.s*b.xyz * e123 + a.s*b.yzw * e234 + a.s*b.zwx * e341 + a.s*b.wxy * e412 + a.s*b.xyzw * e1234 | |
// + a.x*b.s * e1 + a.x*b.x * e11 + a.x*b.y * e12 + a.x*b.z * e13 + a.x*b.w * e14 + a.x*b.xy * e112 + a.x*b.yz * e123 + a.x*b.zw * e134 + a.x*b.wx * e141 + a.x*b.zx * e131 + a.x*b.wy * e142 + a.x*b.xyz * e1231 + a.x*b.yzw * e1234 + a.x*b.zwx * e1341 + a.x*b.wxy * e1412 + a.x*b.xyzw * e11234 | |
+ a.x*b.s * e1 + a.x*b.x + a.x*b.y * e12 + a.x*b.z * e13 + a.x*b.w * e14 + a.x*b.xy * e2 + a.x*b.yz * e123 + a.x*b.zw * e134 - a.x*b.wx * e4 - a.x*b.zx * e3 + a.x*b.wy * e142 + a.x*b.xyz * e23 + a.x*b.yzw * e1234 + a.x*b.zwx * e34 - a.x*b.wxy * e42 + a.x*b.xyzw * e234 | |
// + a.y*b.s * e2 + a.y*b.x * e21 + a.y*b.y * e22 + a.y*b.z * e23 + a.y*b.w * e24 + a.y*b.xy * e212 + a.y*b.yz * e223 + a.y*b.zw * e234 + a.y*b.wx * e241 + a.y*b.zx * e231 + a.y*b.wy * e242 + a.y*b.xyz * e2123 + a.y*b.yzw * e2234 + a.y*b.zwx * e2341 + a.y*b.wxy * e2412 + a.y*b.xyzw * e21234 | |
+ a.y*b.s * e2 + a.y*b.x * e21 + a.y*b.y * e22 + a.y*b.z * e23 + a.y*b.w * e24 + a.y*b.xy * e212 + a.y*b.yz * e223 + a.y*b.zw * e234 + a.y*b.wx * e241 + a.y*b.zx * e231 - a.y*b.wy * e4 - a.y*b.xyz * e13 + a.y*b.yzw * e34 + a.y*b.zwx * e2341 + a.y*b.wxy * e41 - a.y*b.xyzw * e134 | |
// + a.z*b.s * e3 + a.z*b.x * e31 + a.z*b.y * e32 + a.z*b.z * e33 + a.z*b.w * e34 + a.z*b.xy * e312 + a.z*b.yz * e323 + a.z*b.zw * e334 + a.z*b.wx * e341 + a.z*b.zx * e331 + a.z*b.wy * e342 + a.z*b.xyz * e3123 + a.z*b.yzw * e3234 + a.z*b.zwx * e3341 + a.z*b.wxy * e3412 + a.z*b.xyzw * e31234 | |
+ a.z*b.s * e3 + a.z*b.x * e31 + a.z*b.y * e32 + a.z*b.z + a.z*b.w * e34 + a.z*b.xy * e312 - a.z*b.yz * e2 + a.z*b.zw * e4 + a.z*b.wx * e341 + a.z*b.zx * e1 + a.z*b.wy * e342 + a.z*b.xyz * e12 - a.z*b.yzw * e24 + a.z*b.zwx * e41 + a.z*b.wxy * e3412 + a.z*b.xyzw * e124 | |
// + a.w*b.s * e4 + a.w*b.x * e41 + a.w*b.y * e42 + a.w*b.z * e43 + a.w*b.w * e44 + a.w*b.xy * e412 + a.w*b.yz * e423 + a.w*b.zw * e434 + a.w*b.wx * e441 + a.w*b.zx * e431 + a.w*b.wy * e442 + a.w*b.xyz * e4123 + a.w*b.yzw * e4234 + a.w*b.zwx * e4341 + a.w*b.wxy * e4412 + a.w*b.xyzw * e41234 | |
+ a.w*b.s * e4 + a.w*b.x * e41 + a.w*b.y * e42 + a.w*b.z * e43 + a.w*b.w + a.w*b.xy * e412 + a.w*b.yz * e423 - a.w*b.zw * e3 + a.w*b.wx * e1 + a.w*b.zx * e431 + a.w*b.wy * e2 + a.w*b.xyz * e4123 + a.w*b.yzw * e23 - a.w*b.zwx * e31 + a.w*b.wxy * e12 - a.w*b.xyzw * e123 | |
// + a.xy*b.s * e12 + a.xy*b.x * e121 + a.xy*b.y * e122 + a.xy*b.z * e123 + a.xy*b.w * e124 + a.xy*b.xy * e1212 + a.xy*b.yz * e1223 + a.xy*b.zw * e1234 + a.xy*b.wx * e1241 + a.xy*b.zx * e1231 + a.xy*b.wy * e1242 + a.xy*b.xyz * e1223 + a.xy*b.yzw * e1234 + a.xy*b.zwx * e12341 + a.xy*b.wxy * e12412 + a.xy*b.xyzw * e121234 | |
+ a.xy*b.s * e12 - a.xy*b.x * e2 + a.xy*b.y * e1 + a.xy*b.z * e123 + a.xy*b.w * e124 - a.xy*b.xy + a.xy*b.yz * e13 + a.xy*b.zw * e1234 + a.xy*b.wx * e24 + a.xy*b.zx * e23 - a.xy*b.wy * e14 + a.xy*b.xyz * e13 + a.xy*b.yzw * e1234 - a.xy*b.zwx * e234 - a.xy*b.wxy * e4 + a.xy*b.xyzw * e134 | |
// + a.yz*b.s * e23 + a.yz*b.x * e231 + a.yz*b.y * e232 + a.yz*b.z * e233 + a.yz*b.w * e234 + a.yz*b.xy * e2312 + a.yz*b.yz * e2323 + a.yz*b.zw * e2334 + a.yz*b.wx * e2341 + a.yz*b.zx * e2331 + a.yz*b.wy * e2342 + a.yz*b.xyz * e23123 + a.yz*b.yzw * e23234 + a.yz*b.zwx * e23341 + a.yz*b.wxy * e23412 + a.yz*b.xyzw * e231234 | |
+ a.yz*b.s * e23 + a.yz*b.x * e231 - a.yz*b.y * e3 + a.yz*b.z * e2 + a.yz*b.w * e234 + a.yz*b.xy * e31 - a.yz*b.yz + a.yz*b.zw * e24 + a.yz*b.wx * e2341 + a.yz*b.zx * e21 + a.yz*b.wy * 234 - a.yz*b.xyz * e1 - a.yz*b.yzw * e4 + a.yz*b.zwx * e241 - a.yz*b.wxy * e341 - a.yz*b.xyzw * e14 | |
// + a.zw*b.s * e34 + a.zw*b.x * e341 + a.zw*b.y * e342 + a.zw*b.z * e343 + a.zw*b.w * e344 + a.zw*b.xy * e3412 + a.zw*b.yz * e3423 + a.zw*b.zw * e3434 + a.zw*b.wx * e3441 + a.zw*b.zx * e3431 + a.zw*b.wy * e3442 + a.zw*b.xyz * e34123 + a.zw*b.yzw * e34234 + a.zw*b.zwx * e34341 + a.zw*b.wxy * e34412 + a.zw*b.xyzw * e341234 | |
+ a.zw*b.s * e34 + a.zw*b.x * e341 + a.zw*b.y * e342 + a.zw*b.z * e343 + a.zw*b.w * e3 + a.zw*b.xy * e3412 + a.zw*b.yz * e42 - a.zw*b.zw + a.zw*b.wx * e31 - a.zw*b.zx * e41 + a.zw*b.wy * e32 - a.zw*b.xyz * e412 - a.zw*b.yzw * e2 - a.zw*b.zwx * e1 + a.zw*b.wxy * e312 - a.zw*b.xyzw * e12 | |
// + a.wx*b.s * e41 + a.wx*b.x * e411 + a.wx*b.y * e412 + a.wx*b.z * e413 + a.wx*b.w * e414 + a.wx*b.xy * e4112 + a.wx*b.yz * e4123 + a.wx*b.zw * e4134 + a.wx*b.wx * e4141 + a.wx*b.zx * e4131 + a.wx*b.wy * e4142 + a.wx*b.xyz * e41123 + a.wx*b.yzw * e41234 + a.wx*b.zwx * e41341 + a.wx*b.wxy * e41412 + a.wx*b.xyzw * e411234 | |
+ a.wx*b.s * e41 + a.wx*b.x * e4 + a.wx*b.y * e412 + a.wx*b.z * e413 - a.wx*b.w * e1 + a.wx*b.xy * e42 + a.wx*b.yz * e4123 + a.wx*b.zw * e13 - a.wx*b.wx - a.wx*b.zx * e43 - a.wx*b.wy * e12 + a.wx*b.xyz * e423 - a.wx*b.yzw * e123 - a.wx*b.zwx * e3 - a.wx*b.wxy * e2 + a.wx*b.xyzw * e23 | |
// + a.zx*b.s * e41 + a.zx*b.x * e411 + a.zx*b.y * e412 + a.zx*b.z * e413 + a.zx*b.w * e414 + a.zx*b.xy * e4112 + a.zx*b.yz * e4123 + a.zx*b.zw * e4134 + a.zx*b.wx * e4141 + a.zx*b.zx * e4131 + a.zx*b.wy * e4142 + a.zx*b.xyz * e31123 + a.zx*b.yzw * e31234 + a.zx*b.zwx * e41341 + a.zx*b.wxy * e41412 + a.zx*b.xyzw * e411234 | |
+ a.zx*b.s * e41 + a.zx*b.x * e4 + a.zx*b.y * e412 + a.zx*b.z * e413 - a.zx*b.w * e1 + a.zx*b.xy * e42 + a.zx*b.yz * e4123 + a.zx*b.zw * e13 - a.zx*b.wx - a.zx*b.zx * e43 - a.zx*b.wy * e12 - a.zx*b.xyz * e2 + a.zx*b.yzw * e124 - a.zx*b.zwx * e3 - a.zx*b.wxy * e2 + a.zx*b.xyzw * e23 | |
// + a.wy*b.s * e42 + a.wy*b.x * e421 + a.wy*b.y * e422 + a.wy*b.z * e423 + a.wy*b.w * e424 + a.wy*b.xy * e4212 + a.wy*b.yz * e4223 + a.wy*b.zw * e4234 + a.wy*b.wx * e4241 + a.wy*b.zx * e4231 + a.wy*b.wy * e4242 + a.wy*b.xyz * e42123 + a.wy*b.yzw * e42234 + a.wy*b.zwx * e42341 + a.wy*b.wxy * e42412 + a.wy*b.xyzw * e421234 | |
+ a.wy*b.s * e42 + a.wy*b.x * e421 + a.wy*b.y * e4 + a.wy*b.z * e423 - a.wy*b.w * e2 - a.wy*b.xy * e41 + a.wy*b.yz * e43 + a.wy*b.zw * e23 - a.wy*b.wx * e21 + a.wy*b.zx * e4231 - a.wy*b.wy - a.wy*b.xyz * e413 - a.wy*b.yzw * e3 + a.wy*b.zwx * e231 + a.wy*b.wxy * e1 - a.wy*b.xyzw * e13 | |
// + a.xyz*b.s * e123 + a.xyz*b.x * e1231 + a.xyz*b.y * e1232 + a.xyz*b.z * e1233 + a.xyz*b.w * e1234 + a.xyz*b.xy * e12312 + a.xyz*b.yz * e12323 + a.xyz*b.zw * e12334 + a.xyz*b.wx * e12341 + a.xyz*b.zx * e12331 + a.xyz*b.wy * e12342 + a.xyz*b.xyz * e123123 + a.xyz*b.yzw * e123234 + a.xyz*b.zwx * e123341 + a.xyz*b.wxy * e123412 + a.xyz*b.xyzw * e1231234 | |
+ a.xyz*b.s * e123 + a.xyz*b.x * e23 - a.xyz*b.y * e13 + a.xyz*b.z * e12 + a.xyz*b.w * e1234 - a.xyz*b.xy * e3 - a.xyz*b.yz * e1 + a.xyz*b.zw * e124 - a.xyz*b.wx * e234 - a.xyz*b.zx * e2 + a.xyz*b.wy * e134 - a.xyz*b.xyz - a.xyz*b.yzw * e14 + a.xyz*b.zwx * e24 - a.xyz*b.wxy * e34 - a.xyz*b.xyzw * e4 | |
// + a.yzw*b.s * e234 + a.yzw*b.x * e2341 + a.yzw*b.y * e2342 + a.yzw*b.z * e2343 + a.yzw*b.w * e2344 + a.yzw*b.xy * e23412 + a.yzw*b.yz * e23423 + a.yzw*b.zw * e23434 + a.yzw*b.wx * e23441 + a.yzw*b.zx * e23431 + a.yzw*b.wy * e23442 + a.yzw*b.xyz * e234123 + a.yzw*b.yzw * e234234 + a.yzw*b.zwx * e234341 + a.yzw*b.wxy * e234412 + a.yzw*b.xyzw * e2341234 | |
+ a.yzw*b.s * e234 + a.yzw*b.x * e2341 + a.yzw*b.y * e34 - a.yzw*b.z * e24 + a.yzw*b.w * e23 - a.yzw*b.xy * e341 - a.yzw*b.yz * e4 - a.yzw*b.zw * e2 + a.yzw*b.wx * e231 - a.yzw*b.zx * e241 - a.yzw*b.wy * e3 - a.yzw*b.xyz * e41 - a.yzw*b.yzw - a.yzw*b.zwx * e21 + a.yzw*b.wxy * e31 + a.yzw*b.xyzw * e1 | |
// + a.zwx*b.s * e341 + a.zwx*b.x * e3411 + a.zwx*b.y * e3412 + a.zwx*b.z * e3413 + a.zwx*b.w * e3414 + a.zwx*b.xy * e3412 + a.zwx*b.yz * e34123 + a.zwx*b.zw * e34134 + a.zwx*b.wx * e34141 + a.zwx*b.zx * e34131 + a.zwx*b.wy * e34142 + a.zwx*b.xyz * e341123 + a.zwx*b.yzw * e341234 + a.zwx*b.zwx * e341341 + a.zwx*b.wxy * e341412 + a.zwx*b.xyzw * e3411234 | |
+ a.zwx*b.s * e341 + a.zwx*b.x * e34 + a.zwx*b.y * e3412 + a.zwx*b.z * e41 - a.zwx*b.w * e31 + a.zwx*b.xy * e3412 - a.zwx*b.yz * e412 - a.zwx*b.zw * e1 - a.zwx*b.wx * e3 + a.zwx*b.zx * e4 - a.zwx*b.wy * e312 + a.zwx*b.xyz * e42 - a.zwx*b.yzw * e12 - a.zwx*b.zwx - a.zwx*b.wxy * e32 - a.zwx*b.xyzw * e2 | |
// + a.wxy*b.s * e412 + a.wxy*b.x * e4121 + a.wxy*b.y * e4122 + a.wxy*b.z * e4123 + a.wxy*b.w * e4124 + a.wxy*b.xy * e41212 + a.wxy*b.yz * e41223 + a.wxy*b.zw * e41234 + a.wxy*b.wx * e41241 + a.wxy*b.zx * e41231 + a.wxy*b.wy * e41242 + a.wxy*b.xyz * e412123 + a.wxy*b.yzw * e41234 + a.wxy*b.zwx * e412341 + a.wxy*b.wxy * e412412 + a.wxy*b.xyzw * e4121234 | |
+ a.wxy*b.s * e412 - a.wxy*b.x * e42 + a.wxy*b.y * e41 + a.wxy*b.z * e4123 + a.wxy*b.w * e12 - a.wxy*b.xy * e4 + a.wxy*b.yz * e413 - a.wxy*b.zw * e123 - a.wxy*b.wx * e2 + a.wxy*b.zx * e423 + a.wxy*b.wy * e1 - a.wxy*b.xyz * e43 - a.wxy*b.yzw * e123 - a.wxy*b.zwx * e23 - a.wxy*b.wxy + a.wxy*b.xyzw * e3 | |
// + a.xyzw*b.s * e1234 + a.xyzw*b.x * e12341 + a.xyzw*b.y * e12342 + a.xyzw*b.z * e12343 + a.xyzw*b.w * e12344 + a.xyzw*b.xy * e123412 + a.xyzw*b.yz * e123423 + a.xyzw*b.zw * e123434 + a.xyzw*b.wx * e123441 + a.xyzw*b.zx * e123431 + a.xyzw*b.wy * e123442 + a.xyzw*b.xyz * e1234123 + a.xyzw*b.yzw * e1234234 + a.xyzw*b.zwx * e1234341 + a.xyzw * b.wxy * e1234412 + a.xyzw * b.xyzw * e12341234 | |
+ a.xyzw*b.s * e1234 - a.xyzw*b.x * e234 + a.xyzw*b.y * e134 - a.xyzw*b.z * e124 + a.xyzw*b.w * e123 - a.xyzw*b.xy * e34 - a.xyzw*b.yz * e14 - a.xyzw*b.zw * e12 + a.xyzw*b.wx * e23 - a.xyzw*b.zx * e24 - a.xyzw*b.wy * e13 + a.xyzw*b.xyz * e4 - a.xyzw*b.yzw * e1 + a.xyzw*b.zwx * e2 - a.xyzw * b.wxy * e3 - a.xyzw * b.xyzw | |
a.s*b.s + a.s*b.x * e1 + a.s*b.y * e2 + a.s*b.z * e3 + a.s*b.w * e4 + a.s*b.xy * e12 + a.s*b.yz * e23 + a.s*b.zw * e34 + a.s*b.wx * e41 + a.s*b.zx * e31 + a.s*b.wy * e42 + a.s*b.xyz * e123 + a.s*b.yzw * e234 + a.s*b.zwx * e341 + a.s*b.wxy * e412 + a.s*b.xyzw * e1234 | |
+ a.x*b.s * e1 + a.x*b.x + a.x*b.y * e12 + a.x*b.z * e13 + a.x*b.w * e14 + a.x*b.xy * e2 + a.x*b.yz * e123 + a.x*b.zw * e134 - a.x*b.wx * e4 - a.x*b.zx * e3 + a.x*b.wy * e142 + a.x*b.xyz * e23 + a.x*b.yzw * e1234 + a.x*b.zwx * e34 - a.x*b.wxy * e42 + a.x*b.xyzw * e234 | |
+ a.y*b.s * e2 + a.y*b.x * e21 + a.y*b.y * e22 + a.y*b.z * e23 + a.y*b.w * e24 - a.y*b.xy * e1 + a.y*b.yz * e223 + a.y*b.zw * e234 + a.y*b.wx * e241 + a.y*b.zx * e231 - a.y*b.wy * e4 - a.y*b.xyz * e13 + a.y*b.yzw * e34 + a.y*b.zwx * e2341 + a.y*b.wxy * e41 - a.y*b.xyzw * e134 | |
+ a.z*b.s * e3 + a.z*b.x * e31 + a.z*b.y * e32 + a.z*b.z + a.z*b.w * e34 + a.z*b.xy * e312 - a.z*b.yz * e2 + a.z*b.zw * e4 + a.z*b.wx * e341 + a.z*b.zx * e1 + a.z*b.wy * e342 + a.z*b.xyz * e12 - a.z*b.yzw * e24 + a.z*b.zwx * e41 + a.z*b.wxy * e3412 + a.z*b.xyzw * e124 | |
+ a.w*b.s * e4 + a.w*b.x * e41 + a.w*b.y * e42 + a.w*b.z * e43 + a.w*b.w + a.w*b.xy * e412 + a.w*b.yz * e423 - a.w*b.zw * e3 + a.w*b.wx * e1 + a.w*b.zx * e431 + a.w*b.wy * e2 + a.w*b.xyz * e4123 + a.w*b.yzw * e23 - a.w*b.zwx * e31 + a.w*b.wxy * e12 - a.w*b.xyzw * e123 | |
+ a.xy*b.s * e12 - a.xy*b.x * e2 + a.xy*b.y * e1 + a.xy*b.z * e123 + a.xy*b.w * e124 - a.xy*b.xy + a.xy*b.yz * e13 + a.xy*b.zw * e1234 + a.xy*b.wx * e24 + a.xy*b.zx * e23 - a.xy*b.wy * e14 + a.xy*b.xyz * e13 + a.xy*b.yzw * e1234 - a.xy*b.zwx * e234 - a.xy*b.wxy * e4 + a.xy*b.xyzw * e134 | |
+ a.yz*b.s * e23 + a.yz*b.x * e231 - a.yz*b.y * e3 + a.yz*b.z * e2 + a.yz*b.w * e234 + a.yz*b.xy * e31 - a.yz*b.yz + a.yz*b.zw * e24 + a.yz*b.wx * e2341 + a.yz*b.zx * e21 + a.yz*b.wy * 234 - a.yz*b.xyz * e1 - a.yz*b.yzw * e4 + a.yz*b.zwx * e241 - a.yz*b.wxy * e341 - a.yz*b.xyzw * e14 | |
+ a.zw*b.s * e34 + a.zw*b.x * e341 + a.zw*b.y * e342 + a.zw*b.z * e343 + a.zw*b.w * e3 + a.zw*b.xy * e3412 + a.zw*b.yz * e42 - a.zw*b.zw + a.zw*b.wx * e31 - a.zw*b.zx * e41 + a.zw*b.wy * e32 - a.zw*b.xyz * e412 - a.zw*b.yzw * e2 - a.zw*b.zwx * e1 + a.zw*b.wxy * e312 - a.zw*b.xyzw * e12 | |
+ a.wx*b.s * e41 + a.wx*b.x * e4 + a.wx*b.y * e412 + a.wx*b.z * e413 - a.wx*b.w * e1 + a.wx*b.xy * e42 + a.wx*b.yz * e4123 + a.wx*b.zw * e13 - a.wx*b.wx - a.wx*b.zx * e43 - a.wx*b.wy * e12 + a.wx*b.xyz * e423 - a.wx*b.yzw * e123 - a.wx*b.zwx * e3 - a.wx*b.wxy * e2 + a.wx*b.xyzw * e23 | |
+ a.zx*b.s * e41 + a.zx*b.x * e4 + a.zx*b.y * e412 + a.zx*b.z * e413 - a.zx*b.w * e1 + a.zx*b.xy * e42 + a.zx*b.yz * e4123 + a.zx*b.zw * e13 - a.zx*b.wx - a.zx*b.zx * e43 - a.zx*b.wy * e12 - a.zx*b.xyz * e2 + a.zx*b.yzw * e124 - a.zx*b.zwx * e3 - a.zx*b.wxy * e2 + a.zx*b.xyzw * e23 | |
+ a.wy*b.s * e42 + a.wy*b.x * e421 + a.wy*b.y * e4 + a.wy*b.z * e423 - a.wy*b.w * e2 - a.wy*b.xy * e41 + a.wy*b.yz * e43 + a.wy*b.zw * e23 - a.wy*b.wx * e21 + a.wy*b.zx * e4231 - a.wy*b.wy - a.wy*b.xyz * e413 - a.wy*b.yzw * e3 + a.wy*b.zwx * e231 + a.wy*b.wxy * e1 - a.wy*b.xyzw * e13 | |
+ a.xyz*b.s * e123 + a.xyz*b.x * e23 - a.xyz*b.y * e13 + a.xyz*b.z * e12 + a.xyz*b.w * e1234 - a.xyz*b.xy * e3 - a.xyz*b.yz * e1 + a.xyz*b.zw * e124 - a.xyz*b.wx * e234 - a.xyz*b.zx * e2 + a.xyz*b.wy * e134 - a.xyz*b.xyz - a.xyz*b.yzw * e14 + a.xyz*b.zwx * e24 - a.xyz*b.wxy * e34 - a.xyz*b.xyzw * e4 | |
+ a.yzw*b.s * e234 + a.yzw*b.x * e2341 + a.yzw*b.y * e34 - a.yzw*b.z * e24 + a.yzw*b.w * e23 - a.yzw*b.xy * e341 - a.yzw*b.yz * e4 - a.yzw*b.zw * e2 + a.yzw*b.wx * e231 - a.yzw*b.zx * e241 - a.yzw*b.wy * e3 - a.yzw*b.xyz * e41 - a.yzw*b.yzw - a.yzw*b.zwx * e21 + a.yzw*b.wxy * e31 + a.yzw*b.xyzw * e1 | |
+ a.zwx*b.s * e341 + a.zwx*b.x * e34 + a.zwx*b.y * e3412 + a.zwx*b.z * e41 - a.zwx*b.w * e31 + a.zwx*b.xy * e3412 - a.zwx*b.yz * e412 - a.zwx*b.zw * e1 - a.zwx*b.wx * e3 + a.zwx*b.zx * e4 - a.zwx*b.wy * e312 + a.zwx*b.xyz * e42 - a.zwx*b.yzw * e12 - a.zwx*b.zwx - a.zwx*b.wxy * e32 - a.zwx*b.xyzw * e2 | |
+ a.wxy*b.s * e412 - a.wxy*b.x * e42 + a.wxy*b.y * e41 + a.wxy*b.z * e4123 + a.wxy*b.w * e12 - a.wxy*b.xy * e4 + a.wxy*b.yz * e413 - a.wxy*b.zw * e123 - a.wxy*b.wx * e2 + a.wxy*b.zx * e423 + a.wxy*b.wy * e1 - a.wxy*b.xyz * e43 - a.wxy*b.yzw * e123 - a.wxy*b.zwx * e23 - a.wxy*b.wxy + a.wxy*b.xyzw * e3 | |
+ a.xyzw*b.s * e1234 - a.xyzw*b.x * e234 + a.xyzw*b.y * e134 - a.xyzw*b.z * e124 + a.xyzw*b.w * e123 - a.xyzw*b.xy * e34 - a.xyzw*b.yz * e14 - a.xyzw*b.zw * e12 + a.xyzw*b.wx * e23 - a.xyzw*b.zx * e24 - a.xyzw*b.wy * e13 + a.xyzw*b.xyz * e4 - a.xyzw*b.yzw * e1 + a.xyzw*b.zwx * e2 - a.xyzw * b.wxy * e3 - a.xyzw * b.xyzw |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ a.s*b.s | |
+ a.w*b.w | |
+ a.x*b.x | |
+ a.xyzw*b.xyzw | |
+ a.y*b.y | |
+ a.z*b.z | |
- a.wx*b.wx | |
- a.wxy*b.wxy | |
- a.wy*b.wy | |
- a.xy*b.xy | |
- a.xyz*b.xyz | |
- a.yz*b.yz | |
- a.yzw*b.yzw | |
- a.zw*b.zw | |
- a.zwx*b.zwx | |
- a.zx*b.zx | |
e1 * (+ a.s*b.x) | |
e1 * (+ a.w*b.wx) | |
e1 * (+ a.wxy*b.wy) | |
e1 * (+ a.wy*b.wxy) | |
e1 * (+ a.x*b.s) | |
e1 * (+ a.xy*b.y) | |
e1 * (+ a.yzw*b.xyzw) | |
e1 * (+ a.z*b.zx) | |
e1 * (- a.wx*b.w) | |
e1 * (- a.xyz*b.yz) | |
e1 * (- a.xyzw*b.yzw) | |
e1 * (- a.y*b.xy) | |
e1 * (- a.yz*b.xyz) | |
e1 * (- a.zw*b.zwx) | |
e1 * (- a.zwx*b.zw) | |
e1 * (- a.zx*b.z) | |
e12 * (+ a.s*b.xy) | |
e12 * (+ a.w*b.wxy) | |
e12 * (+ a.wxy*b.w) | |
e12 * (+ a.wy*b.wx) | |
e12 * (+ a.x*b.y) | |
e12 * (+ a.xy*b.s) | |
e12 * (+ a.xyz*b.z) | |
e12 * (+ a.yzw*b.zwx) | |
e12 * (+ a.z*b.xyz) | |
e12 * (- a.wx*b.wy) | |
e12 * (- a.xyzw*b.zw) | |
e12 * (- a.y*b.x) | |
e12 * (- a.yz*b.zx) | |
e12 * (- a.zw*b.xyzw) | |
e12 * (- a.zwx*b.yzw) | |
e12 * (- a.zx*b.yz) | |
e123 * (+ a.s*b.xyz) | |
e123 * (+ a.wy*b.zwx) | |
e123 * (+ a.x*b.yz) | |
e123 * (+ a.xy*b.z) | |
e123 * (+ a.xyz*b.s) | |
e123 * (+ a.xyzw*b.w) | |
e123 * (+ a.y*b.zx) | |
e123 * (+ a.yz*b.x) | |
e123 * (+ a.yzw*b.wx) | |
e123 * (+ a.z*b.xy) | |
e123 * (+ a.zw*b.wxy) | |
e123 * (+ a.zx*b.y) | |
e123 * (- a.w*b.xyzw) | |
e123 * (- a.wx*b.yzw) | |
e123 * (- a.wxy*b.zw) | |
e123 * (- a.zwx*b.wy) | |
e1234 * (+ a.s*b.xyzw) | |
e1234 * (+ a.x*b.yzw) | |
e1234 * (+ a.xy*b.zw) | |
e1234 * (+ a.xyz*b.w) | |
e1234 * (+ a.xyzw*b.s) | |
e1234 * (+ a.z*b.wxy) | |
e1234 * (+ a.zw*b.xy) | |
e1234 * (+ a.zwx*b.y) | |
e1234 * (- a.w*b.xyz) | |
e1234 * (- a.wx*b.yz) | |
e1234 * (- a.wxy*b.z) | |
e1234 * (- a.wy*b.zx) | |
e1234 * (- a.y*b.zwx) | |
e1234 * (- a.yz*b.wx) | |
e1234 * (- a.yzw*b.x) | |
e1234 * (- a.zx*b.wy) | |
e2 * (+ a.s*b.y) | |
e2 * (+ a.w*b.wy) | |
e2 * (+ a.x*b.xy) | |
e2 * (+ a.xyzw*b.zwx) | |
e2 * (+ a.y*b.s) | |
e2 * (+ a.yz*b.z) | |
e2 * (- a.wx*b.wxy) | |
e2 * (- a.wxy*b.wx) | |
e2 * (- a.wy*b.w) | |
e2 * (- a.xy*b.x) | |
e2 * (- a.xyz*b.zx) | |
e2 * (- a.yzw*b.zw) | |
e2 * (- a.z*b.yz) | |
e2 * (- a.zw*b.yzw) | |
e2 * (- a.zwx*b.xyzw) | |
e2 * (- a.zx*b.xyz) | |
e23 * (+ a.s*b.yz) | |
e23 * (+ a.w*b.yzw) | |
e23 * (+ a.wx*b.xyzw) | |
e23 * (+ a.wy*b.zw) | |
e23 * (+ a.x*b.xyz) | |
e23 * (+ a.xy*b.zx) | |
e23 * (+ a.xyz*b.x) | |
e23 * (+ a.xyzw*b.wx) | |
e23 * (+ a.y*b.z) | |
e23 * (+ a.yz*b.s) | |
e23 * (+ a.yzw*b.w) | |
e23 * (+ a.zwx*b.wxy) | |
e23 * (- a.wxy*b.zwx) | |
e23 * (- a.z*b.y) | |
e23 * (- a.zw*b.wy) | |
e23 * (- a.zx*b.xy) | |
e234 * (+ a.s*b.yzw) | |
e234 * (+ a.w*b.yz) | |
e234 * (+ a.wx*b.xyz) | |
e234 * (+ a.wxy*b.zx) | |
e234 * (+ a.wy*b.z) | |
e234 * (+ a.x*b.xyzw) | |
e234 * (+ a.y*b.zw) | |
e234 * (+ a.yz*b.w) | |
e234 * (+ a.yzw*b.s) | |
e234 * (+ a.z*b.wy) | |
e234 * (+ a.zw*b.y) | |
e234 * (+ a.zwx*b.xy) | |
e234 * (- a.xy*b.zwx) | |
e234 * (- a.xyz*b.wx) | |
e234 * (- a.xyzw*b.x) | |
e234 * (- a.zx*b.wxy) | |
e3 * (+ a.s*b.z) | |
e3 * (+ a.wxy*b.xyzw) | |
e3 * (+ a.y*b.yz) | |
e3 * (+ a.z*b.s) | |
e3 * (+ a.zw*b.w) | |
e3 * (+ a.zx*b.x) | |
e3 * (- a.w*b.zw) | |
e3 * (- a.wx*b.zwx) | |
e3 * (- a.wy*b.yzw) | |
e3 * (- a.x*b.zx) | |
e3 * (- a.xy*b.xyz) | |
e3 * (- a.xyz*b.xy) | |
e3 * (- a.xyzw*b.wxy) | |
e3 * (- a.yz*b.y) | |
e3 * (- a.yzw*b.wy) | |
e3 * (- a.zwx*b.wx) | |
e31 * (+ a.s*b.zx) | |
e31 * (+ a.wy*b.xyzw) | |
e31 * (+ a.xyz*b.y) | |
e31 * (+ a.xyzw*b.wy) | |
e31 * (+ a.y*b.xyz) | |
e31 * (+ a.yz*b.xy) | |
e31 * (+ a.yzw*b.wxy) | |
e31 * (+ a.z*b.x) | |
e31 * (+ a.zw*b.wx) | |
e31 * (+ a.zx*b.s) | |
e31 * (- a.w*b.zwx) | |
e31 * (- a.wx*b.zw) | |
e31 * (- a.wxy*b.yzw) | |
e31 * (- a.x*b.z) | |
e31 * (- a.xy*b.yz) | |
e31 * (- a.zwx*b.w) | |
e34 * (+ a.s*b.zw) | |
e34 * (+ a.wxy*b.xyz) | |
e34 * (+ a.x*b.zwx) | |
e34 * (+ a.y*b.yzw) | |
e34 * (+ a.yz*b.wy) | |
e34 * (+ a.yzw*b.y) | |
e34 * (+ a.z*b.w) | |
e34 * (+ a.zw*b.s) | |
e34 * (+ a.zwx*b.x) | |
e34 * (- a.w*b.z) | |
e34 * (- a.wx*b.zx) | |
e34 * (- a.wy*b.yz) | |
e34 * (- a.xy*b.xyzw) | |
e34 * (- a.xyz*b.wxy) | |
e34 * (- a.xyzw*b.xy) | |
e34 * (- a.zx*b.wx) | |
e341 * (+ a.s*b.zwx) | |
e341 * (+ a.wx*b.z) | |
e341 * (+ a.wxy*b.yz) | |
e341 * (+ a.x*b.zw) | |
e341 * (+ a.xy*b.yzw) | |
e341 * (+ a.xyz*b.wy) | |
e341 * (+ a.xyzw*b.y) | |
e341 * (+ a.z*b.wx) | |
e341 * (+ a.zw*b.x) | |
e341 * (+ a.zwx*b.s) | |
e341 * (- a.w*b.zx) | |
e341 * (- a.wy*b.xyz) | |
e341 * (- a.y*b.xyzw) | |
e341 * (- a.yz*b.wxy) | |
e341 * (- a.yzw*b.xy) | |
e341 * (- a.zx*b.w) | |
e4 * (+ a.s*b.w) | |
e4 * (+ a.w*b.s) | |
e4 * (+ a.wx*b.x) | |
e4 * (+ a.wy*b.y) | |
e4 * (+ a.xyzw*b.xyz) | |
e4 * (+ a.z*b.zw) | |
e4 * (+ a.zwx*b.zx) | |
e4 * (- a.wxy*b.xy) | |
e4 * (- a.x*b.wx) | |
e4 * (- a.xy*b.wxy) | |
e4 * (- a.xyz*b.xyzw) | |
e4 * (- a.y*b.wy) | |
e4 * (- a.yz*b.yzw) | |
e4 * (- a.yzw*b.yz) | |
e4 * (- a.zw*b.z) | |
e4 * (- a.zx*b.zwx) | |
e41 * (+ a.s*b.wx) | |
e41 * (+ a.w*b.x) | |
e41 * (+ a.wx*b.s) | |
e41 * (+ a.wxy*b.y) | |
e41 * (+ a.xy*b.wy) | |
e41 * (+ a.xyz*b.yzw) | |
e41 * (+ a.xyzw*b.yz) | |
e41 * (+ a.y*b.wxy) | |
e41 * (+ a.yz*b.xyzw) | |
e41 * (+ a.z*b.zwx) | |
e41 * (+ a.zwx*b.z) | |
e41 * (- a.wy*b.xy) | |
e41 * (- a.x*b.w) | |
e41 * (- a.yzw*b.xyz) | |
e41 * (- a.zw*b.zx) | |
e41 * (- a.zx*b.zw) | |
e412 * (+ a.s*b.wxy) | |
e412 * (+ a.w*b.xy) | |
e412 * (+ a.wx*b.y) | |
e412 * (+ a.wxy*b.s) | |
e412 * (+ a.xy*b.w) | |
e412 * (+ a.xyz*b.zw) | |
e412 * (+ a.y*b.wx) | |
e412 * (+ a.yz*b.zwx) | |
e412 * (+ a.z*b.xyzw) | |
e412 * (+ a.zx*b.yzw) | |
e412 * (- a.wy*b.x) | |
e412 * (- a.x*b.wy) | |
e412 * (- a.xyzw*b.z) | |
e412 * (- a.yzw*b.zx) | |
e412 * (- a.zw*b.xyz) | |
e412 * (- a.zwx*b.yz) | |
e42 * (+ a.s*b.wy) | |
e42 * (+ a.w*b.y) | |
e42 * (+ a.wx*b.xy) | |
e42 * (+ a.wy*b.s) | |
e42 * (+ a.xyzw*b.zx) | |
e42 * (+ a.yzw*b.z) | |
e42 * (+ a.z*b.yzw) | |
e42 * (+ a.zw*b.yz) | |
e42 * (+ a.zwx*b.xyz) | |
e42 * (+ a.zx*b.xyzw) | |
e42 * (- a.wxy*b.x) | |
e42 * (- a.x*b.wxy) | |
e42 * (- a.xy*b.wx) | |
e42 * (- a.xyz*b.zwx) | |
e42 * (- a.y*b.w) | |
e42 * (- a.yz*b.zw) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ a.s*b.s + a.w*b.w + a.x*b.x + a.xyzw*b.xyzw + a.y*b.y + a.z*b.z - a.wx*b.wx - a.wxy*b.wxy - a.wy*b.wy - a.xy*b.xy - a.xyz*b.xyz - a.yz*b.yz - a.yzw*b.yzw - a.zw*b.zw - a.zwx*b.zwx - a.zx*b.zx | |
e1 * (+ a.s*b.x + a.w*b.wx + a.wxy*b.wy + a.wy*b.wxy + a.x*b.s + a.xy*b.y + a.yzw*b.xyzw + a.z*b.zx - a.wx*b.w - a.xyz*b.yz - a.xyzw*b.yzw - a.y*b.xy - a.yz*b.xyz - a.zw*b.zwx - a.zwx*b.zw - a.zx*b.z) | |
e2 * (+ a.s*b.y + a.w*b.wy + a.x*b.xy + a.xyzw*b.zwx + a.y*b.s + a.yz*b.z - a.wx*b.wxy - a.wxy*b.wx - a.wy*b.w - a.xy*b.x - a.xyz*b.zx - a.yzw*b.zw - a.z*b.yz - a.zw*b.yzw - a.zwx*b.xyzw - a.zx*b.xyz) | |
e3 * (+ a.s*b.z + a.wxy*b.xyzw + a.y*b.yz + a.z*b.s + a.zw*b.w + a.zx*b.x - a.w*b.zw - a.wx*b.zwx - a.wy*b.yzw - a.x*b.zx - a.xy*b.xyz - a.xyz*b.xy - a.xyzw*b.wxy - a.yz*b.y - a.yzw*b.wy - a.zwx*b.wx) | |
e4 * (+ a.s*b.w + a.w*b.s + a.wx*b.x + a.wy*b.y + a.xyzw*b.xyz + a.z*b.zw + a.zwx*b.zx - a.wxy*b.xy - a.x*b.wx - a.xy*b.wxy - a.xyz*b.xyzw - a.y*b.wy - a.yz*b.yzw - a.yzw*b.yz - a.zw*b.z - a.zx*b.zwx) | |
e12 * (+ a.s*b.xy + a.w*b.wxy + a.wxy*b.w + a.wy*b.wx + a.x*b.y + a.xy*b.s + a.xyz*b.z + a.yzw*b.zwx + a.z*b.xyz - a.wx*b.wy - a.xyzw*b.zw - a.y*b.x - a.yz*b.zx - a.zw*b.xyzw - a.zwx*b.yzw - a.zx*b.yz) | |
e23 * (+ a.s*b.yz + a.w*b.yzw + a.wx*b.xyzw + a.wy*b.zw + a.x*b.xyz + a.xy*b.zx + a.xyz*b.x + a.xyzw*b.wx + a.y*b.z + a.yz*b.s + a.yzw*b.w + a.zwx*b.wxy - a.wxy*b.zwx - a.z*b.y - a.zw*b.wy - a.zx*b.xy) | |
e34 * (+ a.s*b.zw + a.wxy*b.xyz + a.x*b.zwx + a.y*b.yzw + a.yz*b.wy + a.yzw*b.y + a.z*b.w + a.zw*b.s + a.zwx*b.x - a.w*b.z - a.wx*b.zx - a.wy*b.yz - a.xy*b.xyzw - a.xyz*b.wxy - a.xyzw*b.xy - a.zx*b.wx) | |
e41 * (+ a.s*b.wx + a.w*b.x + a.wx*b.s + a.wxy*b.y + a.xy*b.wy + a.xyz*b.yzw + a.xyzw*b.yz + a.y*b.wxy + a.yz*b.xyzw + a.z*b.zwx + a.zwx*b.z - a.wy*b.xy - a.x*b.w - a.yzw*b.xyz - a.zw*b.zx - a.zx*b.zw) | |
e31 * (+ a.s*b.zx + a.wy*b.xyzw + a.xyz*b.y + a.xyzw*b.wy + a.y*b.xyz + a.yz*b.xy + a.yzw*b.wxy + a.z*b.x + a.zw*b.wx + a.zx*b.s - a.w*b.zwx - a.wx*b.zw - a.wxy*b.yzw - a.x*b.z - a.xy*b.yz - a.zwx*b.w) | |
e42 * (+ a.s*b.wy + a.w*b.y + a.wx*b.xy + a.wy*b.s + a.xyzw*b.zx + a.yzw*b.z + a.z*b.yzw + a.zw*b.yz + a.zwx*b.xyz + a.zx*b.xyzw - a.wxy*b.x - a.x*b.wxy - a.xy*b.wx - a.xyz*b.zwx - a.y*b.w - a.yz*b.zw) | |
e123 * (+ a.s*b.xyz + a.wy*b.zwx + a.x*b.yz + a.xy*b.z + a.xyz*b.s + a.xyzw*b.w + a.y*b.zx + a.yz*b.x + a.yzw*b.wx + a.z*b.xy + a.zw*b.wxy + a.zx*b.y - a.w*b.xyzw - a.wx*b.yzw - a.wxy*b.zw - a.zwx*b.wy) | |
e234 * (+ a.s*b.yzw + a.w*b.yz + a.wx*b.xyz + a.wxy*b.zx + a.wy*b.z + a.x*b.xyzw + a.y*b.zw + a.yz*b.w + a.yzw*b.s + a.z*b.wy + a.zw*b.y + a.zwx*b.xy - a.xy*b.zwx - a.xyz*b.wx - a.xyzw*b.x - a.zx*b.wxy) | |
e341 * (+ a.s*b.zwx + a.wx*b.z + a.wxy*b.yz + a.x*b.zw + a.xy*b.yzw + a.xyz*b.wy + a.xyzw*b.y + a.z*b.wx + a.zw*b.x + a.zwx*b.s - a.w*b.zx - a.wy*b.xyz - a.y*b.xyzw - a.yz*b.wxy - a.yzw*b.xy - a.zx*b.w) | |
e412 * (+ a.s*b.wxy + a.w*b.xy + a.wx*b.y + a.wxy*b.s + a.xy*b.w + a.xyz*b.zw + a.y*b.wx + a.yz*b.zwx + a.z*b.xyzw + a.zx*b.yzw - a.wy*b.x - a.x*b.wy - a.xyzw*b.z - a.yzw*b.zx - a.zw*b.xyz - a.zwx*b.yz) | |
e1234 * (+ a.s*b.xyzw + a.x*b.yzw + a.xy*b.zw + a.xyz*b.w + a.xyzw*b.s + a.z*b.wxy + a.zw*b.xy + a.zwx*b.y - a.w*b.xyz - a.wx*b.yz - a.wxy*b.z - a.wy*b.zx - a.y*b.zwx - a.yz*b.wx - a.yzw*b.x - a.zx*b.wy) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment