|
33 | 33 | @inline function _inv(::Size{(4,4)}, A)
|
34 | 34 | # https://www.geometrictools.com/Documentation/LaplaceExpansionTheorem.pdf
|
35 | 35 |
|
36 |
| - s0 = A[1] * A[6] - A[2] * A[5] |
| 36 | + s0 = A[1] * A[6] - A[2] * A[5] |
37 | 37 | s1 = A[1] * A[10] - A[2] * A[9]
|
38 | 38 | s2 = A[1] * A[14] - A[2] * A[13]
|
39 | 39 | s3 = A[5] * A[10] - A[6] * A[9]
|
|
50 | 50 | invdet = 1 / (s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0)
|
51 | 51 |
|
52 | 52 | B = @SMatrix [
|
53 |
| - ( A[6] * c5 - A[10] * c4 + A[14] * c3) * invdet |
54 |
| - (-A[2] * c5 + A[10] * c2 - A[14] * c1) * invdet |
55 |
| - ( A[2] * c4 - A[6] * c2 + A[14] * c0) * invdet |
56 |
| - (-A[2] * c3 + A[6] * c1 - A[10] * c0) * invdet |
57 |
| - (-A[5] * c5 + A[9] * c4 - A[13] * c3) * invdet |
58 |
| - ( A[1] * c5 - A[9] * c2 + A[13] * c1) * invdet |
59 |
| - (-A[1] * c4 + A[5] * c2 - A[13] * c0) * invdet |
60 |
| - ( A[1] * c3 - A[5] * c1 + A[9] * c0) * invdet |
61 |
| - ( A[8] * s5 - A[12] * s4 + A[16] * s3) * invdet |
62 |
| - (-A[4] * s5 + A[12] * s2 - A[16] * s1) * invdet |
63 |
| - ( A[4] * s4 - A[8] * s2 + A[16] * s0) * invdet |
64 |
| - (-A[4] * s3 + A[8] * s1 - A[12] * s0) * invdet |
65 |
| - (-A[7] * s5 + A[11] * s4 - A[15] * s3) * invdet |
66 |
| - ( A[3] * s5 - A[11] * s2 + A[15] * s1) * invdet |
67 |
| - (-A[3] * s4 + A[7] * s2 - A[15] * s0) * invdet |
68 |
| - ( A[3] * s3 - A[7] * s1 + A[11] * s0) * invdet] |
69 |
| - return similar_type(A)(B) |
| 53 | + ( A[6] * c5 - A[10] * c4 + A[14] * c3) * invdet |
| 54 | + (-A[2] * c5 + A[10] * c2 - A[14] * c1) * invdet |
| 55 | + ( A[2] * c4 - A[6] * c2 + A[14] * c0) * invdet |
| 56 | + (-A[2] * c3 + A[6] * c1 - A[10] * c0) * invdet |
| 57 | + (-A[5] * c5 + A[9] * c4 - A[13] * c3) * invdet |
| 58 | + ( A[1] * c5 - A[9] * c2 + A[13] * c1) * invdet |
| 59 | + (-A[1] * c4 + A[5] * c2 - A[13] * c0) * invdet |
| 60 | + ( A[1] * c3 - A[5] * c1 + A[9] * c0) * invdet |
| 61 | + ( A[8] * s5 - A[12] * s4 + A[16] * s3) * invdet |
| 62 | + (-A[4] * s5 + A[12] * s2 - A[16] * s1) * invdet |
| 63 | + ( A[4] * s4 - A[8] * s2 + A[16] * s0) * invdet |
| 64 | + (-A[4] * s3 + A[8] * s1 - A[12] * s0) * invdet |
| 65 | + (-A[7] * s5 + A[11] * s4 - A[15] * s3) * invdet |
| 66 | + ( A[3] * s5 - A[11] * s2 + A[15] * s1) * invdet |
| 67 | + (-A[3] * s4 + A[7] * s2 - A[15] * s0) * invdet |
| 68 | + ( A[3] * s3 - A[7] * s1 + A[11] * s0) * invdet] |
| 69 | + return similar_type(A)(B) |
70 | 70 | end
|
71 | 71 |
|
72 | 72 | @generated function _inv(::Size{S}, A) where S
|
|
0 commit comments