orbdb5#
Functions
-
void sorbdb5(const INT m1, const INT m2, const INT n, f32 *restrict X1, const INT incx1, f32 *restrict X2, const INT incx2, const f32 *restrict Q1, const INT ldq1, const f32 *restrict Q2, const INT ldq2, f32 *restrict work, const INT lwork, INT *info)#
SORBDB5 orthogonalizes the column vector X = [ X1 ] [ X2 ] with respect to the columns of Q = [ Q1 ] .
[ Q2 ] The columns of Q must be orthonormal.
If the projection is zero according to Kahan’s “twice is enough” criterion, then some other vector from the orthogonal complement is returned.
Parameters
inm1The dimension of X1 and the number of rows in Q1. 0 <= m1.
inm2The dimension of X2 and the number of rows in Q2. 0 <= m2.
innThe number of columns in Q1 and Q2. 0 <= n.
inoutX1Double precision array, dimension (m1). On entry, the top part of the vector to be orthogonalized. On exit, the top part of the projected vector.
inincx1Increment for entries of X1.
inoutX2Double precision array, dimension (m2). On entry, the bottom part of the vector to be orthogonalized. On exit, the bottom part of the projected vector.
inincx2Increment for entries of X2.
inQ1Double precision array, dimension (ldq1, n). The top part of the orthonormal basis matrix.
inldq1The leading dimension of Q1. ldq1 >= m1.
inQ2Double precision array, dimension (ldq2, n). The bottom part of the orthonormal basis matrix.
inldq2The leading dimension of Q2. ldq2 >= m2.
outworkDouble precision array, dimension (lwork).
inlworkThe dimension of the array work. lwork >= n.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
void sorbdb5(
const INT m1,
const INT m2,
const INT n,
f32* restrict X1,
const INT incx1,
f32* restrict X2,
const INT incx2,
const f32* restrict Q1,
const INT ldq1,
const f32* restrict Q2,
const INT ldq2,
f32* restrict work,
const INT lwork,
INT* info
);
Functions
-
void dorbdb5(const INT m1, const INT m2, const INT n, f64 *restrict X1, const INT incx1, f64 *restrict X2, const INT incx2, const f64 *restrict Q1, const INT ldq1, const f64 *restrict Q2, const INT ldq2, f64 *restrict work, const INT lwork, INT *info)#
DORBDB5 orthogonalizes the column vector X = [ X1 ] [ X2 ] with respect to the columns of Q = [ Q1 ] .
[ Q2 ] The columns of Q must be orthonormal.
If the projection is zero according to Kahan’s “twice is enough” criterion, then some other vector from the orthogonal complement is returned.
Parameters
inm1The dimension of X1 and the number of rows in Q1. 0 <= m1.
inm2The dimension of X2 and the number of rows in Q2. 0 <= m2.
innThe number of columns in Q1 and Q2. 0 <= n.
inoutX1Double precision array, dimension (m1). On entry, the top part of the vector to be orthogonalized. On exit, the top part of the projected vector.
inincx1Increment for entries of X1.
inoutX2Double precision array, dimension (m2). On entry, the bottom part of the vector to be orthogonalized. On exit, the bottom part of the projected vector.
inincx2Increment for entries of X2.
inQ1Double precision array, dimension (ldq1, n). The top part of the orthonormal basis matrix.
inldq1The leading dimension of Q1. ldq1 >= m1.
inQ2Double precision array, dimension (ldq2, n). The bottom part of the orthonormal basis matrix.
inldq2The leading dimension of Q2. ldq2 >= m2.
outworkDouble precision array, dimension (lwork).
inlworkThe dimension of the array work. lwork >= n.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
void dorbdb5(
const INT m1,
const INT m2,
const INT n,
f64* restrict X1,
const INT incx1,
f64* restrict X2,
const INT incx2,
const f64* restrict Q1,
const INT ldq1,
const f64* restrict Q2,
const INT ldq2,
f64* restrict work,
const INT lwork,
INT* info
);