104     double maxlnz, dunits ;
 
  106     Int *Pinv, *Lpend, *Stack, *Flag, *Ap_pos, *W ;
 
  107     Int lsize, usize, anz, ok ;
 
  116     anz = Ap [
n+k1] - Ap [k1] ;
 
  121   Lsize = 
MAX (Lsize, 1.0) ;
 
  122   lsize = Lsize * anz + 
n ;
 
  131     lsize  = 
MAX (
n+1, lsize) ;
 
  132     usize  = 
MAX (
n+1, usize) ;
 
  134     maxlnz = (((double) 
n) * ((double) 
n) + ((double) n)) / 2. ;
 
  135     maxlnz = 
MIN (maxlnz, ((
double) INT_MAX)) ;
 
  136     lsize  = 
MIN (maxlnz, lsize) ;
 
  137     usize  = 
MIN (maxlnz, usize) ;
 
  139     PRINTF ((
"Welcome to klu: n %d anz %d k1 %d lsize %d usize %d maxlnz %g\n",
 
  140   n, anz, k1, lsize, usize, maxlnz)) ;
 
  151     Pinv = (
Int *) W ;      W += n ;
 
  152     Stack = (
Int *) W ;     W += n ;
 
  153     Flag = (
Int *) W ;      W += n ;
 
  154     Lpend = (
Int *) W ;     W += n ;
 
  155     Ap_pos = (
Int *) W ;    W += n ;
 
  159     lusize = (size_t) dunits ;
 
  175     lusize = 
