Sheldon, I don't see any recursive function call here or other stuff
that would be pushing stuff onto a stack, so I don't know where the
bind stack overflow error is coming from. It could well be some
internal error in Maxima. If you want to post an example of a
call to newton2d which triggers the bind stack overflow error,
I would be interested to see it.
Robert
PS. Here is the code from before.
> >/***************************/
> >newton2d(expr,var,x0,eps):=
> > block([u,v,s,numer],
> > numer:true,
> > s:matrix([diff(expr[1],var[1]),diff(expr[1],var[2])],
> > [diff(expr[2],var[1]),diff(expr[2],var[2])]),
> >
> > u: matrix(x0),
> >
> > loop, if ( subst(u[1][2],var[2],subst(u[1][1],var[1],expr[1]) )^2
> > + subst(u[1][2],var[2],subst(u[1][1],var[1],expr[2]))^2 < eps)
> > then return([u[1][1],u[1][2]]),
> > v: subst(u[1][2],var[2],subst(u[1][1],var[1],expr)),
> >
> > u: u - v
> > .
> > subst(u[1][2],var[2],subst(u[1][1],var[1],invert(transpose(s)))),
> > go(loop) )$
> >/*****************************/