forked from M-Labs/nalgebra
inversion
This commit is contained in:
parent
a803815bd1
commit
d331bbd7c1
@ -145,6 +145,37 @@ where
|
|||||||
{
|
{
|
||||||
let m = m.as_slice();
|
let m = m.as_slice();
|
||||||
|
|
||||||
|
let det = m[0].clone()
|
||||||
|
* (m[5].clone() * m[10].clone() * m[15].clone()
|
||||||
|
+ m[6].clone() * m[11].clone() * m[13].clone()
|
||||||
|
+ m[7].clone() * m[9].clone() * m[14].clone()
|
||||||
|
- m[7].clone() * m[10].clone() * m[13].clone()
|
||||||
|
- m[6].clone() * m[9].clone() * m[15].clone()
|
||||||
|
- m[5].clone() * m[11].clone() * m[14].clone())
|
||||||
|
- m[1].clone()
|
||||||
|
* (m[4].clone() * m[10].clone() * m[15].clone()
|
||||||
|
+ m[6].clone() * m[11].clone() * m[12].clone()
|
||||||
|
+ m[7].clone() * m[8].clone() * m[14].clone()
|
||||||
|
- m[7].clone() * m[10].clone() * m[12].clone()
|
||||||
|
- m[6].clone() * m[8].clone() * m[15].clone()
|
||||||
|
- m[4].clone() * m[11].clone() * m[14].clone())
|
||||||
|
+ m[2].clone()
|
||||||
|
* (m[4].clone() * m[9].clone() * m[15].clone()
|
||||||
|
+ m[5].clone() * m[11].clone() * m[12].clone()
|
||||||
|
+ m[7].clone() * m[8].clone() * m[13].clone()
|
||||||
|
- m[7].clone() * m[9].clone() * m[12].clone()
|
||||||
|
- m[5].clone() * m[8].clone() * m[15].clone()
|
||||||
|
- m[4].clone() * m[11].clone() * m[13].clone())
|
||||||
|
- m[3].clone()
|
||||||
|
* (m[4].clone() * m[9].clone() * m[14].clone()
|
||||||
|
+ m[5].clone() * m[10].clone() * m[12].clone()
|
||||||
|
+ m[6].clone() * m[8].clone() * m[13].clone()
|
||||||
|
- m[6].clone() * m[9].clone() * m[12].clone()
|
||||||
|
- m[5].clone() * m[8].clone() * m[14].clone()
|
||||||
|
- m[4].clone() * m[10].clone() * m[13].clone());
|
||||||
|
if det.is_zero() {
|
||||||
|
false
|
||||||
|
} else {
|
||||||
out[(0, 0)] = m[5].clone() * m[10].clone() * m[15].clone()
|
out[(0, 0)] = m[5].clone() * m[10].clone() * m[15].clone()
|
||||||
- m[5].clone() * m[11].clone() * m[14].clone()
|
- m[5].clone() * m[11].clone() * m[14].clone()
|
||||||
- m[9].clone() * m[6].clone() * m[15].clone()
|
- m[9].clone() * m[6].clone() * m[15].clone()
|
||||||
@ -257,12 +288,6 @@ where
|
|||||||
+ m[8].clone() * m[1].clone() * m[6].clone()
|
+ m[8].clone() * m[1].clone() * m[6].clone()
|
||||||
- m[8].clone() * m[2].clone() * m[5].clone();
|
- m[8].clone() * m[2].clone() * m[5].clone();
|
||||||
|
|
||||||
let det = m[0].clone() * out[(0, 0)].clone()
|
|
||||||
+ m[1].clone() * out[(0, 1)].clone()
|
|
||||||
+ m[2].clone() * out[(0, 2)].clone()
|
|
||||||
+ m[3].clone() * out[(0, 3)].clone();
|
|
||||||
|
|
||||||
if !det.is_zero() {
|
|
||||||
let inv_det = T::one() / det;
|
let inv_det = T::one() / det;
|
||||||
|
|
||||||
for j in 0..4 {
|
for j in 0..4 {
|
||||||
@ -271,7 +296,5 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user