Robert Dodier - 2015-05-06

Something that happens at program launch (not sure of the exact mechanism) is that something equivalent to assume(equal(foo, float(foo))) is executed for various constants foo, among them %pi. I agree that these assertions are suspicious, although I wonder what would break if they were omitted.

sign(%pi/2-float(%pi/2)) takes a different path than is(equal(%pi/2, float(%pi/2))), in particular, the latter calls DCOMPARE, DCOMP, and DINTERNP, and the former doesn't. It makes sense to me to unify sign and is(equal(...)), although again I wonder if anything would break.