167 quick = (maxwork > 0) ;
193 for (p = Cheap [j] ; p < pend && !found ; p++)
196 found = (Match [i] ==
EMPTY) ;
210 Pstack [head] = Ap [j] ;
217 if (quick && *work > maxwork)
234 pstart = Pstack [head] ;
235 for (p = pstart ; p < pend ; p++)
245 Pstack [head] = p + 1 ;
251 Jstack [++head] = j2 ;
260 *work += (p - pstart + 1) ;
278 for (p = head ; p >= 0 ; p--)
319 Int *Cheap, *Flag, *Istack, *Jstack, *Pstack ;
320 Int i, j, k, nmatch, work_limit_reached, result ;
326 Cheap = Work ; Work += ncol ;
327 Flag = Work ; Work += ncol ;
330 Istack = Work ; Work += ncol ;
331 Jstack = Work ; Work += ncol ;
335 for (j = 0 ; j < ncol ; j++)
342 for (i = 0 ; i < nrow ; i++)
349 maxwork *= Ap [ncol] ;
358 work_limit_reached =
FALSE ;
359 for (k = 0 ; k < ncol ; k++)
362 result =
amesos_augment (k, Ap, Ai, Match, Cheap, Flag, Istack, Jstack, Pstack,
369 else if (result ==
EMPTY)
372 work_limit_reached =
TRUE ;
383 if (work_limit_reached)
#define ASSERT(expression)
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)