My intention was simply to point out that 3!:3 can distinguish 0 from -0.  I
have no query with the different varieties of scalar zeroes; actually, I
find them at least entertaining.  For example,

(3!:3)&.> (0 ; (-0) ; (0 % 1) ; (0 % _1) ; 0x ; 0 * 1j1)

Can you find the full list?
 



> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> On Behalf Of Roger Hui
> Sent: Monday, April 23, 2007 11:32 AM
> To: General forum
> Subject: Re: RE: [Jgeneral] zero
> 
> > So, if ever Roger "fixes"  %  (such that  0 -:&:(3!:3) 0%_1  ) and
> > any other primitives which can name the beast, J will still have a
> > negative zero (because the IEEE floating point standard calls for it).
> 
> This is false.  If I put in code to eradicate
> "minus zero" in all the places (including in
> 3!:x) that can generate "minus zero", and it is
> possible to put in such code, then there would be
> no minus zero in J.  But then what would we have
> bought in return for the exorbitant cost?
> 
> 
> 
> ----- Original Message -----
> From: Dan Bron <[EMAIL PROTECTED]>
> Date: Monday, April 23, 2007 8:08 am
> Subject: RE: [Jgeneral] zero
> 
> > Jose wrote:
> >
> > >   0 ((-: ; ;)& (3!:3)) _0
> >
> > This is not surprising;  except for rationals and extended ints, J
> > ignores any symbols in constants which do not effect the value.
> > So  0.0  is boolean, as is  0j0  as  is  0x0.0j_0e_1  , etc (A).
> >
> > >   0 ((-: ; ;)& (3!:3)) -0
> >
> > The result of  -0  isn't negative, it's merely integer.  One way
> > to tell if you've generated a true negative zero is to look at its
> > reciprocal.  The reciprocal of regular  0  is positive infinity,
> > the reciprocal of negative zero is negative infinity.  Thus:
> >
> >           %0
> >     _
> >           %_0
> >     _
> >           %-0
> >     _
> >           %  0%_1
> >     __
> >
> > Note that negative zeros must be floating or complex.  No other
> > numeric type can represent a negative zero.
> >
> > >Then again, the function 3!:3 can distinguish between 0 and -0,
> >
> > Right.  A nice insight here is that  3!:3  can be used to
> > __generate__ a negative zero.  Henry Rich once posed a challenge
> > to find ways to generate negative zero (B).  Here was one of my
> > submissions (C):
> >
> >
> >           i_1  =.  }:0 1 _1   2.5
> >           bin  =.  #: @: (a.&i.) @: (3!:1"1) @: (,. :. {.)
> >           ] Z =. ~:/ &.: bin i_1
> >     0
> >           %Z
> >     __
> >
> > Basically it finds the difference in the binary representations of
> > 1  and  _1  and applies that patch to  0  (all numbers are
> > floating point).
> >
> > So, if ever Roger "fixes"  %  (such that  0 -:&:(3!:3) 0%_1  ) and
> > any other primitives which can name the beast, J will still have a
> > negative zero (because the IEEE floating point standard calls for it).
> >
> > -Dan
> >
> >   (A)  http://www.jsoftware.com/jwiki/Guides/Constants#simplest
> >         (2nd bullet in notes)
> >        http://www.jsoftware.com/pipermail/general/2004-
> > July/017905.html    (3rd long paragraph, begins with "J constants
> > are created")
> >
> >   (B)  http://www.jsoftware.com/pipermail/programming/2005-
> > December/000540.html
> >   (C)  http://www.jsoftware.com/pipermail/programming/2005-
> > December/000545.html
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to