Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
mir.lapack
Low level ndslice wrapper for LAPACK.
Attention: LAPACK and this module has column major API.
ndslice rows corresponds to LAPACK columns.
Functions with *_wq suffix are wrappers for workspace queries.
Authors:
Ilya Yaroshenko
- lapackint
ilaenv()(lapackintispec, scope const(char)*name, scope const(char)*opts, lapackintn1, lapackintn2, lapackintn3, lapackintn4); - lapackint
ilaenv2stage()(lapackintispec, scope const(char)*name, scope const(char)*opts, lapackintn1, lapackintn2, lapackintn3, lapackintn4); - size_t
getri_wq(T)(Slice!(T*, 2, Canonical)a); - getri work space query.
- size_t
getri(T)(Slice!(T*, 2, Canonical)a, Slice!(lapackint*)ipiv, Slice!(T*)work); - size_t
getrf(T)(Slice!(T*, 2, Canonical)a, Slice!(lapackint*)ipiv); - size_t
sptrf(T)(Slice!(StairsIterator!(T*, "+"))ap, Slice!(lapackint*)ipiv); sptrffor upper triangular input.- size_t
gesv(T)(Slice!(T*, 2, Canonical)a, Slice!(lapackint*)ipiv, Slice!(T*, 2, Canonical)b); - size_t
gelsd_wq(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, ref size_tliwork)
if (!isComplex!T);
size_tgelsd_wq(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, ref size_tlrwork, ref size_tliwork)
if (isComplex!T); - gelsd work space query.
- size_t
gelsd(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, Slice!(T*)s, Trcond, ref size_trank, Slice!(T*)work, Slice!(lapackint*)iwork)
if (!isComplex!T);
size_tgelsd(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, Slice!(realType!T*)s, realType!Trcond, ref size_trank, Slice!(T*)work, Slice!(realType!T*)rwork, Slice!(lapackint*)iwork)
if (isComplex!T); - size_t
gesdd_wq(T)(charjobz, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt); - gesdd work space query
- size_t
gesdd(T)(charjobz, Slice!(T*, 2, Canonical)a, Slice!(T*)s, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt, Slice!(T*)work, Slice!(lapackint*)iwork)
if (!isComplex!T);
size_tgesdd(T)(charjobz, Slice!(T*, 2, Canonical)a, Slice!(realType!T*)s, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt, Slice!(T*)work, Slice!(realType!T*)rwork, Slice!(lapackint*)iwork)
if (isComplex!T); - size_t
gesvd_wq(T)(charjobu, charjobvt, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt); - gesvd work space query
- size_t
gesvd(T)(charjobu, charjobvt, Slice!(T*, 2, Canonical)a, Slice!(T*)s, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt, Slice!(T*)work)
if (!isComplex!T);
size_tgesvd(T)(charjobu, charjobvt, Slice!(T*, 2, Canonical)a, Slice!(realType!T*)s, Slice!(T*, 2, Canonical)u, Slice!(T*, 2, Canonical)vt, Slice!(T*)work, Slice!(realType!T*)rwork)
if (isComplex!T); - size_t
spev(T)(charjobz, Slice!(StairsIterator!(T*, "+"))ap, Slice!(T*)w, Slice!(T*, 2, Canonical)z, Slice!(T*)work); - size_t
sytrf(T)(charuplo, Slice!(T*, 2, Canonical)a, Slice!(lapackint*)ipiv, Slice!(T*)work); - size_t
geqrf(T)(Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*)work); - size_t
getrs(T)(chartrans, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, Slice!(lapackint*)ipiv); - size_t
potrs(T)(charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b); - size_t
sytrs2(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, Slice!(lapackint*)ipiv, Slice!(T*)work, charuplo); - size_t
geqrs(T)(Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b, Slice!(T*)tau, Slice!(T*)work); - size_t
sysv_rook_wk(T)(charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)b); - size_t
sysv_rook(T)(charuplo, Slice!(T*, 2, Canonical)a, Slice!(lapackint*)ipiv, Slice!(T*, 2, Canonical)b, Slice!(T*)work); - size_t
syev_wk(T)(charjobz, charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*)w); - size_t
syev(T)(charjobz, charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*)w, Slice!(T*)work); - size_t
syev_2stage_wk(T)(charjobz, charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*)w); - size_t
syev_2stage(T)(charjobz, charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*)w, Slice!(T*)work); - size_t
potrf(T)(charuplo, Slice!(T*, 2, Canonical)a); - size_t
pptrf(T)(charuplo, Slice!(T*, 2, Canonical)ap); - size_t
sptri(T)(Slice!(StairsIterator!(T*, "+"))ap, Slice!(lapackint*)ipiv, Slice!(T*)work); sptrifor upper triangular input.- size_t
potri(T)(charuplo, Slice!(T*, 2, Canonical)a); - size_t
pptri(T)(Slice!(StairsIterator!(T*, "+"))ap); pptrifor upper triangular input.- size_t
trtri(T)(charuplo, chardiag, Slice!(T*, 2, Canonical)a); - size_t
tptri(T)(chardiag, Slice!(StairsIterator!(T*, "+"))ap); tptrifor upper triangular input.- size_t
ormqr(T)(charside, chartrans, Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*, 2, Canonical)c, Slice!(T*)work); - size_t
unmqr(T)(charside, chartrans, Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*, 2, Canonical)c, Slice!(T*)work); - size_t
orgqr(T)(Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*)work); - size_t
ungqr(T)(Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*)work); - size_t
unghr(T)(Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*)work); - size_t
gehrd(T)(Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*)work, lapackintilo, lapackintihi); - size_t
unmhr(T)(charside, chartrans, Slice!(T*, 2, Canonical)a, Slice!(T*)tau, Slice!(T*, 2, Canonical)c, Slice!(T*)work, lapackintilo, lapackintihi); - size_t
hseqr(T)(charjob, charcompz, Slice!(T*, 2, Canonical)h, Slice!(T*)w, Slice!(T*, 2, Canonical)z, Slice!(T*)work, lapackintilo, lapackintihi)
if (isComplex!T); - size_t
hseqr(T)(charjob, charcompz, Slice!(T*, 2, Canonical)h, Slice!(T*)wr, Slice!(T*)wi, Slice!(T*, 2, Canonical)z, Slice!(T*)work, lapackintilo, lapackintihi)
if (!isComplex!T); - size_t
trevc(T)(charside, charhowmany, lapackintselect, Slice!(T*, 2, Canonical)t, Slice!(T*, 2, Canonical)vl, Slice!(T*, 2, Canonical)vr, lapackintm, Slice!(T*)work); - size_t
gebal(T, realT)(charjob, Slice!(T*, 2, Canonical)a, lapackintilo, lapackintihi, Slice!(realT*)scale)
if (!isComplex!T || isComplex!T && is(realType!T == realT)); - size_t
gebak(T, realT)(charjob, charside, lapackintilo, lapackintihi, Slice!(realT*)scale, Slice!(T*, 2, Canonical)v)
if (!isComplex!T || isComplex!T && is(realType!T == realT)); - size_t
geev(T, realT)(charjobvl, charjobvr, Slice!(T*, 2, Canonical)a, Slice!(T*)w, Slice!(T*, 2, Canonical)vl, Slice!(T*, 2, Canonical)vr, Slice!(T*)work, Slice!(realT*)rwork)
if (isComplex!T && is(realType!T == realT)); - size_t
geev(T)(charjobvl, charjobvr, Slice!(T*, 2, Canonical)a, Slice!(T*)wr, Slice!(T*)wi, Slice!(T*, 2, Canonical)vl, Slice!(T*, 2, Canonical)vr, Slice!(T*)work)
if (!isComplex!T); - size_t
steqr(T, realT = realType!T)(charcompz, Slice!(realT*)d, Slice!(realT*)e, Slice!(T*, 2, Canonical)z, Slice!(realT*)work)
if (is(realType!T == realT)); - @trusted size_t
sytrs_3(T)(charuplo, Slice!(const(T)*, 2, Canonical)a, Slice!(const(T)*)e, Slice!(const(lapackint)*)ipiv, Slice!(T*, 2, Canonical)b); - @trusted size_t
sytrf_rk(T)(charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*)e, Slice!(lapackint*)ipiv, Slice!(T*)work); - size_t
sytrf_rk_wk(T)(charuplo, Slice!(T*, 2, Canonical)a); - @trusted size_t
posvx(T)(charfact, charuplo, Slice!(T*, 2, Canonical)a, Slice!(T*, 2, Canonical)af, charequed, Slice!(T*)s, Slice!(T*, 2, Canonical)b, Slice!(T*, 2, Canonical)x, out Trcond, Slice!(T*)ferr, Slice!(T*)berr, Slice!(T*)work, Slice!(lapackint*)iwork)
if (is(T == double) || is(T == float)); - size_t
sytrf_wk(T)(charuplo, Slice!(T*, 2, Canonical)a);
Copyright © 2016-2020 by Ilya Yaroshenko | Page generated by
Ddoc on Mon Mar 30 13:57:53 2020