"trigrat" caught in infinite loop - depending on how you call it



On 2012-11-07, David Scherfgen <d.scherfgen at googlemail.com> wrote:

> I found out that if you call "reset()" inbetween, it gives the short 
> answer both times:
>
> f: 1/(y+sqrt(y));
> [trigrat(f), reset(), trigrat(f)];

That's a very interesting observation. Having to call reset indicates
that there is a bug (namely there is some state data that needs to be
cleaned up). reset returns the list of variables which it resets. I get
the following output:

  f: 1/(y+sqrt(y));
  [a : trigrat(f), foo : reset(), b : trigrat(f)];
  is (a = b);
    => true
  grind (foo);
    => [?odds,lispdisp,?tr\-unique,?varlist,?genvar,linenum,%,labels,__,
        _,piece,features]

Probably the first things to look at are the Lisp variables (marked with
leading question mark).

best

Robert Dodier