module Algorithms:sig..end
Low-level routines on arrays.
Scaled Preconditioned Iterative Linear Solvers routines.
Global constants and general purpose solver routines.
val qr_fact : int -> Sundials.RealArray2.t -> Sundials.RealArray.t -> bool -> unitPerforms a QR factorization of a Hessenberg matrix.
The call qr_fact n h q factored, where h is the n+1 by n
Hessenberg matrix (stored row-wise), q stores the computed Givens
rotation, and factored=true indicates that the first n-1 columns of
h have already been factored. The computed Givens rotation has the
form $\begin{bmatrix} c & -s \\ s & c \end{bmatrix}$ . It is
stored in the 2n elements of q as [|c; s; c; s; ...; c; s|].
Matrix.ZeroDiagonalElement Zero found in matrix diagonalval qr_sol : int ->
Sundials.RealArray2.t -> Sundials.RealArray.t -> Sundials.RealArray.t -> unitSolve the linear least squares problem. In
qr_sol n h q b, h and q are, respectively, the upper triangular
factor $R$ of the original Hessenberg matrix and Q the Givens
rotations used to factor it—both computed by Sundials_LinearSolver.Iterative.Algorithms.qr_fact. The function
computes the n+1 elements of b to solve $Rx = Qb$.
Matrix.ZeroDiagonalElement Zero found in matrix diagonalval modified_gs : ('d, 'k) Nvector.t array -> Sundials.RealArray2.t -> int -> int -> floatPerforms a modified Gram-Schmidt orthogonalization. In
modified_gs v h k p,
v is an array of at least k + 1 vectors with an L2-norm of 1,h is the output k by k Hessenberg matrix of inner products,k specifies the vector in v to be orthogonalized against previous
ones, and,p is the number of previous vectors in v to orthogonalize against.The vector v[k] is orthogonalized against the p unit vectors at
v.{k-1}, v.{k-2}, ..., v.{k-p}.
The matrix h must be allocated row-wise so that the (i,j)th entry is
h.{i}.{j}.
The inner products are computed, $\mathtt{h.\{}i\mathtt{, k-1\}} =
\mathtt{v.\{}i\mathtt{\}} \cdot \mathtt{v.\{k\}}$ , for
$i=\max(0, \mathtt{k}-\mathtt{p})\ldots \mathtt{k}-1$ .
The orthogonalized v.{k} is not normalized and is stored over the
old v.{k}. The function returns the Euclidean norm of the orthogonalized
vector.
val classical_gs : ('d, 'k) Nvector.t array ->
Sundials.RealArray2.t ->
int -> int -> Sundials.RealArray.t -> ('d, 'k) Nvector.t array -> floatPerforms a classical Gram-Schmidt orthogonalization. In
classical_gs v h k p s temp,
v is an array of at least k + 1 vectors with an L2-norm of 1,h is the output k by k Hessenberg matrix of inner products,k specifies the vector in v to be orthogonalized against previous
ones,p is the number of previous vectors in v to orthogonalize against,
and,s and temp are arrays of at least k + 1 elements used
as workspaces.The vector v[k] is orthogonalized against the p unit vectors at
v.{k-1}, v.{k-2}, ..., v.{k-p}.
The matrix h must be allocated row-wise so that the (i,j)th entry is
h.{i}.{j}.
The inner products are computed, $\mathtt{h.\{}i\mathtt{, k-1\}} =
\mathtt{v.\{}i\mathtt{\}} \cdot \mathtt{v.\{k\}}$ , for
$i=\max(0, \mathtt{k}-\mathtt{p})\ldots \mathtt{k}-1$ .
The orthogonalized v.{k} is not normalized and is stored over the
old v.{k}. The function returns the Euclidean norm of the orthogonalized
vector.