(int k, int N, Matrix A, double[] vk, double TwoOverBeta, int M)
| 746 | } |
| 747 | |
| 748 | private void qrUpdateR(int k, int N, Matrix A, double[] vk, double TwoOverBeta, int M) |
| 749 | { |
| 750 | //First run of loop removed, as it will be setting zeros. More accurate to just set them ourselves |
| 751 | if(k < N) |
| 752 | { |
| 753 | qrUpdateRInitalLoop(k, A, vk, TwoOverBeta, M); |
| 754 | } |
| 755 | //The rest of the normal look |
| 756 | for(int j = k+1; j < N; j++) |
| 757 | { |
| 758 | double y = 0;//y = vk dot A_j |
| 759 | for(int i = k; i < A.cols(); i++) |
| 760 | y += vk[i]*A.get(j, i); |
| 761 | |
| 762 | y *= TwoOverBeta; |
| 763 | for(int i = k; i < M; i++) |
| 764 | A.increment(j, i, -y*vk[i]); |
| 765 | } |
| 766 | } |
| 767 | |
| 768 | private void qrUpdateRInitalLoop(int k, Matrix A, double[] vk, double TwoOverBeta, int M) |
| 769 | { |
no test coverage detected