Add early returns
This commit is contained in:
parent
6797a3a1e0
commit
c9b67141f0
|
@ -29,15 +29,16 @@ void RELAPACK_dgetrf(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const blasint sn = MIN(*m, *n);
|
if (*m == 0 || *n == 0) return;
|
||||||
|
|
||||||
|
const blasint sn = MIN(*m, *n);
|
||||||
RELAPACK_dgetrf_rec(m, &sn, A, ldA, ipiv, info);
|
RELAPACK_dgetrf_rec(m, &sn, A, ldA, ipiv, info);
|
||||||
|
|
||||||
// Right remainder
|
// Right remainder
|
||||||
if (*m < *n) {
|
if (*m < *n) {
|
||||||
// Constants
|
// Constants
|
||||||
const double ONE[] = { 1. };
|
const double ONE[] = { 1. };
|
||||||
const blasint iONE[] = { 1. };
|
const blasint iONE[] = { 1 };
|
||||||
|
|
||||||
// Splitting
|
// Splitting
|
||||||
const blasint rn = *n - *m;
|
const blasint rn = *n - *m;
|
||||||
|
@ -60,13 +61,11 @@ static void RELAPACK_dgetrf_rec(
|
||||||
double *A, const blasint *ldA, blasint *ipiv,
|
double *A, const blasint *ldA, blasint *ipiv,
|
||||||
blasint *info
|
blasint *info
|
||||||
) {
|
) {
|
||||||
|
if ( *n <= MAX(CROSSOVER_DGETRF, 1)) {
|
||||||
if (*n <= MAX(CROSSOVER_DGETRF, 1)) {
|
|
||||||
// Unblocked
|
// Unblocked
|
||||||
LAPACK(dgetf2)(m, n, A, ldA, ipiv, info);
|
LAPACK(dgetrf2)(m, n, A, ldA, ipiv, info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
const double ONE[] = { 1. };
|
const double ONE[] = { 1. };
|
||||||
const double MONE[] = { -1. };
|
const double MONE[] = { -1. };
|
||||||
|
@ -95,6 +94,7 @@ static void RELAPACK_dgetrf_rec(
|
||||||
|
|
||||||
// recursion(A_L, ipiv_T)
|
// recursion(A_L, ipiv_T)
|
||||||
RELAPACK_dgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info);
|
RELAPACK_dgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info);
|
||||||
|
if (*info) return;
|
||||||
// apply pivots to A_R
|
// apply pivots to A_R
|
||||||
LAPACK(dlaswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE);
|
LAPACK(dlaswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ void RELAPACK_dsytrf(
|
||||||
*info = -2;
|
*info = -2;
|
||||||
else if (*ldA < MAX(1, *n))
|
else if (*ldA < MAX(1, *n))
|
||||||
*info = -4;
|
*info = -4;
|
||||||
else if (*lWork < minlWork && *lWork != -1)
|
else if ((*lWork < 1 || *lWork < minlWork) && *lWork != -1)
|
||||||
*info = -7;
|
*info = -7;
|
||||||
else if (*lWork == -1) {
|
else if (*lWork == -1) {
|
||||||
// Work size query
|
// Work size query
|
||||||
|
@ -67,6 +67,7 @@ void RELAPACK_dsytrf(
|
||||||
blasint nout;
|
blasint nout;
|
||||||
|
|
||||||
// Recursive kernel
|
// Recursive kernel
|
||||||
|
if (*n != 0)
|
||||||
RELAPACK_dsytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
RELAPACK_dsytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
||||||
|
|
||||||
#if XSYTRF_ALLOW_MALLOC
|
#if XSYTRF_ALLOW_MALLOC
|
||||||
|
|
|
@ -36,7 +36,7 @@ void RELAPACK_dsytrf_rook(
|
||||||
*info = -2;
|
*info = -2;
|
||||||
else if (*ldA < MAX(1, *n))
|
else if (*ldA < MAX(1, *n))
|
||||||
*info = -4;
|
*info = -4;
|
||||||
else if (*lWork < minlWork && *lWork != -1)
|
else if ((*lWork <1 || *lWork < minlWork) && *lWork != -1)
|
||||||
*info = -7;
|
*info = -7;
|
||||||
else if (*lWork == -1) {
|
else if (*lWork == -1) {
|
||||||
// Work size query
|
// Work size query
|
||||||
|
@ -56,7 +56,7 @@ void RELAPACK_dsytrf_rook(
|
||||||
|
|
||||||
if (*info) {
|
if (*info) {
|
||||||
const blasint minfo = -*info;
|
const blasint minfo = -*info;
|
||||||
LAPACK(xerbla)("DSYTRF", &minfo, strlen("DSYTRF"));
|
LAPACK(xerbla)("DSYTRF_ROOK", &minfo, strlen("DSYTRF_ROOK"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,11 @@ void RELAPACK_dtrsyl(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*m == 0 || *n == 0) {
|
||||||
|
*scale = 1.;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Clean char * arguments
|
// Clean char * arguments
|
||||||
const char cleantranA = notransA ? 'N' : (transA ? 'T' : 'C');
|
const char cleantranA = notransA ? 'N' : (transA ? 'T' : 'C');
|
||||||
const char cleantranB = notransB ? 'N' : (transB ? 'T' : 'C');
|
const char cleantranB = notransB ? 'N' : (transB ? 'T' : 'C');
|
||||||
|
|
|
@ -30,6 +30,7 @@ void RELAPACK_zgetrf(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*m == 0 || *n == 0) return;
|
||||||
const blasint sn = MIN(*m, *n);
|
const blasint sn = MIN(*m, *n);
|
||||||
|
|
||||||
RELAPACK_zgetrf_rec(m, &sn, A, ldA, ipiv, info);
|
RELAPACK_zgetrf_rec(m, &sn, A, ldA, ipiv, info);
|
||||||
|
@ -62,9 +63,11 @@ static void RELAPACK_zgetrf_rec(
|
||||||
blasint *info
|
blasint *info
|
||||||
) {
|
) {
|
||||||
|
|
||||||
if (*n <= MAX(CROSSOVER_ZGETRF, 1)) {
|
if (*m == 0 || *n == 0) return;
|
||||||
|
|
||||||
|
if ( *n <= MAX(CROSSOVER_ZGETRF, 1)) {
|
||||||
// Unblocked
|
// Unblocked
|
||||||
LAPACK(zgetf2)(m, n, A, ldA, ipiv, info);
|
LAPACK(zgetrf2)(m, n, A, ldA, ipiv, info);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,6 +99,8 @@ static void RELAPACK_zgetrf_rec(
|
||||||
|
|
||||||
// recursion(A_L, ipiv_T)
|
// recursion(A_L, ipiv_T)
|
||||||
RELAPACK_zgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info);
|
RELAPACK_zgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info);
|
||||||
|
if (*info) return;
|
||||||
|
|
||||||
// apply pivots to A_R
|
// apply pivots to A_R
|
||||||
LAPACK(zlaswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE);
|
LAPACK(zlaswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE);
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ void RELAPACK_zhetrf_rook(
|
||||||
*info = -2;
|
*info = -2;
|
||||||
else if (*ldA < MAX(1, *n))
|
else if (*ldA < MAX(1, *n))
|
||||||
*info = -4;
|
*info = -4;
|
||||||
else if (*lWork < minlWork && *lWork != -1)
|
else if ((*lWork < 1 || *lWork < minlWork) && *lWork != -1)
|
||||||
*info = -7;
|
*info = -7;
|
||||||
else if (*lWork == -1) {
|
else if (*lWork == -1) {
|
||||||
// Work size query
|
// Work size query
|
||||||
|
@ -56,7 +56,7 @@ void RELAPACK_zhetrf_rook(
|
||||||
|
|
||||||
if (*info) {
|
if (*info) {
|
||||||
const blasint minfo = -*info;
|
const blasint minfo = -*info;
|
||||||
LAPACK(xerbla)("ZHETRF", &minfo, strlen("ZHETRF"));
|
LAPACK(xerbla)("ZHETRF_ROOK", &minfo, strlen("ZHETRF_ROOK"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ void RELAPACK_zsytrf(
|
||||||
*info = -2;
|
*info = -2;
|
||||||
else if (*ldA < MAX(1, *n))
|
else if (*ldA < MAX(1, *n))
|
||||||
*info = -4;
|
*info = -4;
|
||||||
else if (*lWork < minlWork && *lWork != -1)
|
else if ((*lWork < 1 || *lWork < minlWork) && *lWork != -1)
|
||||||
*info = -7;
|
*info = -7;
|
||||||
else if (*lWork == -1) {
|
else if (*lWork == -1) {
|
||||||
// Work size query
|
// Work size query
|
||||||
|
@ -67,6 +67,7 @@ void RELAPACK_zsytrf(
|
||||||
blasint nout;
|
blasint nout;
|
||||||
|
|
||||||
// Recursive kernel
|
// Recursive kernel
|
||||||
|
if (*n != 0)
|
||||||
RELAPACK_zsytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
RELAPACK_zsytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
||||||
|
|
||||||
#if XSYTRF_ALLOW_MALLOC
|
#if XSYTRF_ALLOW_MALLOC
|
||||||
|
|
|
@ -36,7 +36,7 @@ void RELAPACK_zsytrf_rook(
|
||||||
*info = -2;
|
*info = -2;
|
||||||
else if (*ldA < MAX(1, *n))
|
else if (*ldA < MAX(1, *n))
|
||||||
*info = -4;
|
*info = -4;
|
||||||
else if (*lWork < minlWork && *lWork != -1)
|
else if ((*lWork < 1 || *lWork < minlWork) && *lWork != -1)
|
||||||
*info = -7;
|
*info = -7;
|
||||||
else if (*lWork == -1) {
|
else if (*lWork == -1) {
|
||||||
// Work size query
|
// Work size query
|
||||||
|
@ -56,7 +56,7 @@ void RELAPACK_zsytrf_rook(
|
||||||
|
|
||||||
if (*info) {
|
if (*info) {
|
||||||
const blasint minfo = -*info;
|
const blasint minfo = -*info;
|
||||||
LAPACK(xerbla)("ZSYTRF", &minfo, strlen("ZSYTRF"));
|
LAPACK(xerbla)("ZSYTRF_ROOK", &minfo, strlen("ZSYTRF_ROOK"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ void RELAPACK_zsytrf_rook(
|
||||||
blasint nout;
|
blasint nout;
|
||||||
|
|
||||||
// Recursive kernel
|
// Recursive kernel
|
||||||
|
if (*n != 0)
|
||||||
RELAPACK_zsytrf_rook_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
RELAPACK_zsytrf_rook_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);
|
||||||
|
|
||||||
#if XSYTRF_ALLOW_MALLOC
|
#if XSYTRF_ALLOW_MALLOC
|
||||||
|
|
|
@ -47,6 +47,11 @@ void RELAPACK_ztrsyl(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*m == 0 || *n == 0) {
|
||||||
|
*scale = 1.;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Clean char * arguments
|
// Clean char * arguments
|
||||||
const char cleantranA = notransA ? 'N' : 'C';
|
const char cleantranA = notransA ? 'N' : 'C';
|
||||||
const char cleantranB = notransB ? 'N' : 'C';
|
const char cleantranB = notransB ? 'N' : 'C';
|
||||||
|
|
|
@ -69,8 +69,8 @@ static void RELAPACK_ztrtri_rec(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
const double ONE[] = { 1. };
|
const double ONE[] = { 1., 0. };
|
||||||
const double MONE[] = { -1. };
|
const double MONE[] = { -1. , 0. };
|
||||||
|
|
||||||
// Splitting
|
// Splitting
|
||||||
const blasint n1 = ZREC_SPLIT(*n);
|
const blasint n1 = ZREC_SPLIT(*n);
|
||||||
|
|
Loading…
Reference in New Issue