Maybe zerob & zeroa shouldn't be used this way, but giving an error for the following isn't ideal
(%i16) limit(atan2(y,zeroa),y,1);
expt: undefined: 0 to a negative exponent.
Possibly limit(atan2(y,x),x,0,plus) should be atan2(y,zeroa). That could be useful in the iterated limit limit(limit(atan2(y,x),x,0,plus),y,1).
Certainly the bug should be fixed.
I understand the temptation to use
atan2(...,zeroa), but this is problematic:It is not mathematically correct. Once you've taken the limit, the result doesn't "know" where it came from: mathematically,
signum(limit(x,x,0,plus))is 0, not 1, as opposed tolimit(signum(x),x,0,plus).If we start using
zeroahere, it suggests to the user that we support infinitesimals as part of symbolic expressions, which we do not.On the other hand, Maxima currently has no way of expressing multivariate limits, e.g.,
limit(atan2(x,y),[y,x],[1,zeroa]). That might be worth thinking about.Last edit: Stavros Macrakis 2021-11-29
So maybe a nounform for
limit(atan2(y,zeroa),y,1)would be best.