41 #define EXPAND_AS_NEEDED \
45 CHOLMOD(reallocate_sparse) (nzmax, X, Common) ; \
46 if (Common->status < CHOLMOD_OK) \
48 CHOLMOD(free_sparse) (&X, Common) ; \
49 CHOLMOD(free_dense) (&X4, Common) ; \
50 CHOLMOD(free_dense) (&B4, Common) ; \
76 double *Bx, *Bz, *Xx, *Xz, *B4x, *B4z, *X4x, *X4z ;
77 Int *Bi, *Bp, *Xp, *Xi, *Bnz ;
78 Int n, nrhs, q, p, i, j, j1, j2, packed, block, pend, jn, xtype ;
115 block =
MIN (nrhs, 4) ;
150 for (j1 = 0 ; j1 < nrhs ; j1 += block)
157 j2 =
MIN (nrhs, j1 + block) ;
164 for (j = j1 ; j < j2 ; j++)
167 pend = (packed) ? (Bp [j+1]) : (p + Bnz [j]) ;
174 for ( ; p < pend ; p++)
176 B4x [Bi [p] + jn] = Bx [p] ;
180 case CHOLMOD_COMPLEX:
181 for ( ; p < pend ; p++)
184 B4x [2*q ] = Bx [2*p ] ;
185 B4x [2*q+1] = Bx [2*p+1] ;
190 for ( ; p < pend ; p++)
220 for (j = j1 ; j < j2 ; j++)
224 if ( xnz + n <= nzmax)
235 for (i = 0 ; i < n ; i++)
247 case CHOLMOD_COMPLEX:
248 for (i = 0 ; i < n ; i++)
250 x = X4x [2*(i + jn) ] ;
251 z = X4x [2*(i + jn)+1] ;
263 for (i = 0 ; i < n ; i++)
290 for (i = 0 ; i < n ; i++)
303 case CHOLMOD_COMPLEX:
304 for (i = 0 ; i < n ; i++)
306 x = X4x [2*(i + jn) ] ;
307 z = X4x [2*(i + jn)+1] ;
320 for (i = 0 ; i < n ; i++)
347 for (j = j1 ; j < j2 ; j++)
350 pend = (packed) ? (Bp [j+1]) : (p + Bnz [j]) ;
357 for ( ; p < pend ; p++)
359 B4x [Bi [p] + jn] = 0 ;
363 case CHOLMOD_COMPLEX:
364 for ( ; p < pend ; p++)
373 for ( ; p < pend ; p++)
391 ASSERT (xnz <= X->nzmax) ;
cholmod_sparse * CHOLMOD(spsolve)
int CHOLMOD() reallocate_sparse(size_t nznew, cholmod_sparse *A, cholmod_common *Common)
#define RETURN_IF_NULL_COMMON(result)
int CHOLMOD() free_sparse(cholmod_sparse **AHandle, cholmod_common *Common)
cholmod_dense *CHOLMOD() zeros(size_t nrow, size_t ncol, int xtype, cholmod_common *Common)
#define ASSERT(expression)
cholmod_sparse *CHOLMOD() spzeros(size_t nrow, size_t ncol, size_t nzmax, int xtype, cholmod_common *Common)
int CHOLMOD() free_dense(cholmod_dense **XHandle, cholmod_common *Common)
cholmod_dense *CHOLMOD() solve(int sys, cholmod_factor *L, cholmod_dense *B, cholmod_common *Common)
#define RETURN_IF_NULL(A, result)
#define ERROR(status, msg)
#define RETURN_IF_XTYPE_INVALID(A, xtype1, xtype2, result)