You can display thousands of extended and rational numbers. Use format (":), then reshape the output onto multiple lines. Output defaults to 256 characters per line. Spread the output onto multiple lines. Easier to read that way anyway.
On Feb 26, 2018 1:20 PM, "Eric Iverson" <eric.b.iver...@gmail.com> wrote: > I worked on an APL implementation in 1972 that had exactly what you are > proposing. We called them arithmetic progression vectors. The > implementation was very successful. But at the end of the day, I decided > that the code and complexity required was not justified. It made for many > very impressive trivial benchmarks. But made no difference for a real > application. As always, it matters where you put your effort. > > On Mon, Feb 26, 2018 at 3:15 PM, james faure <james.fa...@epitech.eu> > wrote: > > > Apparently this discussion should be in the beta forums: > > http://jsoftware.com/pipermail/beta/2018-February/009056.html< > > http://jsoftware.com/pipermail/beta/2018-February/009056.html> > > > > ________________________________ > > From: Source <source-boun...@forums.jsoftware.com> on behalf of Vijay > > Lulla <vijaylu...@gmail.com> > > Sent: Monday, February 26, 2018 8:28:57 PM > > To: sou...@jsoftware.com > > Subject: Re: [Jsource] Propositions > > > > Raul, > > Your points are very valid and I agree with them. I like J the way it is > > and will continue using it however it evolves. J does extended precision > > and Sparse arrays better, and more coherently, than any other language. > > And the way it deals with edge cases is just beyond compare! I am sorry > > that my post came across as criticizing J. > > Cordially, > > Vijay. > > > > > > On Mon, Feb 26, 2018 at 2:14 PM, Raul Miller <rauldmil...@gmail.com> > > wrote: > > > > > *Why* is this good, though? > > > > > > If "language x implements it" is all that is needed for something to > > > be good, then no language can be good, because there are just too many > > > gimmicks in too many languages. > > > > > > Restated: if we introduce a new primitive type (this range thing) then > > > the interpreter would have to be built with support for this type in > > > all primitives that currently take numeric arguments. > > > > > > That's quite a lot of work (to get an idea of the magnitude of this > > > effort, note that support for sparse arrays has been stalled "in > > > progress" for over a decade). So what is the benefit? You wind up > > > implementing a behind-the-scenes algebra (similar to tacit verbs, in > > > the general case, though supporting only a scalar addition and an > > > index vector is an obvious subset of that) which gets executed "as > > > necessary", > > > > > > The biggest benefit I can see is better cpu cache management for a few > > > calculations involving large arrays. But it seems to me that: > > > > > > [a] The obvious cases where this is a significant benefit tend to be > > > trivial, and > > > > > > [b] The non-trivial cases where this is an actual help might benefit > > > more from the programmer structuring the computation to fit in L2 (or > > > L3) cache. [Note that this is similar to what you do when you don't > > > have enough memory for intermediate results.] > > > > > > But, also, identifying why it is good can help with the specification > > > process (the nature of that behind-the-scenes algebra which is a > > > necessary part of the implementation of this proposal). > > > > > > Thanks, > > > > > > -- > > > Raul > > > > > > > > > On Mon, Feb 26, 2018 at 2:01 PM, Vijay Lulla <vijaylu...@gmail.com> > > wrote: > > > > The "range" idea that James is proposing is a good one! Julia > > implements > > > > range like this. And, if I recollect correctly this is also one of > the > > > > fundamental changes between Python 2 and Python 3's range function > > > > behavior! And if I understand correctly what James is saying is that > > we > > > > can do some really clever things with '+ - * %' when i. is not > > executed. > > > > For e.g., below is an example of my Julia session explaining what > James > > > is > > > > getting at: > > > > > > > > ---- Julia REPL ---- > > > > julia> x = 1:2:15 > > > > 1:2:15 > > > > > > > > julia> x > > > > 1:2:15 > > > > > > > > julia> collect(x) > > > > 8-element Array{Int64,1}: > > > > 1 > > > > 3 > > > > 5 > > > > 7 > > > > 9 > > > > 11 > > > > 13 > > > > 15 > > > > > > > > julia> x*2 > > > > 2:4:30 > > > > > > > > julia> collect(x*2) > > > > 8-element Array{Int64,1}: > > > > 2 > > > > 6 > > > > 10 > > > > 14 > > > > 18 > > > > 22 > > > > 26 > > > > 30 > > > > > > > > julia> dump(x) > > > > StepRange{Int64,Int64} > > > > start: Int64 1 > > > > step: Int64 2 > > > > stop: Int64 15 > > > > > > > > julia> dump(collect(x)) > > > > Array{Int64}((8,)) [1, 3, 5, 7, 9, 11, 13, 15] > > > > > > > > julia> > > > > ---- End Julia REPL ---- > > > > > > > > The main thing to notice is that only when you "collect" a "range" > > object > > > > is the actual space allocated (used?). > > > > > > > > > > > > On Mon, Feb 26, 2018 at 1:37 PM, Raul Miller <rauldmil...@gmail.com> > > > wrote: > > > > > > > >> I guess I'm not sure what you think the word "execution" means, in > the > > > >> context of this proposition. > > > >> > > > >> But it's also not clear to me why you think that all use of i. > should > > > >> require extra complexity which is already available through the use > of > > > >> bind. > > > >> > > > >> But there's an additional difficulty, here, which is two unrelated > > > >> proposals making talking about either of them likely to bring in the > > > >> other unrelated topic. > > > >> > > > >> Thanks, > > > >> > > > >> -- > > > >> Raul > > > >> > > > >> > > > >> On Mon, Feb 26, 2018 at 1:32 PM, james faure < > james.fa...@epitech.eu> > > > >> wrote: > > > >> > Bind is not relevant here, since I'm talking about the execution > of > > > i., > > > >> which must inevitably happen at some point to be of any use. > > > >> > > > > >> > > > > >> > Also, I don't see how there could possibly be a tradeoff between > the > > > >> time taken to write the results of a multiplication and evaluate it. > > In > > > any > > > >> event my tests had both python and j print the result of '! y', > which > > > >> should favor j even, since it only writes the first 256 digits, > whilst > > > >> python prints the entire number. > > > >> > > > > >> > James Faure > > > >> > > > > >> > ________________________________ > > > >> > From: Source <source-boun...@forums.jsoftware.com> on behalf of > > Raul > > > >> Miller <rauldmil...@gmail.com> > > > >> > Sent: Monday, February 26, 2018 7:08:31 PM > > > >> > To: Source forum > > > >> > Subject: Re: [Jsource] Propositions > > > >> > > > > >> > This is the "sweep it under the rug" design aesthetic - very > useful > > > >> > when dealing with infinities and/or any other calculations which > you > > > >> > really do not want to perform. > > > >> > > > > >> > That said, J already supports this kind of thing - albeit with > > > >> > slightly different syntax. > > > >> > > > > >> > For example, you can do: > > > >> > i. bind 1e7 > > > >> > > > > >> > and > > > >> > 1 + i. bind 1e7 > > > >> > > > > >> > and J will faithfully not perform the indicated calculations, > quite > > > >> > yet (but still stashes them so that if you later change your mind > it > > > >> > can instead perform them). > > > >> > > > > >> > And, yes, the current extended precision implementation is slow > for > > > >> > multiplications (though fast for display). It's a design tradeoff, > > and > > > >> > perhaps one which should be reconsidered. (Though memory > management > > > >> > and cross platform stability and support are critical issues which > > can > > > >> > take precedence over mere performance.) Or at least: that's how I > > > >> > understand this issue... > > > >> > > > > >> > Thanks, > > > >> > > > > >> > -- > > > >> > Raul > > > >> > > > > >> > On Mon, Feb 26, 2018 at 12:48 PM, james faure < > > james.fa...@epitech.eu > > > > > > > >> wrote: > > > >> >> I have 2 major propositions: > > > >> >> > > > >> >> Recently, I (to my chagrin) demonstarted to a friend that '>: > > i.1e7' > > > >> takes almost twice as long as 'i.1e7'. Of course I expected them > both > > to > > > >> execute instantly, not after a full second. So my suggestion: i. > > should > > > >> return a 'range' (or 'i.') object containing three vars: 'start end > > > step'. > > > >> In this way, '+ - * %' and indeed any linear combination of linear > > > >> operations can be executed on only 3 variables rather than #y . > > besides > > > the > > > >> immediate speed and memory improvements here, other operations (on > i. > > > >> objects), like '+/ */ e. i.' etc.. can now be found by direct > > > calculation, > > > >> without ever spawning a physical array! Another fascinating > > possibility > > > >> becomes available: 'i._'. Thus something like '*/ x * y ^ - i. _' is > > now > > > >> able to return the result of the infinite geometric series. In fact > in > > > >> general it may be very profitable to use virtual arrays only, unless > > > forced > > > >> otherwise. Another concrete example: when searching for the first > > > number to > > > >> satisfy a certain property, one could use 'i.@u seq i. _' rather > than > > > >> some likely inefficent variation of ^: or while. . Perhaps this > 'array > > > only > > > >> when forced' approach may even void the need for special > > combinations, a > > > >> concept which feels suspicious to me. > > > >> >> > > > >> >> Secondly: operations on extended precision numbers are > unbelievably > > > >> slow... The most direct example: '! 100000x' takes 50 (!) times > longer > > > than > > > >> python3's math.factorial(100000). It should be well worth looking > into > > > >> llvm's APInt and APfloats http://llvm.org/doxygen/ > > > classllvm_1_1APInt.html, > > > >> or perhaps Cpython's bigint's https://github.com/python/ > cpython/blob/ > > > >> 65d4639677d60ec503bb2ccd2a196e5347065f27/Objects/longobject.c, I > > > wouldn't > > > >> think it's necessary to write another custom library. > > > >> > [https://avatars2.githubusercontent.com/u/1525981?s=400&v=4 > > ]<https:// > > > >> github.com/python/cpython/blob/65d4639677d60ec503bb2ccd2a196e > > > >> 5347065f27/Objects/longobject.c> > > > >> > > > > >> > python/cpython<https://github.com/python/cpython/blob/ > > > >> 65d4639677d60ec503bb2ccd2a196e5347065f27/Objects/longobject.c> > > > >> > github.com > > > >> > cpython - The Python programming language > > > >> > > > > >> > LLVM: llvm::APInt Class Reference<http://llvm.org/ > > > >> doxygen/classllvm_1_1APInt.html> > > > >> > llvm.org > > > >> > Class for arbitrary precision integers. APInt is a functional > > > >> replacement for common case unsigned integer type like "unsigned", > > > >> "unsigned long" or "uint64_t", but ... > > > >> > > > > >> > > > > >> >> > > > >> >> James Faure > > > >> >> ------------------------------------------------------------ > > > ---------- > > > >> >> For information about J forums see http://www.jsoftware.com/ > > > forums.htm > > > >> > J Forums<http://www.jsoftware.com/forums.htm> > > > >> > www.jsoftware.com<http://www.jsoftware.com> > > > >> > Forums. The J forum mailing lists give life to the J community. > They > > > are > > > >> the best way to get help, help others, report bugs, and share your > > > interest > > > >> in J. > > > >> > > > > >> > > > > >> > ------------------------------------------------------------ > > > ---------- > > > >> > For information about J forums see http://www.jsoftware.com/ > > > forums.htm > > > >> > J Forums<http://www.jsoftware.com/forums.htm> > > > >> > www.jsoftware.com<http://www.jsoftware.com> > > > >> > Forums. The J forum mailing lists give life to the J community. > They > > > are > > > >> the best way to get help, help others, report bugs, and share your > > > interest > > > >> in J. > > > >> > > > > >> > ------------------------------------------------------------ > > > ---------- > > > >> > For information about J forums see http://www.jsoftware.com/ > > > forums.htm > > > >> ------------------------------------------------------------ > > ---------- > > > >> For information about J forums see http://www.jsoftware.com/ > > forums.htm > > > >> > > > > > > > > > > > > > > > > -- > > > > Vijay Lulla, Ph.D. > > > > > > > > Assistant Professor, > > > > Dept. of Geography, IUPUI > > > > 425 University Blvd, CA-207C. > > > > Indianapolis, IN-46202 > > > > vlu...@iupui.edu > > > > > > > > <http://vijaylulla.com> > > > > http://vijaylulla.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 > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm