I get:

      ¯1J11 | ¯12J10
computing (-12,10) modulo (-1,11)
⎕CT is: 1e-13
the quotient B ÷ A is: (0.9999999999999999,0.9999999999999999)
the quotient rounded down is: (1,0)
¯11J¯1

On 15 June 2017 at 13:47, Juergen Sauermann <juergen.sauerm...@t-online.de>
wrote:

> Hi,
>
> I have changed the implementation of *ComplexCell::bif_residue()* to use
> a more
> intuitive implementation of *integral_within()*. (the old one used
> *tolerant_floor()* with
> the dubious half-plane definition from the ISO standard).
>
> The new version is *SVN 961*.
>
> If it still does not work then attached is a more verbose variant of the
> *bif_residue()*
> implementation that prints the intermediate results of the computation (so
> that we can
> nail down where things go wrong).
>
> On my machine I get, for example,  this:
>
> *      a ← ¯1J11*
> *      b ← ¯12J10*
> *      a | b*
> *computing (-12,10) modulo (-1,11)*
> *⎕CT is: 1e-13*
> *the quotient B ÷ A is: (1,1)*
> *result is 0 because the quotient is integral within ⎕CT*
> *0*
>
> Just replace your *ComplexCell.cc* with the attached one.
>
> Thanks,
> Jürgen
>
>
> On 06/15/2017 10:38 AM, Jay Foad wrote:
>
> 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 <fred.pi...@comcast.net> 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 <
>> juergen.sauerm...@t-online.de> 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
>>
>>
>>
>>
>>
>>
>
>

Reply via email to