public void SolveQR(Vector B, Vector X) { if (_QR != null) { // Solve the system A*X = B, overwriting B with X: double[] _B = B.Data; DORMQR _dormqr = new DORMQR(); _dormqr.Run("L", "T", _N, 1, _N, ref _QR, 0, _N, _TAU, 0, ref _B, 0, _N, ref _WORK, 0, _N, ref _Info); DTRTRS _dtrtrs = new DTRTRS(); _dtrtrs.Run("U", "N", "N", _N, 1, _QR, 0, _N, ref _B, 0, _N, ref _Info); for (int i = 0; i < B.Length; i++) { X[i] = B[i]; } } }