solve_least_squares Interface

public interface solve_least_squares

Module Procedures

private subroutine solve_least_squares_mtx(a, b, work, olwork, err)

Solves the system of equations assuming matrix is of full rank.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(inout), dimension(:,:) :: a

On input, the M-by-N matrix . On output, if M is greater than or equal to N, the QR factorization of in the form provided by qr_factor; else, if M is less than N, the LQ factorization of as returned by lq_factor.

real(kind=real64), intent(inout), dimension(:,:) :: b

If the system is overdetermined, the M-by-NRHS matrix ; else, the matrix should be sized as N-by-NRHS with the first M rows containing . On output, the first N rows will contain the solution matrix .

real(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_least_squares_mtx_cmplx(a, b, work, olwork, err)

Solves the system of equations assuming matrix is of full rank.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(inout), dimension(:,:) :: a

On input, the M-by-N matrix . On output, if M is greater than or equal to N, the QR factorization of in the form provided by qr_factor; else, if M is less than N, the LQ factorization of as returned by lq_factor.

complex(kind=real64), intent(inout), dimension(:,:) :: b

If the system is overdetermined, the M-by-NRHS matrix ; else, the matrix should be sized as N-by-NRHS with the first M rows containing . On output, the first N rows will contain the solution matrix .

complex(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_least_squares_vec(a, b, work, olwork, err)

Solves the system of equations assuming matrix is of full rank.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(inout), dimension(:,:) :: a

On input, the M-by-N matrix . On output, if M is greater than or equal to N, the QR factorization of in the form provided by qr_factor; else, if M is less than N, the LQ factorization of as returned by lq_factor.

real(kind=real64), intent(inout), dimension(:) :: b

If the system is overdetermined, the M-element vector ; else, the array should be sized as N-element with the first M elements containing . On output, the first N rows will contain the solution vector .

real(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine solve_least_squares_vec_cmplx(a, b, work, olwork, err)

Solves the system of equations assuming matrix is of full rank.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(inout), dimension(:,:) :: a

On input, the M-by-N matrix . On output, if M is greater than or equal to N, the QR factorization of in the form provided by qr_factor; else, if M is less than N, the LQ factorization of as returned by lq_factor.

complex(kind=real64), intent(inout), dimension(:) :: b

If the system is overdetermined, the M-element vector ; else, the array should be sized as N-element with the first M elements containing . On output, the first N rows will contain the solution vector .

complex(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.