From: Rainer S. <rai...@gm...> - 2012-08-23 20:08:56
|
On Thu, 23 Aug 2012 at 20:24 +0100, Arthur Norman wrote: > Thank you for both the bug report and for pointing out exactly where > something needed changing. The problem arose because a floating point > number ends up represented internally by something that is a "sort of" > prefix form but the data in it is chain terminating on a number not on > "nil". So freeof!-dfl [as you observed] crashed on it. Umm. This gets around the crashing, but freeof!-df doesn't process correctly special prefix forms in its first parameter. Consider: load_package sum; operator f; lisp freeof!-df(aeval '(df (f u v) u v),'v); % -> t lisp freeof!-df(reval '(df (f u v) u v),'v); % -> nil although both should evaluate to nil. So I propose something like symbolic procedure freeof!-df(u, v); % check u contains differential operator with respect to v; if atom u or car u eq '!:dn!: or get(car u,'dname) then t else if car u eq '!*sq then freeof!-df(prepsq cadr u,v) else if car(u) eq 'df then freeof!-df(cadr u,v) and not smember(v,cddr u) else freeof!-dfl(cdr u,v); Rainer |