KLU_kernel (n, Ap, Ai, Ax, Q, lusize,
 
  176       Pinv, 
P, &LU, Udiag, Llen, Ulen, Lip, Uip, lnz, unz,
 
  177       X, Stack, Flag, Ap_pos, Lpend,
 
  178       k1, PSinv, Rs, Offp, Offi, Offx, Common) ;
 
  184     if (Common->status < 
KLU_OK)
 
  190     PRINTF ((
" in klu noffdiag %d\n", Common->noffdiag)) ;
 
  225       for (k = 0 ; k < n ; k++)
 
  230     for (p = 0 ; p < len ; p++)
 
  233         MULT_SUB (X [Li [p]], Lx [p], x [0]) ;
 
  240       for (k = 0 ; k < n ; k++)
 
  243     x [1] = X [2*k + 1] ;
 
  245     for (p = 0 ; p < len ; p++)
 
  250         MULT_SUB (X [2*i + 1], lik, x [1]) ;
 
  257       for (k = 0 ; k < n ; k++)
 
  260     x [1] = X [3*k + 1] ;
 
  261     x [2] = X [3*k + 2] ;
 
  263     for (p = 0 ; p < len ; p++)
 
  268         MULT_SUB (X [3*i + 1], lik, x [1]) ;
 
  269         MULT_SUB (X [3*i + 2], lik, x [2]) ;
 
  276       for (k = 0 ; k < n ; k++)
 
  279     x [1] = X [4*k + 1] ;
 
  280     x [2] = X [4*k + 2] ;
 
  281     x [3] = X [4*k + 3] ;
 
  283     for (p = 0 ; p < len ; p++)
 
  288         MULT_SUB (X [4*i + 1], lik, x [1]) ;
 
  289         MULT_SUB (X [4*i + 2], lik, x [2]) ;
 
  290         MULT_SUB (X [4*i + 3], lik, x [3]) ;
 
  320     Entry x [4], uik, ukk ;
 
  330       for (k = n-1 ; k >= 0 ; k--)
 
  334     DIV (x [0], X [k], Udiag [k]) ;
 
  336     for (p = 0 ; p < len ; p++)
 
  339         MULT_SUB (X [Ui [p]], Ux [p], x [0]) ;
 
  348       for (k = n-1 ; k >= 0 ; k--)
 
  354     DIV (x [0], X [2*k], ukk) ;
 
  355     DIV (x [1], X [2*k + 1], ukk) ;
 
  358     X [2*k + 1] = x [1] ;
 
  359     for (p = 0 ; p < len ; p++)
 
  366         MULT_SUB (X [2*i + 1], uik, x [1]) ;
 
  374       for (k = n-1 ; k >= 0 ; k--)
 
  379     DIV (x [0], X [3*k], ukk) ;
 
  380     DIV (x [1], X [3*k + 1], ukk) ;
 
  381     DIV (x [2], X [3*k + 2], ukk) ;
 
  384     X [3*k + 1] = x [1] ;
 
  385     X [3*k + 2] = x [2] ;
 
  386     for (p = 0 ; p < len ; p++)
 
  391         MULT_SUB (X [3*i + 1], uik, x [1]) ;
 
  392         MULT_SUB (X [3*i + 2], uik, x [2]) ;
 
  400       for (k = n-1 ; k >= 0 ; k--)
 
  405     DIV (x [0], X [4*k], ukk) ;
 
  406     DIV (x [1], X [4*k + 1], ukk) ;
 
  407     DIV (x [2], X [4*k + 2], ukk) ;
 
  408     DIV (x [3], X [4*k + 3], ukk) ;
 
  411     X [4*k + 1] = x [1] ;
 
  412     X [4*k + 2] = x [2] ;
 
  413     X [4*k + 3] = x [3] ;
 
  414     for (p = 0 ; p < len ; p++)
 
  420         MULT_SUB (X [4*i + 1], uik, x [1]) ;
 
  421         MULT_SUB (X [4*i + 2], uik, x [2]) ;
 
  422         MULT_SUB (X [4*i + 3], uik, x [3]) ;
 
  466       for (k = n-1 ; k >= 0 ; k--)
 
  470     for (p = 0 ; p < len ; p++)
 
  482       MULT_SUB (x [0], Lx [p], X [Li [p]]) ;
 
  491       for (k = n-1 ; k >= 0 ; k--)
 
  494     x [1] = X [2*k + 1] ;
 
  496     for (p = 0 ; p < len ; p++)
 
  510         MULT_SUB (x [1], lik, X [2*i + 1]) ;
 
  513     X [2*k + 1] = x [1] ;
 
  519       for (k = n-1 ; k >= 0 ; k--)
 
  522     x [1] = X [3*k + 1] ;
 
  523     x [2] = X [3*k + 2] ;
 
  525     for (p = 0 ; p < len ; p++)
 
  539         MULT_SUB (x [1], lik, X [3*i + 1]) ;
 
  540         MULT_SUB (x [2], lik, X [3*i + 2]) ;
 
  543     X [3*k + 1] = x [1] ;
 
  544     X [3*k + 2] = x [2] ;
 
  550       for (k = n-1 ; k >= 0 ; k--)
 
  553     x [1] = X [4*k + 1] ;
 
  554     x [2] = X [4*k + 2] ;
 
  555     x [3] = X [4*k + 3] ;
 
  557     for (p = 0 ; p < len ; p++)
 
  571         MULT_SUB (x [1], lik, X [4*i + 1]) ;
 
  572         MULT_SUB (x [2], lik, X [4*i + 2]) ;
 
  573         MULT_SUB (x [3], lik, X [4*i + 3]) ;
 
  576     X [4*k + 1] = x [1] ;
 
  577     X [4*k + 2] = x [2] ;
 
  578     X [4*k + 3] = x [3] ;
 
  610     Entry x [4], uik, ukk ;
 
  620       for (k = 0 ; k < n ; k++)
 
  624     for (p = 0 ; p < len ; p++)
 
  636       MULT_SUB (x [0], Ux [p], X [Ui [p]]) ;
 
  642         CONJ (ukk, Udiag [k]) ;
 
  649     DIV (X [k], x [0], ukk) ;
 
  655       for (k = 0 ; k < n ; k++)
 
  659     x [1] = X [2*k + 1] ;
 
  660     for (p = 0 ; p < len ; p++)
 
  674         MULT_SUB (x [1], uik, X [2*i + 1]) ;
 
  679         CONJ (ukk, Udiag [k]) ;
 
  686     DIV (X [2*k], x [0], ukk) ;
 
  687     DIV (X [2*k + 1], x [1], ukk) ;
 
  693       for (k = 0 ; k < n ; k++)
 
  697     x [1] = X [3*k + 1] ;
 
  698     x [2] = X [3*k + 2] ;
 
  699     for (p = 0 ; p < len ; p++)
 
  713         MULT_SUB (x [1], uik, X [3*i + 1]) ;
 
  714         MULT_SUB (x [2], uik, X [3*i + 2]) ;
 
  719         CONJ (ukk, Udiag [k]) ;
 
  726     DIV (X [3*k], x [0], ukk) ;
 
  727     DIV (X [3*k + 1], x [1], ukk) ;
 
  728     DIV (X [3*k + 2], x [2], ukk) ;
 
  734       for (k = 0 ; k < n ; k++)
 
  738     x [1] = X [4*k + 1] ;
 
  739     x [2] = X [4*k + 2] ;
 
  740     x [3] = X [4*k + 3] ;
 
  741     for (p = 0 ; p < len ; p++)
 
  755         MULT_SUB (x [1], uik, X [4*i + 1]) ;
 
  756         MULT_SUB (x [2], uik, X [4*i + 2]) ;
 
  757         MULT_SUB (x [3], uik, X [4*i + 3]) ;
 
  762         CONJ (ukk, Udiag [k]) ;
 
  769     DIV (X [4*k], x [0], ukk) ;
 
  770     DIV (X [4*k + 1], x [1], ukk) ;
 
  771     DIV (X [4*k + 2], x [2], ukk) ;
 
  772     DIV (X [4*k + 3], x [3], ukk) ;
 
#define GET_POINTER(LU, Xip, Xlen, Xi, Xx, k, xlen)
void KLU_utsolve(Int n, Int Uip[], Int Ulen[], Unit LU[], Entry Udiag[], Int nrhs, Entry X[])
#define KLU_OUT_OF_MEMORY
#define ASSERT(expression)
#define MULT_SUB(c, a, b)
#define MULT_SUB_CONJ(c, a, b)
size_t KLU_kernel_factor(Int n, Int Ap[], Int Ai[], Entry Ax[], Int Q[], double Lsize, Unit **p_LU, Entry Udiag[], Int Llen[], Int Ulen[], Int Lip[], Int Uip[], Int P[], Int *lnz, Int *unz, Entry *X, Int *Work, Int k1, Int PSinv[], double Rs[], Int Offp[], Int Offi[], Entry Offx[], KLU_common *Common)
void KLU_lsolve(Int n, Int Lip[], Int Llen[], Unit LU[], Int nrhs, Entry X[])
void KLU_usolve(Int n, Int Uip[], Int Ulen[], Unit LU[], Entry Udiag[], Int nrhs, Entry X[])
void KLU_ltsolve(Int n, Int Lip[], Int Llen[], Unit LU[], Int nrhs, Entry X[])