QR decomposition using Modified Gram-Schmidt method
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in), | dimension(:, :) | :: | A | ||
| real(kind=dp), | intent(out), | dimension(size(A, 1), size(A, 2)) | :: | Q | ||
| real(kind=dp), | intent(out), | dimension(size(A, 1), size(A, 2)) | :: | R |
subroutine QR_Gram_Schmidt_Modified_decomposition(A, Q, R) real(dp), dimension(:, :), intent(in) :: A real(dp), dimension(size(A, 1), size(A, 2)), intent(out) :: Q, R real(dp), dimension(size(A, 1), size(A, 2)) :: u integer :: N, i, j N = size(A, 1) u = A Q = 0.d0 R = 0.d0 do i = 1, N R(i, i) = norm2(u(:, i)) Q(:, i) = u(:, i) / R(i, i) do j = i + 1, N R(i, j) = dot_product(Q(:, i), u(:, j)) u(:, j) = u(:, j) - R(i, j) * Q(:, i) end do end do end subroutine QR_Gram_Schmidt_Modified_decomposition