Must be due to x ^ y returning floating datatypes, and losing precision. depth=:0 S=: 1 :0 : y=.<.y NB. <--------------------- floor of y if. 0= y do. 0 else. 'q r'=. (0,m) #: y ( r *(1+m) ^ (0 (m S) x)) + (1+x) m S q NB. <------------------ ^ returns floating end. )
That will also fix it. This bug (is it a bug?) is in j805: JVERSION Engine: j805/j64/darwin Release: commercial/2016-12-11T08:17:56 Library: 8.05.14 Qt IDE: 1.5.4s/5.6.2 Platform: Darwin 64 Installer: J805 install -------------------------------------------- On Thu, 4/12/18, Arie Groeneveld <agroeneveld...@gmail.com> wrote: Subject: Re: [Jprogramming] Goodstein Sequences and Hereditary base-n notation... CRASH! To: programm...@jsoftware.com Date: Thursday, April 12, 2018, 6:38 AM I noticed it has to do with the 0=y testing in S. Instead of producing a zero at a certain point it gives a small value 4.4....e_16 and then starts filling the stack. Op 11-04-18 om 22:05 schreef Jose Mario Quintana: > You might like to look also at Arie Groeneveld's message, > > [Jprogramming] Crash calculating large hyper operations > http://www.jsoftware.com/pipermail/programming/2015-November/043351.html > > Unfortunately, running on the latest stable release, > > JVERSION > Engine: j806/j64nonavx/windows > Release: commercial/2017-11-06T10:01:33 > Library: 8.06.09 > Qt IDE: 1.6.2/5.6.3 > Platform: Win 64 > Installer: J806 install > InstallPath: j:/program files/j > Contact: www.jsoftware.com > > the following, > > S=: 1 :0 > : > if. 0= y do. 0 > else. 'q r'=. (0,m) #: y > ( r *(1+m) ^ (0 (m S) x)) + (1+x) m S q > end. > ) > > G=: (>:@[ $: _1+ 4 : '0 (x S)y')`[@.(0=]) > > 2 G"0 i.4 > > now produces a crash ("J has stopped working") instead of, > > 2 3 5 7 > > As far as I can see, the code should run on J804 but I do not know if it > runs on J805 (or on the latest and greatest j807). > > Anyway, in theory, 2 G"0 i.5 should include the additional number, > > _1 + 3 * 2 ^ 402653211x > > in practice, of course, it cannot (even trying to execute the sentence _1 + > 3 * 2 ^ 402653211x produces a limit error). > > > > On Wed, Apr 11, 2018 at 9:15 AM, 'Jon Hough' via Programming < > programm...@jsoftware.com> wrote: > >> My first answer was actually comletely wrong, and only works for the >> simplest cases. This is a more robust and correct solution >> >> goodstein=: 4 : 0"0 0 >> if. y = x do. >> x+1 return. >> elseif. y = 0 do. >> 0 return. >> end. >> s=. I. x (|.@:((>:@:>.@:^. # [) #: ])) y >> d=. (x+1) ^ (x:x) goodstein x: s >> +/d >> ) >> >> G=: <:@:goodstein >> >> NB. generates sequence >> genSeq=: 3 : 0"1 >> 'base val its'=. y >> c=. 0 >> vals=. val >> whilst. its > c=. c+1 do. >> val=. base G val >> vals=. vals,val >> base=. base+1 >> end. >> vals >> ) >> >> genSeq 2 4 10 >> 4 26 41 60 83 109 139 173 211 253 299 >> >> genSeq 2 19 3 >> 19 7625597484990 134078079299425970995740249982 >> 058461274793658205923933777235614437217640300735469768018742 >> 98166903427690031858186486050853753882811946569946433649006084099 >> 191101259794547752035640455970396459919808104899009433713951 >> 27892465205302426158030... >> >> >> -------------------------------------------- >> On Wed, 4/11/18, 'Jon Hough' via Programming <programm...@jsoftware.com> >> wrote: >> >> Subject: [Jprogramming] Goodstein Sequences and Hereditary base-n notation >> To: "Programming Forum" <programm...@jsoftware.com> >> Date: Wednesday, April 11, 2018, 5:14 PM >> >> Goodstein's theorem: https://en.wikipedia.org/wiki/Goodstein%27s_theorem >> This states that every Goodstein >> sequence eventually terminates at 0. >> The wikipedia page defines Goodstein >> sequences in terms of Hereditary base-n notation >> one such sequence is 4,26,41,60... >> >> Copying verbatim from wikipedia: >> ============== >> The Goodstein sequence G(m) of a number >> m is a sequence of natural numbers. The first element in the >> sequence G(m) is m itself. To get the second, G(m)(2), write >> m in hereditary base-2 notation, change all the 2s to 3s, >> and then subtract 1 from the result. In general, the >> (n + 1)-st term G(m)(n + 1) of the Goodstein >> sequence of m is as follows: >> >> Take the hereditary base-n + 1 >> representation of G(m)(n). >> Replace each occurrence of the >> base-n + 1 with n + 2. >> Subtract one. (Note that the next term >> depends both on the previous term and on the index n.) >> Continue until the result is zero, at >> which point the sequence terminates. >> =============== >> >> The sequences take an impossibly long >> time to terminate for most inputs, so there is no use >> writing a verb that iterates until convergance. This is my >> verb that will calculate the first N elements of the >> sequence, >> starting with a given base and val. the >> base should start at 2, to conform to the above definition. >> >> >> goodstein=: 3 : 0 >> 'base val its'=. y >> vals=. '' >> c=: 0 >> whilst.its> c=: c+1 do. >> if. val = 0 do. vals return. >> else. >> t=: ((1+ >> >.base^.val)#base) #: val >> if. base < # t do. >> if. 0 < base { >> |.t do. >> tr=: 0 >> (base}) |.t >> if. >> (base+1) < # tr do. >> ts=: >> (1+(base+1){tr) ((x+1)}) tr >> ts=: >> |.ts >> else. >> ts=: >> tr,1 >> ts=: >> |.ts >> end. >> else. ts=: t end. >> else. >> ts=: t >> end. >> val=. <:(base+1) #. >> ts >> vals=. vals,val >> base=. base+1 >> end. >> end. >> vals >> ) >> >> >> >> NB. example >> goodstein 2 4 9 >> 26 41 60 83 109 139 173 211 253 >> NB. continues to very large numbers. >> >> goodstein 2 3 5 >> 3 3 2 1 0 NB. terminates after 6 >> iterations >> >> Is was hoping the goodstein verb could >> be defined tacitly, but my verb is clearly a bit of a mess. >> Just for fun, any elegant solutions? >> >> Thanks, >> Jon >> ---------------------------------------------------------------------- >> 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm