diff -N -r -c HLib-1.3/Library/krylov.c HLib-1.3new/Library/krylov.c *** HLib-1.3/Library/krylov.c 2005-09-12 13:53:08.000000000 +0200 --- HLib-1.3new/Library/krylov.c 2005-11-28 15:23:32.507426048 +0100 *************** *** 531,536 **** --- 531,537 ---- pconjgrad cg; krylovdata kd; int n = s->rows; + int steps; kd.Asuper = s; kd.Asparse = NULL; *************** *** 569,575 **** break; } ! return solve_conjgrad(cg, n, rhs, u, eps, maxsteps); } int --- 570,580 ---- break; } ! steps = solve_conjgrad(cg, n, rhs, u, eps, maxsteps); ! ! del_conjgrad(cg); ! ! return steps; } int *************** *** 582,587 **** --- 587,593 ---- pconjgrad cg; krylovdata kd; int n = s->rows; + int steps; kd.Asuper = NULL; kd.Asparse = s; *************** *** 620,626 **** break; } ! return solve_conjgrad(cg, n, rhs, u, eps, maxsteps); } int --- 626,636 ---- break; } ! steps = solve_conjgrad(cg, n, rhs, u, eps, maxsteps); ! ! del_conjgrad(cg); ! ! return steps; } int *************** *** 633,638 **** --- 643,649 ---- pgmres gm; krylovdata kd; int n = s->rows; + int steps; kd.Asuper = s; kd.Asparse = NULL; *************** *** 665,671 **** gm->disp = (verbosity == 0 ? NULL : (verbosity == 1 ? disp_last : disp_simple)); ! return solve_gmres(gm, n, rhs, u, eps, maxsteps, HLIB_STOP_RELATIVE); } int --- 676,686 ---- gm->disp = (verbosity == 0 ? NULL : (verbosity == 1 ? disp_last : disp_simple)); ! steps = solve_gmres(gm, n, rhs, u, eps, maxsteps, HLIB_STOP_RELATIVE); ! ! del_gmres(gm); ! ! return steps; } int *************** *** 678,683 **** --- 693,699 ---- pgmres gm; krylovdata kd; int n = s->rows; + int steps; kd.Asuper = NULL; kd.Asparse = s; *************** *** 710,714 **** gm->disp = (verbosity == 0 ? NULL : (verbosity == 1 ? disp_last : disp_simple)); ! return solve_gmres(gm, n, rhs, u, eps, maxsteps, HLIB_STOP_RELATIVE); } --- 726,734 ---- gm->disp = (verbosity == 0 ? NULL : (verbosity == 1 ? disp_last : disp_simple)); ! steps = solve_gmres(gm, n, rhs, u, eps, maxsteps, HLIB_STOP_RELATIVE); ! ! del_gmres(gm); ! ! return steps; }