26     double *LUix, *Xchild, *Ux, *X ;
 
   27     Int *Child, *Childp, *Lost, *Lostp, *Cstart, *Uip, *Ulen,
 
   28   *Cn, *Qinv, *Ui, *Sched, *Cparent ;
 
   29     Int cp, nchild, child, cn, k, j, p, i, nfound, k1, k2, ulen,
 
   30   ci, nlost_in, cn_child, cn_nfound, myid, parent ;
 
   32     MPI (MPI_Request req) ;
 
   39     PR0 ((Common->
file, 
"\n\n########################### Usolve NODE "ID"\n", c));
 
   46     Childp = LUsymbolic->
Childp ; 
 
   47     Child  = LUsymbolic->
Child ;  
 
   48     nchild = Childp [c+1] - Childp [c] ;    
 
   50     Cstart = LUsymbolic->
Cstart ;
 
   51     Sched = LUsymbolic->
Sched ;
 
   60     nfound = LUnode->PK_NFOUND ;
 
   62     parent = Cparent [c] ;
 
   64     PR1 ((Common->
file, 
"Usolve node "ID" cn "ID" nfound "ID"\n", c, cn, nfound)) ;
 
   66     if (parent != 
EMPTY && Sched [parent] != myid)
 
   68   PR1 ((Common->
file, 
"Recving usolve from "ID
", size "ID
"\n", Sched [parent],
 
   70   MPI (MPI_Irecv (X + nfound, cn-nfound, MPI_DOUBLE, Sched [parent],
 
   71     TAG0, MPI_COMM_WORLD, &req)) ;
 
   72   MPI (MPI_Wait (&req, &ms)) ;
 
   84     for (j = cn-1 ; j >= nfound ; j--)
 
   87   GET_COLUMN (Uip, Ulen, LUix, j, Ui, Ux, ulen) ;
 
   88   for (p = 0 ; p < ulen ; p++)
 
   90       X [Ui [p]] -= Ux [p] * xj ;
 
   97   GET_COLUMN (Uip, Ulen, LUix, j, Ui, Ux, ulen) ;
 
   98   xj = X [j] / Ux [ulen-1] ;
 
  100   for (p = 0 ; p < ulen-1 ; p++)
 
  102       X [Ui [p]] -= Ux [p] * xj ;
 
  111     Lost  = LUnode->
Lost ;
 
  112     Lostp = LUnode->
Lostp ;
 
  116     cn = nlost_in + Cn [c] ;
 
  120     PR1 ((Common->
file, 
"NODE "ID
" nlost_in: "ID
"\n", c, nlost_in)) ;
 
  122     Qinv = LUnode->
Qinv ;
 
  126   Int npiv = LUnode->PK_NPIV ;
 
  128   ASSERT (cn == LUnode->PK_NN) ;
 
  129   ASSERT (npiv == nlost_in + (k2 - k1)) ;
 
  130   for (k = 0 ; k < npiv ; k++)
 
  133       ASSERT (i >= 0 && i < npiv) ;
 
  145     for (cp = 0 ; cp < nchild ; cp++)
 
  147   child = Child [Childp [c] + cp] ;
 
  148   cn_child = LU->
LUnode [child]->PK_NN ;
 
  149   cn_nfound = LU->
LUnode [child]->PK_NFOUND ;
 
  150   Xchild = LU->
LUnode [child]->
X + cn_nfound ;
 
  152   PR1 ((Common->
file, 
"child "ID
" cn "ID
" nfound "ID
"\n",
 
  153     child, cn_child, cn_nfound)) ;
 
  156   for (i = 0 ; i < Lost [cp] ; i++)
 
  158       ci = i + Lostp [cp] ; 
 
  160       PR2 ((Common->
file, 
"Xchild ["ID
"] = %g from X ["ID
"] (lost)\n",
 
  166   for ( ; i < Lost [cp] + (k2-k1) ; i++)
 
  168       ci = i + (nlost_in - Lost [cp]) ;
 
  170       PR2 ((Common->
file, 
"Xchild ["ID
"] = %g from X ["ID
"] (cand)\n",
 
  176   for ( ; i < cn_child - cn_nfound ; i++)
 
  178       k = i + (nlost_in - Lost [cp]) ;
 
  179       PR2 ((Common->
file, 
"Xchild ["ID
"] = %g from X ["ID
"] (anc)\n",
 
  184   PR1 ((Common->
file, 
"Usolve: Sending from "ID
" to child "ID
"\n", c, child));
 
  185   if (Sched [child] != myid)
 
  187       PR1 ((Common->
file, 
"Sending to "ID
", size "ID
"\n", Sched [child], 
 
  188         cn_child - cn_nfound)) ;
 
  189       MPI (MPI_Isend (Xchild, cn_child - cn_nfound, MPI_DOUBLE,
 
  190       Sched [child], 
TAG0, MPI_COMM_WORLD, &req)) ;
 
  193       MPI (MPI_Request_free (&req)) ;
 
Int amesos_paraklete_usolve_node(Int c, paraklete_numeric *LU, paraklete_symbolic *LUsymbolic, paraklete_common *Common)
 
#define GET_COLUMN(Ap, Anz, Aix, j, Ai, Ax, len)
 
#define ASSERT(expression)
 
int CHOLMOD() print_perm(Int *Perm, size_t len, size_t n, char *name, cholmod_common *Common)