40 double xlen, dj [1], ljj [1], lj2 [1] ;
43 Int n, j, len, pnew, pold, k, p, pend ;
65 for (j = 0 ; j < n ; j++)
70 j, Lnz [j], len, pnew)) ;
82 ASSIGN_REAL (dj,0, Lx,pold) ;
90 if (L->
minor == (
size_t) n)
95 for (k = 0 ; k < len ; k++)
97 newLi [pnew + k] = Li [pold + k] ;
99 ASSIGN (newLx, newLz, pnew+k, Lx, Lz, pold+k) ;
104 ljj [0] = sqrt (dj [0]) ;
107 ASSIGN_REAL (newLx, pnew, ljj, 0) ;
108 CLEAR_IMAG (newLx, newLz, pnew) ;
110 for (k = 1 ; k < len ; k++)
112 newLi [pnew + k] = Li [pold + k] ;
114 MULT_REAL (newLx, newLz, pnew+k, Lx, Lz, pold+k, ljj,0);
127 ASSIGN_REAL (ljj, 0, Lx, pold) ;
132 for (k = 0 ; k < len ; k++)
134 newLi [pnew + k] = Li [pold + k] ;
136 ASSIGN (newLx, newLz, pnew+k, Lx, Lz, pold+k) ;
143 lj2 [0] = ljj [0] * ljj [0] ;
144 ASSIGN_REAL (newLx, pnew, lj2, 0) ;
145 CLEAR_IMAG (newLx, newLz, pnew) ;
147 for (k = 1 ; k < len ; k++)
149 newLi [pnew + k] = Li [pold + k] ;
151 DIV_REAL (newLx, newLz, pnew+k, Lx, Lz, pold+k, ljj,0) ;
163 for (k = 0 ; k < len ; k++)
165 newLi [pnew + k] = Li [pold + k] ;
167 ASSIGN (newLx, newLz, pnew+k, Lx, Lz, pold+k) ;
176 xlen = (double) len ;
177 xlen = grow1 * xlen + grow2 ;
178 xlen =
MIN (xlen, n-j) ;
181 ASSERT (len >= Lnz [j] && len <= n-j) ;
186 PRINT1 ((
"final pnew = "ID", lnz "ID" lnzmax %g\n",
187 pnew, lnz, (
double) L->
nzmax)) ;
195 #elif defined (COMPLEX)
227 for (j = 0 ; j < n ; j++)
234 PRINT2 ((
"col "ID" pnew "ID" pold "ID"\n", j, pnew, pold)) ;
237 ASSIGN_REAL (dj,0, Lx,pold) ;
245 if (L->
minor == (
size_t) n)
250 for (k = 0 ; k < len ; k++)
252 Li [pnew + k] = Li [pold + k] ;
254 ASSIGN (Lx, Lz, pnew+k, Lx, Lz, pold+k) ;
259 ljj [0] = sqrt (dj [0]) ;
263 ASSIGN_REAL (Lx, pnew, ljj, 0) ;
264 CLEAR_IMAG (Lx, Lz, pnew) ;
266 for (k = 1 ; k < len ; k++)
268 Li [pnew + k] = Li [pold + k] ;
270 MULT_REAL (Lx, Lz, pnew+k, Lx, Lz, pold+k, ljj,0) ;
285 for (j = 0 ; j < n ; j++)
292 ASSIGN_REAL (ljj, 0, Lx, pold) ;
295 PRINT2 ((
"col "ID" pnew "ID" pold "ID"\n", j, pnew, pold)) ;
299 for (k = 0 ; k < len ; k++)
301 Li [pnew + k] = Li [pold + k] ;
303 ASSIGN (Lx, Lz, pnew+k, Lx, Lz, pold+k) ;
308 Li [pnew] = Li [pold] ;
311 lj2 [0] = ljj [0] * ljj [0] ;
312 ASSIGN_REAL (Lx, pnew, lj2, 0) ;
313 CLEAR_IMAG (Lx, Lz, pnew) ;
315 for (k = 1 ; k < len ; k++)
317 Li [pnew + k] = Li [pold + k] ;
319 DIV_REAL (Lx, Lz, pnew+k, Lx, Lz, pold+k, ljj,0) ;
334 for (j = 0 ; j < n ; j++)
340 PRINT2 ((
"col "ID" pnew "ID" pold "ID"\n", j, pnew, pold)) ;
343 PRINT2 ((
" pack this column\n")) ;
344 for (k = 0 ; k < len ; k++)
346 Li [pnew + k] = Li [pold + k] ;
348 ASSIGN (Lx, Lz, pnew+k, Lx, Lz, pold+k) ;
357 PRINT2 ((
"Lp [n] = "ID"\n", pnew)) ;
367 for (j = 0 ; j < n ; j++)
373 ASSIGN_REAL (dj,0, Lx,p) ;
381 if (L->
minor == (
size_t) n)
389 ljj [0] = sqrt (dj [0]) ;
391 ASSIGN_REAL (Lx,p, ljj,0) ;
392 CLEAR_IMAG (Lx, Lz, p) ;
394 for (p++ ; p < pend ; p++)
397 MULT_REAL (Lx,Lz,p, Lx,Lz,p, ljj,0) ;
410 for (j = 0 ; j < n ; j++)
416 ASSIGN_REAL (ljj, 0, Lx, p) ;
421 lj2 [0] = ljj [0] * ljj [0] ;
422 ASSIGN_REAL (Lx, p, lj2, 0) ;
423 CLEAR_IMAG (Lx, Lz, p) ;
425 for (p++ ; p < pend ; p++)
428 DIV_REAL (Lx,Lz,p, Lx,Lz,p, ljj,0) ;
456 double ljj [1], lj2 [1] ;
458 Int *Ls, *Lpi, *Lpx, *Super, *Lp, *Li, *Lnz ;
459 Int n, lnz, s, nsuper, p, psi, psx, psend, nsrow, nscol, ii, jj, j, k1, k2,
479 for (s = 0 ; s < nsuper ; s++)
486 nsrow = psend - psi ;
489 for (jj = 0 ; jj < nscol ; jj++)
505 for (ii = jj ; ii < nsrow ; ii++)
509 Li [p] = Ls [psi + ii] ;
511 q = psx + ii + jj*nsrow ;
513 PRINT2 ((
" i "ID
" ", Li [p])) ;
518 Lnz [j] = p - Lp [j] ;
528 p = psx + jj + jj*nsrow ;
531 Lnz [j] = nsrow - jj ;
533 for (ii = jj + 1 ; ii < nsrow ; ii++)
536 Li [psx + ii + jj*nsrow] = Ls [psi + ii] ;
553 ASSIGN_REAL (ljj, 0, Lx, psx + jj + jj*nsrow) ;
559 ASSIGN_REAL (Lx, p, ljj, 0) ;
560 CLEAR_IMAG (Lx, Lz, p) ;
565 lj2 [0] = ljj [0] * ljj [0] ;
567 ASSIGN_REAL (Lx, p, lj2, 0) ;
568 CLEAR_IMAG (Lx, Lz, p) ;
572 for (ii = jj + 1 ; ii < nsrow ; ii++)
576 Li [p] = Ls [psi + ii] ;
579 q = psx + ii + jj*nsrow ;
580 DIV_REAL (Lx, Lz, p, Lx, Lz, q, ljj,0) ;
582 PRINT2 ((
" i "ID
" %g\n", Li [p], Lx [p])) ;
585 Lnz [j] = p - Lp [j] ;
595 p = psx + jj + jj*nsrow ;
599 ASSIGN_REAL (ljj,0, Lx,p) ;
605 ASSIGN_REAL (Lx, p, ljj, 0) ;
606 CLEAR_IMAG (Lx, Lz, p) ;
611 lj2 [0] = ljj [0] * ljj [0] ;
613 ASSIGN_REAL (Lx, p, lj2, 0) ;
614 CLEAR_IMAG (Lx, Lz, p) ;
617 Lnz [j] = nsrow - jj ;
619 for (ii = jj + 1 ; ii < nsrow ; ii++)
622 Li [psx + ii + jj*nsrow] = Ls [psi + ii] ;
625 q = psx + ii + jj*nsrow ;
626 DIV_REAL (Lx, Lz, q, Lx, Lz, q, ljj,0) ;
636 PRINT1 ((
"Final Lp "ID" n "ID" lnz "ID"\n", p, n, lnz)) ;
644 sizeof (double), L->
x, &(L->
xsize), Common) ;
650 Lp [n] = Lpx [nsuper] ;
static void TEMPLATE() ll_super_to_simplicial_numeric(cholmod_factor *L, Int to_packed, Int to_ll, cholmod_common *Common)
#define ASSERT(expression)
#define CHOLMOD_NOT_POSDEF
int CHOLMOD() dump_factor(cholmod_factor *L, char *name, cholmod_common *Common)
static void TEMPLATE() change_simplicial_numeric(cholmod_factor *L, Int to_ll, Int to_packed, Int *newLi, double *newLx, double *newLz, Int lnz, Int grow, double grow1, Int grow2, Int make_ll, Int make_monotonic, Int make_ldl, cholmod_common *Common)
static void natural_list(cholmod_factor *L)
#define ERROR(status, msg)
#define ASSIGN(c, s1, s2, p, split)