package lacaml
- BLAS-1 interface
- BLAS-2 interface
- LAPACK interface
- Auxiliary routines
- Linear equations (computational routines)
- Least squares (expert drivers)
- General Schur factorization
- General SVD routines
- General eigenvalue problem (simple drivers)
- Symmetric-matrix eigenvalue and singular value problems (simple drivers)
- Symmetric-matrix eigenvalue and singular value problems (expert & RRR drivers)
- BLAS-1 interface
- BLAS-2 interface
- BLAS-3 interface
- LAPACK interface
- Auxiliary routines
- Linear equations (computational routines)
- Linear equations (simple drivers)
- Least squares (simple drivers)
Install
dune-project
Dependency
Authors
-
EEgbert Ammicht <eammicht@lucent.com>
-
PPatrick Cousot <Patrick.Cousot@ens.fr>
-
SSam Ehrlichman <sehrlichman@janestreet.com>
-
FFlorent Hoareau <h.florent@gmail.com>
-
MMarkus Mottl <markus.mottl@gmail.com>
-
LLiam Stewart <liam@cs.toronto.edu>
-
CChristophe Troestler <Christophe.Troestler@umons.ac.be>
-
OOleg Trott <ot14@columbia.edu>
-
MMartin Willensdorfer <ma.wi@gmx.at>
Maintainers
Sources
sha256=830a83f2e555e8ff8b5ad1226f72e78029a09af075b9d472f0212a24c03cdc3f
md5=41ab6e57c71d790e053c15cee02c1ff0
doc/lacaml/Lacaml_S/index.html
Module Lacaml_S
This module Lacaml.S contains linear algebra routines for real numbers (precision: float32). It is recommended to use this module by writing
open Lacaml.Sat the top of your file.
type prec = Bigarray.float32_elttype vec =
(float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array1.tVectors (precision: float32).
type rvec = vectype mat =
(float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.tMatrices (precision: float32).
Transpose parameter (normal or transposed). For complex matrices, conjugate transpose is also offered, hence the name.
val prec : (float, Bigarray.float32_elt) Bigarray.kindPrecision for this submodule S. Allows to write precision independent code.
module Vec : sig ... endmodule Mat : sig ... endval pp_num : Format.formatter -> float -> unitpp_num ppf el is equivalent to fprintf ppf "%G" el.
val pp_vec : (float, 'a) Lacaml_io.pp_vecPretty-printer for column vectors.
val pp_mat : (float, 'a) Lacaml_io.pp_matPretty-printer for matrices.
BLAS-1 interface
val dot :
?n:int ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
?ofsy:int ->
?incy:int ->
Lacaml_float32.vec ->
floatdot ?n ?ofsx ?incx x ?ofsy ?incy y see BLAS documentation!
val asum : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float32.vec -> floatasum ?n ?ofsx ?incx x see BLAS documentation!
BLAS-2 interface
val sbmv :
?n:int ->
?k:int ->
?ofsy:int ->
?incy:int ->
?y:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?up:bool ->
?alpha:float ->
?beta:float ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.vecsbmv ?n ?k ?ofsy ?incy ?y ?ar ?ac a ?up ?alpha ?beta ?ofsx ?incx x see BLAS documentation!
val ger :
?m:int ->
?n:int ->
?alpha:float ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
?ofsy:int ->
?incy:int ->
Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.matger ?m ?n ?alpha ?ofsx ?incx x ?ofsy ?incy y n ?ar ?ac a see BLAS documentation!
val syr :
?n:int ->
?alpha:float ->
?up:bool ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.matsyr ?n ?alpha ?up ?ofsx ?incx x ?ar ?ac a see BLAS documentation!
LAPACK interface
Auxiliary routines
val lansy_min_lwork : int -> Lacaml_common.norm4 -> intlansy_min_lwork m norm
val lansy :
?n:int ->
?up:bool ->
?norm:Lacaml_common.norm4 ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
floatlansy ?norm ?up ?n ?ar ?ac ?work a see LAPACK documentation!
lamch cmach see LAPACK documentation!
Linear equations (computational routines)
val orgqr_opt_lwork :
?m:int ->
?n:int ->
?k:int ->
tau:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intorgqr_opt_lwork ?m ?n ?k ~tau ?ar ?ac a
val orgqr :
?m:int ->
?n:int ->
?k:int ->
?work:Lacaml_float32.vec ->
tau:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
unitorgqr ?m ?n ?k ?work ~tau ?ar ?ac a see LAPACK documentation!
val ormqr_opt_lwork :
?side:Lacaml_common.side ->
?trans:Lacaml_common.trans2 ->
?m:int ->
?n:int ->
?k:int ->
tau:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?cr:int ->
?cc:int ->
Lacaml_float32.mat ->
intormqr_opt_lwork ?side ?trans ?m ?n ?k ~tau ?ar ?ac a ?cr ?cc c
val ormqr :
?side:Lacaml_common.side ->
?trans:Lacaml_common.trans2 ->
?m:int ->
?n:int ->
?k:int ->
?work:Lacaml_float32.vec ->
tau:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?cr:int ->
?cc:int ->
Lacaml_float32.mat ->
unitormqr ?side ?trans ?m ?n ?k ?work ~tau ?ar ?ac a ?cr ?cc c see LAPACK documentation!
val gecon :
?n:int ->
?norm:Lacaml_common.norm2 ->
?anorm:float ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
floatgecon ?n ?norm ?anorm ?work ?rwork ?ar ?ac a
val sycon :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?anorm:float ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
floatsycon ?n ?up ?ipiv ?anorm ?work ?iwork ?ar ?ac a
val pocon :
?n:int ->
?up:bool ->
?anorm:float ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
floatpocon ?n ?up ?anorm ?work ?iwork ?ar ?ac a
Least squares (expert drivers)
val gelsy_opt_lwork :
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelsy_opt_lwork ?m ?n ?ar ?ac a ?nrhs ?br ?bc b
val gelsy :
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?rcond:float ->
?jpvt:Lacaml_common.int32_vec ->
?work:Lacaml_float32.vec ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelsy ?m ?n ?ar ?ac a ?rcond ?jpvt ?ofswork ?work ?nrhs b see LAPACK documentation!
val gelsd_opt_lwork :
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelsd_opt_lwork ?m ?n ?ar ?ac a ?nrhs b
val gelsd :
?m:int ->
?n:int ->
?rcond:float ->
?ofss:int ->
?s:Lacaml_float32.vec ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelsd ?m ?n ?rcond ?ofss ?s ?ofswork ?work ?ar ?ac a ?nrhs b see LAPACK documentation!
val gelss_opt_lwork :
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?m:int ->
?n:int ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelss_opt_lwork ?ar ?ac a ?m ?n ?nrhs ?br ?bc b
val gelss :
?m:int ->
?n:int ->
?rcond:float ->
?ofss:int ->
?s:Lacaml_float32.vec ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgelss ?m ?n ?rcond ?ofss ?s ?ofswork ?work ?ar ?ac a ?nrhs ?br ?bc b see LAPACK documentation!
General Schur factorization
val gees :
?n:int ->
?jobvs:Lacaml_common.schur_vectors ->
?sort:Lacaml_common.eigen_value_sort ->
?wr:Lacaml_float32.vec ->
?wi:Lacaml_float32.vec ->
?vsr:int ->
?vsc:int ->
?vs:Lacaml_float32.mat ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
int * Lacaml_float32.vec * Lacaml_float32.vec * Lacaml_float32.matgees ?n ?jobvs ?sort ?w ?vsr ?vsc ?vs ?work ?ar ?ac a See gees-function for details about arguments.
General SVD routines
val gesvd_opt_lwork :
?m:int ->
?n:int ->
?jobu:Lacaml_common.svd_job ->
?jobvt:Lacaml_common.svd_job ->
?s:Lacaml_float32.vec ->
?ur:int ->
?uc:int ->
?u:Lacaml_float32.mat ->
?vtr:int ->
?vtc:int ->
?vt:Lacaml_float32.mat ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intval gesvd :
?m:int ->
?n:int ->
?jobu:Lacaml_common.svd_job ->
?jobvt:Lacaml_common.svd_job ->
?s:Lacaml_float32.vec ->
?ur:int ->
?uc:int ->
?u:Lacaml_float32.mat ->
?vtr:int ->
?vtc:int ->
?vt:Lacaml_float32.mat ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.vec * Lacaml_float32.mat * Lacaml_float32.matval gesdd_min_lwork :
?jobz:Lacaml_common.svd_job ->
m:int ->
n:int ->
unit ->
intgesdd_min_lwork ?jobz ~m ~n
val gesdd_opt_lwork :
?m:int ->
?n:int ->
?jobz:Lacaml_common.svd_job ->
?s:Lacaml_float32.vec ->
?ur:int ->
?uc:int ->
?u:Lacaml_float32.mat ->
?vtr:int ->
?vtc:int ->
?vt:Lacaml_float32.mat ->
?iwork:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intval gesdd :
?m:int ->
?n:int ->
?jobz:Lacaml_common.svd_job ->
?s:Lacaml_float32.vec ->
?ur:int ->
?uc:int ->
?u:Lacaml_float32.mat ->
?vtr:int ->
?vtc:int ->
?vt:Lacaml_float32.mat ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.vec * Lacaml_float32.mat * Lacaml_float32.matGeneral eigenvalue problem (simple drivers)
val geev_opt_lwork :
?n:int ->
?vlr:int ->
?vlc:int ->
?vl:Lacaml_float32.mat option ->
?vrr:int ->
?vrc:int ->
?vr:Lacaml_float32.mat option ->
?ofswr:int ->
?wr:Lacaml_float32.vec ->
?ofswi:int ->
?wi:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intgeev_opt_lwork ?n ?vlr ?vlc ?vl ?vrr ?vrc ?vr ?ofswr wr ?ofswi wi ?ar ?ac a See geev-function for details about arguments.
val geev :
?n:int ->
?work:Lacaml_float32.vec ->
?vlr:int ->
?vlc:int ->
?vl:Lacaml_float32.mat option ->
?vrr:int ->
?vrc:int ->
?vr:Lacaml_float32.mat option ->
?ofswr:int ->
?wr:Lacaml_float32.vec ->
?ofswi:int ->
?wi:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.mat
* Lacaml_float32.vec
* Lacaml_float32.vec
* Lacaml_float32.matgeev ?work ?n ?vlr ?vlc ?vl ?vrr ?vrc ?vr ?ofswr ?wr ?ofswi ?wi ?ar ?ac a
Symmetric-matrix eigenvalue and singular value problems (simple drivers)
val syev_opt_lwork :
?n:int ->
?vectors:bool ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsyev_opt_lwork ?n ?vectors ?up ?ar ?ac a
val syev :
?n:int ->
?vectors:bool ->
?up:bool ->
?work:Lacaml_float32.vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecsyev ?n ?vectors ?up ?ofswork ?work ?ofsw ?w ?ar ?ac a computes all eigenvalues and, optionally, eigenvectors of the real symmetric matrix a.
val syevd_opt_lwork :
?n:int ->
?vectors:bool ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsyevd_opt_lwork ?n ?vectors ?up ?ar ?ac a
val syevd_opt_liwork :
?n:int ->
?vectors:bool ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsyevd_opt_liwork ?n ?vectors ?up ?ar ?ac a
val syevd_opt_l_li_work :
?n:int ->
?vectors:bool ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
int * intsyevd_opt_l_li_iwork ?n ?vectors ?up ?ar ?ac a
val syevd :
?n:int ->
?vectors:bool ->
?up:bool ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecsyevd ?n ?vectors ?up ?ofswork ?work ?iwork ?ofsw ?w ?ar ?ac a computes all eigenvalues and, optionally, eigenvectors of the real symmetric matrix a. If eigenvectors are desired, it uses a divide and conquer algorithm.
val sbev :
?n:int ->
?kd:int ->
?zr:int ->
?zc:int ->
?z:Lacaml_float32.mat ->
?up:bool ->
?work:Lacaml_float32.vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?abr:int ->
?abc:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecsbev ?n ?vectors ?zr ?zc ?z ?up ?ofswork ?work ?ofsw ?w ?abr ?abc ab computes all the eigenvalues and, optionally, eigenvectors of the real symmetric band matrix ab.
Symmetric-matrix eigenvalue and singular value problems (expert & RRR drivers)
val syevr_opt_lwork :
?n:int ->
?vectors:bool ->
?range:[ `A | `V of float * float | `I of int * int ] ->
?up:bool ->
?abstol:float ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsyevr_opt_lwork ?n ?vectors ?range ?up ?abstol ?ar ?ac a
val syevr_opt_liwork :
?n:int ->
?vectors:bool ->
?range:[ `A | `V of float * float | `I of int * int ] ->
?up:bool ->
?abstol:float ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsyevr_opt_liwork ?n ?vectors ?range ?up ?abstol ?ar ?ac a
val syevr_opt_l_li_work :
?n:int ->
?vectors:bool ->
?range:[ `A | `V of float * float | `I of int * int ] ->
?up:bool ->
?abstol:float ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
int * intsyevr_opt_l_li_iwork ?n ?vectors ?range ?up ?abstol ?ar ?ac a
val syevr :
?n:int ->
?vectors:bool ->
?range:[ `A | `V of float * float | `I of int * int ] ->
?up:bool ->
?abstol:float ->
?work:Lacaml_float32.vec ->
?iwork:Lacaml_common.int32_vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?zr:int ->
?zc:int ->
?z:Lacaml_float32.mat ->
?isuppz:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
int * Lacaml_float32.vec * Lacaml_float32.mat * Lacaml_common.int32_vecsyevr ?n ?vectors ?range ?up ?abstol ?work ?iwork ?ofsw ?w ?zr ?zc ?z ?isuppz ?ar ?ac a range is either `A for computing all eigenpairs, `V (vl, vu) defines the lower and upper range of computed eigenvalues, `I (il, iu) defines the indexes of the computed eigenpairs, which are sorted in ascending order.
val sygv_opt_lwork :
?n:int ->
?vectors:bool ->
?up:bool ->
?itype:[ `A_B | `AB | `BA ] ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intsygv_opt_lwork ?n ?vectors ?up ?ar ?ac a ?br ?bc b
val sygv :
?n:int ->
?vectors:bool ->
?up:bool ->
?work:Lacaml_float32.vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?itype:[ `A_B | `AB | `BA ] ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecsygv ?n ?vectors ?up ?ofswork ?work ?ofsw ?w ?ar ?ac a computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite eigenproblem, of the form a*x=(lambda)*b*x, a*b*x=(lambda)*x, or b*a*x=(lambda)*x. Here a and b are assumed to be symmetric and b is also positive definite.
val sbgv :
?n:int ->
?ka:int ->
?kb:int ->
?zr:int ->
?zc:int ->
?z:Lacaml_float32.mat ->
?up:bool ->
?work:Lacaml_float32.vec ->
?ofsw:int ->
?w:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecsbgv ?n ?ka ?kb ?zr ?zc ?z ?up ?work ?ofsw ?w ?ar ?ac a ?br ?bc b computes all the eigenvalues, and optionally, the eigenvectors of a real generalized symmetric-definite banded eigenproblem, of the form a*x=(lambda)*b*x. Here a and b are assumed to be symmetric and banded, and b is also positive definite.
BLAS-1 interface
val swap :
?n:int ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
?ofsy:int ->
?incy:int ->
Lacaml_float32.vec ->
unitswap ?n ?ofsx ?incx x ?ofsy ?incy y see BLAS documentation!
val scal :
?n:int ->
Lacaml_float32.num_type ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
unitscal ?n alpha ?ofsx ?incx x see BLAS documentation!
val copy :
?n:int ->
?ofsy:int ->
?incy:int ->
?y:Lacaml_float32.vec ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.veccopy ?n ?ofsy ?incy ?y ?ofsx ?incx x see BLAS documentation!
val nrm2 : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float32.vec -> floatnrm2 ?n ?ofsx ?incx x see BLAS documentation!
val axpy :
?alpha:Lacaml_float32.num_type ->
?n:int ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
?ofsy:int ->
?incy:int ->
Lacaml_float32.vec ->
unitaxpy ?alpha ?n ?ofsx ?incx x ?ofsy ?incy y see BLAS documentation!
val iamax : ?n:int -> ?ofsx:int -> ?incx:int -> Lacaml_float32.vec -> intiamax ?n ?ofsx ?incx x see BLAS documentation!
val amax :
?n:int ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.num_typeamax ?n ?ofsx ?incx x
BLAS-2 interface
val gemv :
?m:int ->
?n:int ->
?beta:Lacaml_float32.num_type ->
?ofsy:int ->
?incy:int ->
?y:Lacaml_float32.vec ->
?trans:Lacaml_float32.trans3 ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.vecgemv ?m ?n ?beta ?ofsy ?incy ?y ?trans ?alpha ?ar ?ac a ?ofsx ?incx x see BLAS documentation! BEWARE that the 1988 BLAS-2 specification mandates that this function has no effect when n=0 while the mathematically expected behabior is y ← beta * y.
val gbmv :
?m:int ->
?n:int ->
?beta:Lacaml_float32.num_type ->
?ofsy:int ->
?incy:int ->
?y:Lacaml_float32.vec ->
?trans:Lacaml_float32.trans3 ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
int ->
int ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.vecgbmv ?m ?n ?beta ?ofsy ?incy ?y ?trans ?alpha ?ar ?ac a kl ku ?ofsx ?incx x see BLAS documentation!
val symv :
?n:int ->
?beta:Lacaml_float32.num_type ->
?ofsy:int ->
?incy:int ->
?y:Lacaml_float32.vec ->
?up:bool ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
Lacaml_float32.vecsymv ?n ?beta ?ofsy ?incy ?y ?up ?alpha ?ar ?ac a ?ofsx ?incx x see BLAS documentation!
val trmv :
?n:int ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
unittrmv ?n ?trans ?diag ?up ?ar ?ac a ?ofsx ?incx x see BLAS documentation!
val trsv :
?n:int ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
unittrsv ?n ?trans ?diag ?up ?ar ?ac a ?ofsx ?incx x see BLAS documentation!
val tpmv :
?n:int ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?up:bool ->
?ofsap:int ->
Lacaml_float32.vec ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
unittpmv ?n ?trans ?diag ?up ?ofsap ap ?ofsx ?incx x see BLAS documentation!
val tpsv :
?n:int ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?up:bool ->
?ofsap:int ->
Lacaml_float32.vec ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
unittpsv ?n ?trans ?diag ?up ?ofsap ap ?ofsx ?incx x see BLAS documentation!
BLAS-3 interface
val gemm :
?m:int ->
?n:int ->
?k:int ->
?beta:Lacaml_float32.num_type ->
?cr:int ->
?cc:int ->
?c:Lacaml_float32.mat ->
?transa:Lacaml_float32.trans3 ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?transb:Lacaml_float32.trans3 ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
Lacaml_float32.matgemm ?m ?n ?k ?beta ?cr ?cc ?c ?transa ?alpha ?ar ?ac a ?transb ?br ?bc b see BLAS documentation!
val symm :
?m:int ->
?n:int ->
?side:Lacaml_common.side ->
?up:bool ->
?beta:Lacaml_float32.num_type ->
?cr:int ->
?cc:int ->
?c:Lacaml_float32.mat ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
Lacaml_float32.matsymm ?m ?n ?side ?up ?beta ?cr ?cc ?c ?alpha ?ar ?ac a ?br ?bc b see BLAS documentation!
val trmm :
?m:int ->
?n:int ->
?side:Lacaml_common.side ->
?up:bool ->
?transa:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
a:Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unittrmm ?m ?n ?side ?up ?transa ?diag ?alpha ?ar ?ac ~a ?br ?bc b see BLAS documentation!
val trsm :
?m:int ->
?n:int ->
?side:Lacaml_common.side ->
?up:bool ->
?transa:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
a:Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unittrsm ?m ?n ?side ?up ?transa ?diag ?alpha ?ar ?ac ~a ?br ?bc b see BLAS documentation!
val syrk :
?n:int ->
?k:int ->
?up:bool ->
?beta:Lacaml_float32.num_type ->
?cr:int ->
?cc:int ->
?c:Lacaml_float32.mat ->
?trans:Lacaml_common.trans2 ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.matsyrk ?n ?k ?up ?beta ?cr ?cc ?c ?trans ?alpha ?ar ?ac a see BLAS documentation!
val syr2k :
?n:int ->
?k:int ->
?up:bool ->
?beta:Lacaml_float32.num_type ->
?cr:int ->
?cc:int ->
?c:Lacaml_float32.mat ->
?trans:Lacaml_common.trans2 ->
?alpha:Lacaml_float32.num_type ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
Lacaml_float32.matsyr2k ?n ?k ?up ?beta ?cr ?cc ?c ?trans ?alpha ?ar ?ac a ?br ?bc b see BLAS documentation!
LAPACK interface
Auxiliary routines
val lacpy :
?uplo:[ `U | `L ] ->
?m:int ->
?n:int ->
?br:int ->
?bc:int ->
?b:Lacaml_float32.mat ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.matlacpy ?uplo ?m ?n ?br ?bc ?b ?ar ?ac a copy a (triangular) (sub-)matrix a (to an optional (sub-)matrix b).
val laswp :
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?k1:int ->
?k2:int ->
?incx:int ->
Lacaml_common.int32_vec ->
unitlaswp ?n ?ar ?ac a ?k1 ?k2 ?incx ipiv swap rows of a according to ipiv. See LAPACK-documentation for details!
val lapmt :
?forward:bool ->
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_common.int32_vec ->
unitlapmt ?forward ?n ?m ?ar ?ac a k swap columns of a according to the permutations in k. See LAPACK-documentation for details!
val lassq :
?n:int ->
?scale:float ->
?sumsq:float ->
?ofsx:int ->
?incx:int ->
Lacaml_float32.vec ->
float * floatlassq ?n ?ofsx ?incx ?scale ?sumsq
val larnv :
?idist:[ `Uniform0 | `Uniform1 | `Normal ] ->
?iseed:Lacaml_common.int32_vec ->
?n:int ->
?ofsx:int ->
?x:Lacaml_float32.vec ->
unit ->
Lacaml_float32.veclarnv ?idist ?iseed ?n ?ofsx ?x ()
val lange_min_lwork : int -> Lacaml_common.norm4 -> intlange_min_lwork m norm
val lange :
?m:int ->
?n:int ->
?norm:Lacaml_common.norm4 ->
?work:Lacaml_float32.rvec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
floatlange ?m ?n ?norm ?work ?ar ?ac a
val lauum :
?up:bool ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
unitlauum ?up ?n ?ar ?ac a computes the product U * U**T or L**T * L, where the triangular factor U or L is stored in the upper or lower triangular part of the array a. The upper or lower part of a is overwritten.
Linear equations (computational routines)
val getrf :
?m:int ->
?n:int ->
?ipiv:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_common.int32_vecgetrf ?m ?n ?ipiv ?ar ?ac a computes an LU factorization of a general m-by-n matrix a using partial pivoting with row interchanges. See LAPACK documentation.
val getrs :
?n:int ->
?ipiv:Lacaml_common.int32_vec ->
?trans:Lacaml_float32.trans3 ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitval getri_opt_lwork : ?n:int -> ?ar:int -> ?ac:int -> Lacaml_float32.mat -> intgetri_opt_lwork ?n ?ar ?ac a
val getri :
?n:int ->
?ipiv:Lacaml_common.int32_vec ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
unitval sytrf_opt_lwork :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intsytrf_opt_lwork ?n ?up ?ar ?ac a
val sytrf :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_common.int32_vecsytrf ?n ?up ?ipiv ?work ?ar ?ac a computes the factorization of the real symmetric matrix a using the Bunch-Kaufman diagonal pivoting method.
val sytrs :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitval sytri :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
unitval potrf :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
?jitter:Lacaml_float32.num_type ->
Lacaml_float32.mat ->
unitpotrf ?n ?up ?ar ?ac ?jitter a factorizes symmetric positive definite matrix a (or the designated submatrix) using Cholesky factorization.
Due to rounding errors ill-conditioned matrices may actually appear as if they were not positive definite, thus leading to an exception. One remedy for this problem is to add a small jitter to the diagonal of the matrix, which will usually allow Cholesky to complete successfully (though at a small bias). For extremely ill-conditioned matrices it is recommended to use (symmetric) eigenvalue decomposition instead of this function for a numerically more stable factorization.
val potrs :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
?factorize:bool ->
?jitter:Lacaml_float32.num_type ->
Lacaml_float32.mat ->
unitpotrs ?n ?up ?ar ?ac a ?nrhs ?br ?bc ?factorize ?jitter b solves a system of linear equations a*X = b, where a is symmetric positive definite matrix, using the Cholesky factorization a = U**T*U or a = L*L**T computed by potrf.
val potri :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
?factorize:bool ->
?jitter:Lacaml_float32.num_type ->
Lacaml_float32.mat ->
unitpotri ?n ?up ?ar ?ac ?factorize ?jitter a computes the inverse of the real symmetric positive definite matrix a using the Cholesky factorization a = U**T*U or a = L*L**T computed by potrf.
val trtrs :
?n:int ->
?up:bool ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unittrtrs ?n ?up ?trans ?diag ?ar ?ac a ?nrhs ?br ?bc b solves a triangular system of the form a * X = b or a**T * X = n, where a is a triangular matrix of order n, and b is an n-by-nrhs matrix.
val tbtrs :
?n:int ->
?kd:int ->
?up:bool ->
?trans:Lacaml_float32.trans3 ->
?diag:Lacaml_common.diag ->
?abr:int ->
?abc:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unittbtrs ?n ?kd ?up ?trans ?diag ?abr ?abc ab ?nrhs ?br ?bc b solves a triangular system of the form a * X = b or a**T * X = b, where a is a triangular band matrix of order n, and b is an n-by-nrhs matrix.
val trtri :
?n:int ->
?up:bool ->
?diag:Lacaml_common.diag ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
unittrtri ?n ?up ?diag ?ar ?ac a computes the inverse of a real upper or lower triangular matrix a.
val geqrf_opt_lwork :
?m:int ->
?n:int ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
intgeqrf_opt_lwork ?m ?n ?ar ?ac a
val geqrf :
?m:int ->
?n:int ->
?work:Lacaml_float32.vec ->
?tau:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
Lacaml_float32.vecgeqrf ?m ?n ?work ?tau ?ar ?ac a computes a QR factorization of a real m-by-n matrix a. See LAPACK documentation.
Linear equations (simple drivers)
val gesv :
?n:int ->
?ipiv:Lacaml_common.int32_vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitgesv ?n ?ipiv ?ar ?ac a ?nrhs ?br ?bc b computes the solution to a real system of linear equations a * X = b, where a is an n-by-n matrix and X and b are n-by-nrhs matrices. The LU decomposition with partial pivoting and row interchanges is used to factor a as a = P * L * U, where P is a permutation matrix, L is unit lower triangular, and U is upper triangular. The factored form of a is then used to solve the system of equations a * X = b. On exit, b contains the solution matrix X.
val gbsv :
?n:int ->
?ipiv:Lacaml_common.int32_vec ->
?abr:int ->
?abc:int ->
Lacaml_float32.mat ->
int ->
int ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitgbsv ?n ?ipiv ?abr ?abc ab kl ku ?nrhs ?br ?bc b computes the solution to a real system of linear equations a * X = b, where a is a band matrix of order n with kl subdiagonals and ku superdiagonals, and X and b are n-by-nrhs matrices. The LU decomposition with partial pivoting and row interchanges is used to factor a as a = L * U, where L is a product of permutation and unit lower triangular matrices with kl subdiagonals, and U is upper triangular with kl+ku superdiagonals. The factored form of a is then used to solve the system of equations a * X = b.
val gtsv :
?n:int ->
?ofsdl:int ->
Lacaml_float32.vec ->
?ofsd:int ->
Lacaml_float32.vec ->
?ofsdu:int ->
Lacaml_float32.vec ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitgtsv ?n ?ofsdl dl ?ofsd d ?ofsdu du ?nrhs ?br ?bc b solves the equation a * X = b where a is an n-by-n tridiagonal matrix, by Gaussian elimination with partial pivoting. Note that the equation A'*X = b may be solved by interchanging the order of the arguments du and dl.
val posv :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitposv ?n ?up ?ar ?ac a ?nrhs ?br ?bc b computes the solution to a real system of linear equations a * X = b, where a is an n-by-n symmetric positive definite matrix and X and b are n-by-nrhs matrices. The Cholesky decomposition is used to factor a as a = U**T * U, if up = true, or a = L * L**T, if up = false, where U is an upper triangular matrix and L is a lower triangular matrix. The factored form of a is then used to solve the system of equations a * X = b.
val ppsv :
?n:int ->
?up:bool ->
?ofsap:int ->
Lacaml_float32.vec ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitppsv ?n ?up ?ofsap ap ?nrhs ?br ?bc b computes the solution to the real system of linear equations a * X = b, where a is an n-by-n symmetric positive definite matrix stored in packed format and X and b are n-by-nrhs matrices. The Cholesky decomposition is used to factor a as a = U**T * U, if up = true, or a = L * L**T, if up = false, where U is an upper triangular matrix and L is a lower triangular matrix. The factored form of a is then used to solve the system of equations a * X = b.
val pbsv :
?n:int ->
?up:bool ->
?kd:int ->
?abr:int ->
?abc:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitpbsv ?n ?up ?kd ?abr ?abc ab ?nrhs ?br ?bc b computes the solution to a real system of linear equations a * X = b, where a is an n-by-n symmetric positive definite band matrix and X and b are n-by-nrhs matrices. The Cholesky decomposition is used to factor a as a = U**T * U, if up = true, or a = L * L**T, if up = false, where U is an upper triangular band matrix, and L is a lower triangular band matrix, with the same number of superdiagonals or subdiagonals as a. The factored form of a is then used to solve the system of equations a * X = b.
val ptsv :
?n:int ->
?ofsd:int ->
Lacaml_float32.vec ->
?ofse:int ->
Lacaml_float32.vec ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitptsv ?n ?ofsd d ?ofse e ?nrhs ?br ?bc b computes the solution to the real system of linear equations a*X = b, where a is an n-by-n symmetric positive definite tridiagonal matrix, and X and b are n-by-nrhs matrices. A is factored as a = L*D*L**T, and the factored form of a is then used to solve the system of equations.
val sysv_opt_lwork :
?n:int ->
?up:bool ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intsysv_opt_lwork ?n ?up ?ar ?ac a ?nrhs ?br ?bc b
val sysv :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?work:Lacaml_float32.vec ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitsysv ?n ?up ?ipiv ?work ?ar ?ac a ?nrhs ?br ?bc b computes the solution to a real system of linear equations a * X = b, where a is an N-by-N symmetric matrix and X and b are n-by-nrhs matrices. The diagonal pivoting method is used to factor a as a = U * D * U**T, if up = true, or a = L * D * L**T, if up = false, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of a is then used to solve the system of equations a * X = b.
val spsv :
?n:int ->
?up:bool ->
?ipiv:Lacaml_common.int32_vec ->
?ofsap:int ->
Lacaml_float32.vec ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitspsv ?n ?up ?ipiv ?ofsap ap ?nrhs ?br ?bc b computes the solution to the real system of linear equations a * X = b, where a is an n-by-n symmetric matrix stored in packed format and X and b are n-by-nrhs matrices. The diagonal pivoting method is used to factor a as a = U * D * U**T, if up = true, or a = L * D * L**T, if up = false, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks. The factored form of a is then used to solve the system of equations a * X = b.
Least squares (simple drivers)
val gels_opt_lwork :
?m:int ->
?n:int ->
?trans:Lacaml_common.trans2 ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
intgels_opt_lwork ?m ?n ?trans ?ar ?ac a ?nrhs ?br ?bc b
val gels :
?m:int ->
?n:int ->
?work:Lacaml_float32.vec ->
?trans:Lacaml_common.trans2 ->
?ar:int ->
?ac:int ->
Lacaml_float32.mat ->
?nrhs:int ->
?br:int ->
?bc:int ->
Lacaml_float32.mat ->
unitgels ?m ?n ?work ?trans ?ar ?ac a ?nrhs ?br ?bc b see LAPACK documentation!
- BLAS-1 interface
- BLAS-2 interface
- LAPACK interface
- Auxiliary routines
- Linear equations (computational routines)
- Least squares (expert drivers)
- General Schur factorization
- General SVD routines
- General eigenvalue problem (simple drivers)
- Symmetric-matrix eigenvalue and singular value problems (simple drivers)
- Symmetric-matrix eigenvalue and singular value problems (expert & RRR drivers)
- BLAS-1 interface
- BLAS-2 interface
- BLAS-3 interface
- LAPACK interface
- Auxiliary routines
- Linear equations (computational routines)
- Linear equations (simple drivers)
- Least squares (simple drivers)