(&self)
| 1839 | } |
| 1840 | |
| 1841 | pub fn inv(&self) -> ComplexMatrix { |
| 1842 | let (p, q, l, u) = self.extract(); |
| 1843 | let mut m = complex_inv_u(u) * complex_inv_l(l); |
| 1844 | // Q = Q1 Q2 Q3 .. |
| 1845 | for (idx1, idx2) in q.into_iter().enumerate().rev() { |
| 1846 | unsafe { |
| 1847 | m.swap(idx1, idx2, Shape::Row); |
| 1848 | } |
| 1849 | } |
| 1850 | // P = Pn-1 .. P3 P2 P1 |
| 1851 | for (idx1, idx2) in p.into_iter().enumerate().rev() { |
| 1852 | unsafe { |
| 1853 | m.swap(idx1, idx2, Shape::Col); |
| 1854 | } |
| 1855 | } |
| 1856 | m |
| 1857 | } |
| 1858 | } |
| 1859 | |
| 1860 | /// MATLAB like eye - Identity matrix |