164 quick = (maxwork > 0) ;
190 for (p = Cheap [j] ; p < pend && !found ; p++)
193 found = (Match [i] ==
EMPTY) ;
207 Pstack [head] = Ap [j] ;
214 if (quick && *work > maxwork)
231 pstart = Pstack [head] ;
232 for (p = pstart ; p < pend ; p++)
242 Pstack [head] = p + 1 ;
248 Jstack [++head] = j2 ;
257 *work += (p - pstart + 1) ;
275 for (p = head ; p >= 0 ; p--)
316 Int *Cheap, *Flag, *Istack, *Jstack, *Pstack ;
317 Int i, j, k, nmatch, work_limit_reached, result ;
323 Cheap = Work ; Work += ncol ;
324 Flag = Work ; Work += ncol ;
327 Istack = Work ; Work += ncol ;
328 Jstack = Work ; Work += ncol ;
332 for (j = 0 ; j < ncol ; j++)
339 for (i = 0 ; i < nrow ; i++)
346 maxwork *= Ap [ncol] ;
355 work_limit_reached =
FALSE ;
356 for (k = 0 ; k < ncol ; k++)
359 result =
amesos_augment (k, Ap, Ai, Match, Cheap, Flag, Istack, Jstack, Pstack,
366 else if (result ==
EMPTY)
369 work_limit_reached =
TRUE ;
380 if (work_limit_reached)
static Int amesos_augment(Int k, Int Ap[], Int Ai[], Int Match[], Int Cheap[], Int Flag[], Int Istack[], Int Jstack[], Int Pstack[], double *work, double maxwork)
#define ASSERT(expression)