Hi Jürgen,

> Z← R For real numbers, yields the largest integer that does not exceed R
(within the comparison tolerance).

> That is essentially what ISO says and what GNU APL has implemented. The
observed behavior
> of the IBM APL2 implementation seems to be (within R times the comparison
tolerance),
> which is probably unintentional.

On page 58 of the APL2 Language Reference, it defines what "within
comparison tolerance" means and for two positive numbers, the fuzz factor
is ⎕CT times the larger of the magnitudes.  It then lists floor and ceiling
as two of the many functions to which this applies.

I cannot think of a single APL that doesn't relativize ⎕CT for floor and
ceiling, with the exception of this one.

It's not a problem that relative tolerance can include more than one
integer in the interval as the magnitude increases, as you are only
checking if you are tolerantly equal to the nearest integer, which always
does the right thing.

"within comparison tolerance" should be read as "according to the
previously discussed comparison tolerance algorithm" and not taken as a
mathematical statement about adding or subtracting ⎕CT,  or contrasted with
"within R times comparison tolerance."

Just as if they had said "modulo comparison tolerance," it would not imply
anything having to do with residue.

If tolerant ⌊ and ⌈ are only going to do something special on 2049 distinct
integers, why not just do it without ⎕CT on everything, and call it a
"feature."

Regards,

Mike

Reply via email to