Another example from Fred:
¯1J11 | ¯12J10 ⍝ should be zero
¯11J¯1
This seems to be a consequence of the ISO standard's curious definition of
tolerant-floor. I would naively expect the tolerant floor of
A←0.99999999999999989J0.99999999999999989 to be 1J1, but according to the
standard (and hence GNU APL) it is 1. So A is not considered a near-integer
because it fails the (⌊-A)=-⌊A test.
I would humbly suggest ignoring the standard in this case and implementing
a more common sense definition of tolerant-floor. Note that in IBM APL2
(the demo version for Windows) I get:
⌊0.99999999999999989J0.99999999999999989
1J1
... so they don't seem to follow the ISO standard either.
Jay.
On 14 June 2017 at 18:05, Frederick Pitts <[email protected]> wrote:
> Jürgen, Jay
>
>
> With svn 958, I'm see the following
> a ← ¯1J11
> b ← ¯12J10
> a | b
> ¯11J¯1
> b ÷ a
> 1J1
> 1J1 × a
> ¯12J10
> a ← 1J¯11
> b ← 12J¯10
> a ∣ b
> 11J1
> b ÷ a
> 1J1
> 1J1 × a
> 12J¯10
>
> So the error changed but persists on my platform.
>
> Regards,
>
> Fred
>
> On Wed, 2017-06-14 at 17:20 +0200, Juergen Sauermann wrote:
>
> Hi Jay, Fred,
>
> thanks a lot, Jay, for figuring this out.
>
> Fred, I made the change proposed by Jay. Please let me know if the
> problem persists. *SVN 958*.
>
> /// Jürgen
>
>
> On 06/14/2017 03:13 PM, Jay Foad wrote:
>
> It got broken in r939. The problem is in Cell.icc:
>
> //----------------------------------------------------------
> -------------------
> inline bool
> Cell::integral_within(APL_Complex A, APL_Float B)
> {
> const APL_Complex C = -A;
> return tolerant_floor(C, B) == tolerant_floor(A, B);
> }
> //----------------------------------------------------------
> -------------------
>
> You're missing a minus sign before the second "tolerant_floor".
>
> Jay.
>
> On 14 June 2017 at 13:04, Juergen Sauermann <[email protected]
> > wrote:
>
> Hi Fred,
>
> not sure what to do about that. On my machine I am getting:
>
> * 1J3 ∣ 8J4*
> *0*
>
> and your *TGI0.apl * program seems not to output anything.
>
> Best Regqrds,
> Jürgen Sauermann
>
>
>
> On 06/14/2017 05:52 AM, Frederick Pitts wrote:
>
> Juergen,
>
> I'm seeing errors with the mod (∣) operator applied to Gaussian
> integers again. With svn 896, the mod operator yields a nonzero
> residual result while the division operator yields an exact Gaussian
> integer quotient result as follows
>
> 1J3 ∣ 8J4
> 1J3
> 8J4 ÷ 1J3
> 2J¯2
> 1J3 × 2J¯2
> 8J4
>
> I'm running Fedora 25, 64 bit, on an Intel Core i7-6700 4 core
> CPU with 16 Gbyte memory.
>
> The attached TGI0.apl generates many more failure examples if
> needed.
>
> Regards,
>
> Fred
>
>
>
>
>
>