Browse Source

Add early returns

tags/v0.3.11^2
Martin Kroeker GitHub 5 years ago
parent
commit
6797a3a1e0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 34 additions and 7 deletions
  1. +7
    -2
      relapack/src/cgetrf.c
  2. +2
    -0
      relapack/src/chegst.c
  3. +2
    -2
      relapack/src/chetrf_rook.c
  4. +2
    -0
      relapack/src/clauum.c
  5. +3
    -0
      relapack/src/cpotrf.c
  6. +2
    -1
      relapack/src/csytrf.c
  7. +2
    -2
      relapack/src/csytrf_rook.c
  8. +7
    -0
      relapack/src/ctgsyl.c
  9. +5
    -0
      relapack/src/ctrsyl.c
  10. +2
    -0
      relapack/src/ctrtri.c

+ 7
- 2
relapack/src/cgetrf.c View File

@@ -30,6 +30,8 @@ void RELAPACK_cgetrf(
return; return;
} }


if (*m == 0 || *n == 0) return;

const blasint sn = MIN(*m, *n); const blasint sn = MIN(*m, *n);


RELAPACK_cgetrf_rec(m, &sn, A, ldA, ipiv, info); RELAPACK_cgetrf_rec(m, &sn, A, ldA, ipiv, info);
@@ -62,9 +64,11 @@ static void RELAPACK_cgetrf_rec(
blasint *info blasint *info
) { ) {


if (*n <= MAX(CROSSOVER_CGETRF, 1)) {
if (*m == 0 || *n == 0) return;

if ( *n <= MAX(CROSSOVER_CGETRF, 1)) {
// Unblocked // Unblocked
LAPACK(cgetf2)(m, n, A, ldA, ipiv, info);
LAPACK(cgetrf2)(m, n, A, ldA, ipiv, info);
return; return;
} }


@@ -96,6 +100,7 @@ static void RELAPACK_cgetrf_rec(


// recursion(A_L, ipiv_T) // recursion(A_L, ipiv_T)
RELAPACK_cgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info); RELAPACK_cgetrf_rec(m, &n1, A_L, ldA, ipiv_T, info);
if (*info) return;
// apply pivots to A_R // apply pivots to A_R
LAPACK(claswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE); LAPACK(claswp)(&n2, A_R, ldA, iONE, &n1, ipiv_T, iONE);




+ 2
- 0
relapack/src/chegst.c View File

@@ -40,6 +40,8 @@ void RELAPACK_chegst(
return; return;
} }


if (*n == 0) return;

// Clean char * arguments // Clean char * arguments
const char cleanuplo = lower ? 'L' : 'U'; const char cleanuplo = lower ? 'L' : 'U';




+ 2
- 2
relapack/src/chetrf_rook.c View File

@@ -36,7 +36,7 @@ void RELAPACK_chetrf_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_chetrf_rook(


if (*info) { if (*info) {
const blasint minfo = -*info; const blasint minfo = -*info;
LAPACK(xerbla)("CHETRF", &minfo, strlen("CHETRF"));
LAPACK(xerbla)("CHETRF_ROOK", &minfo, strlen("CHETRF_ROOK"));
return; return;
} }




+ 2
- 0
relapack/src/clauum.c View File

@@ -32,6 +32,8 @@ void RELAPACK_clauum(
return; return;
} }


if (*n == 0) return;

// Clean char * arguments // Clean char * arguments
const char cleanuplo = lower ? 'L' : 'U'; const char cleanuplo = lower ? 'L' : 'U';




+ 3
- 0
relapack/src/cpotrf.c View File

@@ -32,6 +32,8 @@ void RELAPACK_cpotrf(
return; return;
} }


if (*n == 0) return;

// Clean char * arguments // Clean char * arguments
const char cleanuplo = lower ? 'L' : 'U'; const char cleanuplo = lower ? 'L' : 'U';


@@ -46,6 +48,7 @@ static void RELAPACK_cpotrf_rec(
float *A, const blasint *ldA, float *A, const blasint *ldA,
blasint *info blasint *info
){ ){
if (*n == 0) return;


if (*n <= MAX(CROSSOVER_CPOTRF, 1)) { if (*n <= MAX(CROSSOVER_CPOTRF, 1)) {
// Unblocked // Unblocked


+ 2
- 1
relapack/src/csytrf.c View File

@@ -36,7 +36,7 @@ void RELAPACK_csytrf(
*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_csytrf(
blasint nout; blasint nout;


// Recursive kernel // Recursive kernel
if (*n != 0)
RELAPACK_csytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info); RELAPACK_csytrf_rec(&cleanuplo, n, n, &nout, A, ldA, ipiv, cleanWork, n, info);


#if XSYTRF_ALLOW_MALLOC #if XSYTRF_ALLOW_MALLOC


+ 2
- 2
relapack/src/csytrf_rook.c View File

@@ -36,7 +36,7 @@ void RELAPACK_csytrf_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_csytrf_rook(


if (*info) { if (*info) {
const blasint minfo = -*info; const blasint minfo = -*info;
LAPACK(xerbla)("CSYTRF", &minfo, strlen("CSYTRF"));
LAPACK(xerbla)("CSYTRF_ROOK", &minfo, strlen("CSYTRF_ROOK"));
return; return;
} }




+ 7
- 0
relapack/src/ctgsyl.c View File

@@ -68,6 +68,13 @@ void RELAPACK_ctgsyl(
return; return;
} }


if ( *m == 0 || *n == 0) {
*scale = 1.;
if (notran && (*ijob != 0))
*dif = 0.;
return;
}

// Clean char * arguments // Clean char * arguments
const char cleantrans = notran ? 'N' : 'C'; const char cleantrans = notran ? 'N' : 'C';




+ 5
- 0
relapack/src/ctrsyl.c View File

@@ -47,6 +47,11 @@ void RELAPACK_ctrsyl(
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';


+ 2
- 0
relapack/src/ctrtri.c View File

@@ -36,6 +36,8 @@ void RELAPACK_ctrtri(
return; return;
} }


if (*n == 0) return;

// Clean char * arguments // Clean char * arguments
const char cleanuplo = lower ? 'L' : 'U'; const char cleanuplo = lower ? 'L' : 'U';
const char cleandiag = nounit ? 'N' : 'U'; const char cleandiag = nounit ? 'N' : 'U';


Loading…
Cancel
Save