Ok, let's walk through this.

First, let's extract the J's binary representation of pi:
   ' '-.~":(64#2)#:256x#.|.a.i.2(3!:5) o.1
0100000000001001001000011111101101010100010001000010110100011000

To interpret this, let's refer to the wikipedia page on this numeric format:
https://en.wikipedia.org/wiki/Double-precision_floating-point_format

   (];.1~0 1 12 e.~i.@#)' '-.~":#:256x#.|.a.i.2(3!:5) o.1
   (];.1~0 1 12 e.~i.@#)' '-.~":(64#2)#:256x#.|.a.i.2(3!:5) o.1
0
10000000000
1001001000011111101101010100010001000010110100011000

The sign flag is zero, which means it's a positive number. Negative
numbers have a sign flag of 1.

The binary exponent is
   2b10000000000-1023
1

Or, we've got a binary fraction which we'll be multiplying by 2.

The binary fraction is
   2b1.1001001000011111101101010100010001000010110100011000
1.5708

Or, the actual value is:
   2*2b1.1001001000011111101101010100010001000010110100011000
3.14159

Our problem is that this is not the actual value of pi, it's just an
approximation.

If we want to work with a better approximation, we might do something like this:
pistring=:{{)n
3.14159265358979323846264338327950288419716939937510582097494459
2307816406286208998628034825342117067982148086513282306647093844
6095505822317253594081284811174502841027019385211055596446229489
5493038196442881097566593344612847564823378678316527120190914564
8566923460348610454326648213393607260249141273724587006606315588
1748815209209628292540917153643678925903600113305305488204665213
8414695194151160943305727036575959195309218611738193261179310511
8548074462379962749567351885752724891227938183011949129833673362
}}-.LF

pirat=: (".(pistring,'x')-.'.')%_10x^_2+#pistring

   60{.' '-.~":#:(2^64x)*pirat
110010010000111111011010101000100010000101101000110000100011

There's a trailing 0100011 on that binary fraction which would make
our representation just a bit more accurate (but which would also make
J slower, because we would no longer be taking advantage of the
specialized hardware supporting the number format).

This would crop up if we're subtracting something from pi (or adding a
negative number), in a fashion which lops off leading digits from the
representation.

Short form: if we're going to be using + or - on values which are
non-zero multiples of pi, this might matter.

I hope this made sense.

-- 
Raul

On Sun, Feb 21, 2021 at 2:14 AM 'Bo Jacoby' via Programming
<[email protected]> wrote:
>
>  Thank you all for the comments!
> Raul wrote: "A cost, though, of that kind of approach, is that it would lure 
> us into a false sense of security, leaving us even more upset in other 
> circumstances."
> Which circumstances are you thinking of?
> The rounding to zero is beneficial in all the cases mentioned in the 
> comments, and I fail to construct examples where it is not.
>
>     (^ j. 1p1) NB. confusing
>
> _1j1.22465e_16
>    f0(^ j. 1p1) NB. clear
> _1
>
>
>
>    f0 9e99j1e6
>
> 9e99
>
>
> Thanks.
> Bo.
>
>     Den søndag den 21. februar 2021 07.32.51 CET skrev Joey K Tuttle 
> <[email protected]>:
>
>    Ahh for the good ole days  ;-)
>
>   JVERSION
> Binary: j601binc_linux32
> Library: j601libc
> Help: j601hlpc
> Engine: j601/2006-11-17/17:05
>   ^ o.0j1
> _1
>   ^j.1p1
> _1
>
>   But time marches on and things change ...
>
>   JVERSION
> Installer: j602a_linux32.sh
> Engine: j602/2008-03-03/16:45
> Library: 6.02.023
>   ^ o. 0j1
> _1j1.22461e_16
>   (^j.1p1)
> _1j1.22461e_16
>
>
>   JVERSION
> Engine: j903/j64avx2/darwin
> Beta-e: commercial/2021-02-16T18:34:19
> Library: 9.03.01
> Platform: Darwin 64
> Installer: J903 install
> InstallPath: /applications/j903
> Contact: www.jsoftware.com
>   ^j.1p1
> _1j1.224646799e_16
> NB. but even today the formatted result is satisfying.
>   33j30 ": ^ o. 0j1
> _1.000000000000000000000000000000
>
>
> > On 2021Feb 20, at 11:12, Henry Rich <[email protected]> wrote:
> >
> > No, the code is still there, but it doesn't do much - gives a little bit 
> > better precision on large arguments IIRC.
> >
> > Henry Rich
> >
> > On 2/20/2021 2:10 PM, Roger Hui wrote:
> >> https://www.jsoftware.com/papers/APLQA.htm#worldmathsday
> >>
> >>    * ○ 0j1 × 2e9 + a ÷ 2
> >> 1 0J1 ¯1 0J¯1
> >> 1 0J1 ¯1 0J¯1
> >> 1 0J1 ¯1 0J¯1
> >>
> >> (Basically, ^ o. 0j1 * 2e9 + a % 2 where a=: 3 4$i.12)
> >>
> >> I thought I did the same in J, predating what's done in Dyalog APL.
> >> According to https://www.jsoftware.com/help/dictionary/special.htm, there
> >> is supposed to be special code for ^@o., but apparently it got lost
> >> somewhere, sometime.
> >>
> >>
> >>
> >>
> >> On Sat, Feb 20, 2021 at 9:45 AM Raul Miller <[email protected]> wrote:
> >>
> >>> On Sat, Feb 20, 2021 at 12:46 AM María Magdalena Mixuhca
> >>> <[email protected]> wrote:
> >>>> I find this lack of beauty surprisingly disturbing:
> >>>>
> >>>>      (^ j. 1p1)
> >>>> _1j1.22465e_16
> >>> Ok... so...
> >>>
> >>> I think what we want here is a handling of
> >>> exponentials/transcendentals so that necessarily minimal deviations
> >>> from pi are smoothly handled so that we get zeros when we expect them.
> >>>
> >>> A cost, though, of that kind of approach, is that it would lure us
> >>> into a false sense of security, leaving us even more upset in other
> >>> circumstances.
> >>>
> >>> Still... it's an interesting challenge.
> >>>
> >>> Thanks,
> >>>
> >>> --
> >>> Raul
> >>> ----------------------------------------------------------------------
> >>> For information about J forums see http://www.jsoftware.com/forums.htm
> >>>
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >
> >
> > --
> > This email has been checked for viruses by AVG.
> > https://www.avg.com
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> 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