solve_constrained_lstsq Interface

public interface solve_constrained_lstsq

Computes the solution of the equality constrained least-squares problem

minimize || Ax - b ||² subject to Cx = d

where A is of size m x n and C of size p x n. (Specification)

Description

This interface provides methods for computing the solution of an equality-constrained least-squares problem using a subroutine. Supported data types include real and complex. If a pre-allocated workspace is provided, no internal memory allocation takes place.


Subroutines

private module subroutine stdlib_linalg_c_solve_constrained_lstsq(A, b, C, d, x, storage, overwrite_matrices, err)

Arguments

Type IntentOptional Attributes Name
complex(kind=sp), intent(inout), target :: A(:,:)

Least-squares cost.

complex(kind=sp), intent(inout), target :: b(:)

Least-squares cost.

complex(kind=sp), intent(inout), target :: C(:,:)

Equality constraints.

complex(kind=sp), intent(inout), target :: d(:)

Equality constraints.

complex(kind=sp), intent(out) :: x(:)

Solution vector.

complex(kind=sp), intent(out), optional, target :: storage(:)

[optional] Storage.

logical(kind=lk), intent(in), optional :: overwrite_matrices

[optional] Can A and C be overwritten?

type(linalg_state_type), intent(out), optional :: err

[optional] State return flag. On error if not requested, the code stops.

private module subroutine stdlib_linalg_d_solve_constrained_lstsq(A, b, C, d, x, storage, overwrite_matrices, err)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout), target :: A(:,:)

Least-squares cost.

real(kind=dp), intent(inout), target :: b(:)

Least-squares cost.

real(kind=dp), intent(inout), target :: C(:,:)

Equality constraints.

real(kind=dp), intent(inout), target :: d(:)

Equality constraints.

real(kind=dp), intent(out) :: x(:)

Solution vector.

real(kind=dp), intent(out), optional, target :: storage(:)

[optional] Storage.

logical(kind=lk), intent(in), optional :: overwrite_matrices

[optional] Can A and C be overwritten?

type(linalg_state_type), intent(out), optional :: err

[optional] State return flag. On error if not requested, the code stops.

private module subroutine stdlib_linalg_s_solve_constrained_lstsq(A, b, C, d, x, storage, overwrite_matrices, err)

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(inout), target :: A(:,:)

Least-squares cost.

real(kind=sp), intent(inout), target :: b(:)

Least-squares cost.

real(kind=sp), intent(inout), target :: C(:,:)

Equality constraints.

real(kind=sp), intent(inout), target :: d(:)

Equality constraints.

real(kind=sp), intent(out) :: x(:)

Solution vector.

real(kind=sp), intent(out), optional, target :: storage(:)

[optional] Storage.

logical(kind=lk), intent(in), optional :: overwrite_matrices

[optional] Can A and C be overwritten?

type(linalg_state_type), intent(out), optional :: err

[optional] State return flag. On error if not requested, the code stops.

private module subroutine stdlib_linalg_z_solve_constrained_lstsq(A, b, C, d, x, storage, overwrite_matrices, err)

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), target :: A(:,:)

Least-squares cost.

complex(kind=dp), intent(inout), target :: b(:)

Least-squares cost.

complex(kind=dp), intent(inout), target :: C(:,:)

Equality constraints.

complex(kind=dp), intent(inout), target :: d(:)

Equality constraints.

complex(kind=dp), intent(out) :: x(:)

Solution vector.

complex(kind=dp), intent(out), optional, target :: storage(:)

[optional] Storage.

logical(kind=lk), intent(in), optional :: overwrite_matrices

[optional] Can A and C be overwritten?

type(linalg_state_type), intent(out), optional :: err

[optional] State return flag. On error if not requested, the code stops.