bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] Hang in Residue


From: Alexey Veretennikov
Subject: Re: [Bug-apl] Hang in Residue
Date: Mon, 08 Jan 2018 22:42:24 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (darwin)

Hi,

Probably this could be of help:
http://www.softelectro.ru/ieee754_en.html


Elias Mårtenson <address@hidden> writes:

> I can't easily find the document online without having to pay for it, but 
> doesn't the Wikipedia
> page contain all the information you need? 
> https://en.m.wikipedia.org/wiki/IEEE_754
>
> On 9 Jan 2018 12:14 am, "Juergen Sauermann" <address@hidden> wrote:
>
>  Hi Jay,
>
>  I am still puzzled by the ISO description (and can't find the "IEEE standard 
> for Binary
>  Floating-Point Arithmetic (754)"
>  referenced in the standard.
>
>  Would you be able to provide the expected expected output of your example 
> below?
>
>  If I follow the ISO description of mod in the ISO APL standard word by word 
> then I am
>  getting pretty odd values at times.
>
>  Best Regards,
>  /// Jürgen
>
>  On 01/08/2018 02:19 PM, Jay Foad wrote:
>
>  Yes, thanks! Now, when ⎕CT=0 there are some odd results: 
>
>  ⎕CT←0
>  A←(-⌽A),0,A←1e¯200 1e¯100 1 1e100 1e200
>  A∘.|A
>  0E0 ¯1E100 ¯1E0 ¯1E¯100 ¯1E¯200 0 0E0 0E0 ¯1E200 0E0 0E0
>  0E0 0E0 ¯1E0 ¯1E¯100 ¯1E¯200 0 0E0 0E0 ¯1E100 0E0 0E0
>  0E0 0E0 0E0 ¯1E¯100 ¯1E¯200 0 0E0 0E0 0E0 0E0 0E0
>  0E0 0E0 0E0 0E0 ¯1E¯200 0 0E0 0E0 0E0 0E0 0E0
>  0E0 0E0 0E0 0E0 0E0 0 0E0 0E0 0E0 0E0 0E0
>  ¯1E200 ¯1E100 ¯1E0 ¯1E¯100 ¯1E¯200 0 1E¯200 1E¯100 1E0 1E100 1E200
>  0E0 0E0 0E0 0E0 0E0 0 0E0 0E0 0E0 0E0 0E0
>  0E0 0E0 0E0 0E0 0E0 0 1E¯200 0E0 0E0 0E0 0E0
>  0E0 0E0 0E0 0E0 0E0 0 1E¯200 1E¯100 0E0 0E0 0E0
>  0E0 0E0 1E100 0E0 0E0 0 1E¯200 1E¯100 1E0 0E0 0E0
>  0E0 0E0 1E200 0E0 0E0 0 1E¯200 1E¯100 1E0 1E100 0E0
>  1e200|¯1
>  1E200
>
>  The standard explicitly says that the result should never be the same as the
>  (non-zero) left argument: "If Z is A , return zero."
>
>  Jay.
>
>  On 8 January 2018 at 12:26, Juergen Sauermann <address@hidden>
>  wrote:
>
>  Hi Jay,
>
>  maybe SVN 1036 works better.
>
>  /// Jürgen
>
>  On 01/08/2018 01:02 PM, Jay Foad wrote:
>
>  Thanks. With r1035 I get: 
>
>  A←(-⌽A),0,A←1e¯200 1e¯100 1 1e100 1e200
>  A∘.|A
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  ¯1E200 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  ¯1E200 ¯1E100 ¯1 ¯1E¯100 ¯1E¯200 0 1E¯200 1E¯100 1 1E100 1E200
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>
>  One result stands out:
>
>  ¯1E¯200|¯1E200
>  ¯1E200
>
>  The result of A|B (with A non-zero) should be strictly smaller in magnitude
>  than A, so this seems very wrong.
>
>  Jay.
>
>  On 8 January 2018 at 11:49, Juergen Sauermann
>  <address@hidden> wrote:
>
>  Hi Jay,
>
>  thanks, fixed in SVN 1035.
>
>  BTW tryapl.com gives this:
>
>       A←1E¯200 1E200  ¯1E¯200 ¯1E200
>       A ∘.∣ A
> 0 0 0 0
> 0 0 0 0
> 0 0 0 0
> 0 0 0 0
>
> /// Jürgen
>  
>
>  TOn 01/08/2018 10:29 AM, Jay Foad wrote:
>
>  Thanks. At r1034 I get: 
>
>  A←(-⌽A),0,A←1e¯200 1e¯100 1 1e100 1e200
>  A∘.|A
>  DOMAIN ERROR
>
>  And here's one of the cases that fails:
>
>  1e¯200|1e200
>  DOMAIN ERROR
>
>  This still seems wrong to me, since the ISO standard for Residue
>  says "Implementations should avoid signalling limit-error in
>  residue" with advice on how to avoid it. (OK, it doesn't mention
>  DOMAIN ERROR, but I think the same principle applies.)
>
>  Jay.
>
>  On 6 January 2018 at 11:56, Juergen Sauermann
>  <address@hidden> wrote:
>
>  Hi,
>
>  thanks, fixed in SVN 1029.
>
>  /// Jürgen
>
>  On 01/05/2018 04:37 PM, Jay Foad wrote:
>
>  Yes, that expression hangs on my Linux box too. It gets
>  stuck here: 
>
>  FloatCell::bif_residue (this=0x555555ae13a8,
>  Z=0x555555ae24f8, 
>  A=0x555555ae11d8) at FloatCell.cc:643
>  643 while (z < 0.0) z = z + a;
>  (gdb) p z
>  $1 = -inf
>  (gdb) p a
>  $2 = 9.9999999999999998e-201
>
>  Jay.
>
>  On 5 January 2018 at 15:24, Xiao-Yong Jin
>  <address@hidden> wrote:
>
>  1e¯200|1e200 hangs on my mac.
>
>  > On Jan 5, 2018, at 6:57 AM, Juergen
>  Sauermann <address@hidden>
>  wrote:
>  >
>  > Hi Jay,
>  >
>  > hmm, interesting. I am getting this:
>  >
>  > A←(-⌽A),0,A←1e¯200 1e¯100 1 1e100 1e200
>  > A∘.|A
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > ¯1E200 ¯1E100 ¯1 ¯1E¯100 ¯1E¯200 0 1E¯200
>  1E¯100 1 1E100 1E200
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  > 0E0 0E0 0 0E0 0E0 0 0E0 0E0 0 0E0 0E0
>  >
>  > I suppose it is one of the A[i] ∣ A[j] which causes
>  the hanging so it would
>  > be interesting to know which one. Probably one
>  with +/- 1E¯200 or 1E¯100.
>  >
>  > Best Regards,
>  > /// Jürgen
>  >
>  >
>  > On 01/05/2018 12:16 PM, Jay Foad wrote:
>  >> At svn r1028 on Linux I get:
>  >>
>  >> A←(-⌽A),0,A←1e¯200 1e¯100 1 1e100 1e200
>  >> A∘.|A
>  >> (hangs)
>  >>
>  >> Jay.
>  >
>
>

-- 
Br,
/Alexey



reply via email to

[Prev in Thread] Current Thread [Next in Thread]