Talk:Arbitrary-precision integers (included): Difference between revisions

m
added a comment.
m (added a comment.)
 
(14 intermediate revisions by 3 users not shown)
Line 1:
==Use of external libraries==
 
Interestingly, because the fixed const value is the perfect solution may be just one liner ''print("62060698786608744707 ... 92256259918212890625")''. And the "bad" solution is any implementation of Muḥammad ibn Mūsā al-Khwārizmī algorithms. It make no sense!
 
'''The task has is not well-defined.''' Different programming languages are different. Some are monolithic (such as Pascal). Others are modular in design.
 
Therefore, the task should be modified. It should be allowed to use external libraries (especially from generally available standard repositories such as PyPI, CPAN etc.) - and '''when there is no arbitrary arythmetic''' in such standard libraries then showing how the goal can be achieved using standard language mechanisms. Standard mechanisms '''should be understood as ''write functions, procedures, classes, etc., to perform what is necessary.''''' --[[User:Anonymous31415927|Anonymous31415927]] ([[User talk:Anonymous31415927|talk]]) 11:05, 12 September 2020 (UTC)
 
 
I ''strongly'' recommend allowing the use of external libraries in the case where the language doesn't have inherent bignum support. Otherwise, you would need a more generalized task, and I don't see a point to the example code duplication that would require. --[[User:Short Circuit|Michael Mol]] 08:33, 13 February 2010 (UTC)
Line 39 ⟶ 32:
:::As for organising another task with or without this or that, I leave that to others as already, many flowers bloom and I wander without guide. There does not seem to be a facility for grouping related tasks, or multiple parts of a larger task, or even cross-referencing tasks. Just a flat list of tasks ordered alphabetically and with not always helpful choices of the first word. A tree-structure? But the A.B.etc, B.X.etc ordering won't work when it is not clear which should be the first-level keywords. This is a matter for the design of RC's presentation, which I know little about, and I see a lot of scope for disagreement. [[User:Dinosaur|Dinosaur]] ([[User talk:Dinosaur|talk]]) 07:09, 14 November 2016 (UTC)
::::Just for fun: even languages with builtin multiprecision may have additional libraries, for good reasons. For instance, Python has big integers, but the gmpy2 library is linked to GMP, which is way faster than the standard Python integers (plus it also adds multiprecision floats, which are not in the base Python distribution). It makes very little sense to only allow what is included in the bare language: who programs in C++ without BOOST? Who programs in Fortran without LAPACK? Who programs in Lisp without ASDF or even QuickLisp and a bunch of libraries? Who programs, in any language, a GUI without a GUI library? (rarely included, and even when it is, it's never the only one) It's a basic fact of programming that one should not reinvent the wheol but reuse, hence it would be perfectly correct to link to an external library. That's how it ''should'' be done in real life. But, bitter truth, this is not the present task. I'll write another one, maybe. This is really silly. Feel free to quibble about what Fortran could have been sixty years ago, it's almost as useless as the rest of the task! [[User:Arbautjc|Arbautjc]] ([[User talk:Arbautjc|talk]]) 18:07, 14 November 2016 (UTC)
 
 
Interestingly, because the fixed const value is needed, the perfect solution may be just one liner hardcoded ''print("62060698786608744707 ... 92256259918212890625")''. And the "bad" solution is any implementation of Muḥammad ibn Mūsā al-Khwārizmī algorithms. It make no sense!
 
'''The task has is not well-defined.''' Different programming languages are different. Some are monolithic (such as Pascal). Others are modular inby design.
 
Therefore, the task should be modified. It should be allowed to use external libraries (especially from generally available standard repositories such as PyPI, CPAN etc.) - and '''when there is no arbitrary arythmetic''' in such standard libraries then showing how the goal can be achieved using standard language mechanisms. Standard mechanisms '''should be understood as ''write functions, procedures, classes, etc., to perform what is necessary.''''' --[[User:Anonymous31415927|Anonymous31415927]] ([[User talk:Anonymous31415927|talk]]) 11:05, 12 September 2020 (UTC)
 
Anyone seeing the source code will be able to '''judge for themselves''' how convenient a given language is for this type of calculation. --[[User:Anonymous31415927|Anonymous31415927]] ([[User talk:Anonymous31415927|talk]]) 11:49, 12 September 2020 (UTC)
 
:The task notes address this. Why do you think them inadequate? --[[User:Paddy3118|Paddy3118]] ([[User talk:Paddy3118|talk]]) 19:42, 12 September 2020 (UTC)
 
First of all, the task should be redefined to '''enforce computations during the run time''', because 5**(4**(3**2)) can be precomputed or computed in a compile time (esp. in Haskell-like). Secondly, there is no need to say ''"do not submit an implementation of arbitrary precision arithmetic".'' De facto, to solve this task some kind "arbitrary precision arithmetic" (20 digits at least) must be used- either as an internal feature or as an external module/library. Finally, see "pure C solution" - it is '''ugly, but it SOLVE''' the problem: it is criticized as "this example is incorrect". It is not justified in any way, because the Rosseta Code is not a code golf competition and the length of the source code is not revelant.
 
 
--[[User:Anonymous31415927|Anonymous31415927]] ([[User talk:Anonymous31415927|talk]]) 12:41, 17 September 2020 (UTC)
 
== Criteria for Non-Draft? ==
Line 45 ⟶ 54:
:I'm pretty sure there are no criteria. It's just a consensus. This one seems to still have a little discussion going on about how we want it to work so maybe we should wait to make it a full task. --[[User:Mwn3d|Mwn3d]] 16:45, 13 February 2010 (UTC)
::Whoops. I've changed it already due to the number of examples. Please put it back in draft if you think it needs it though. --[[User:Paddy3118|Paddy3118]] 16:58, 13 February 2010 (UTC)
 
 
==“Precision”==
Line 52 ⟶ 62:
::''"In computer science, arbitrary-precision arithmetic is a technique whereby calculations are performed on numbers whose digits of precision are limited only by the available memory of the host system. This contrasts with the faster fixed-precision arithmetic found in most ALU hardware, which typically offers between 6 and 16 decimal digits. It is also called bignum arithmetic, and sometimes even "infinite-precision arithmetic" (which is a misnomer, since the number of digits is both finite and bounded in practice)."''
: --[[User:Paddy3118|Paddy3118]] 16:54, 13 February 2010 (UTC)
 
 
==Ursala took a day?==
 
On my four year old laptop, the Python version took around a minute to run. Maybe the Ursala version should not have used BCD if another representation is available? --[[User:Paddy3118|Paddy3118]] 19:08, 8 April 2010 (UTC)
 
 
== Time constriction? ==
 
----
Copied from [[User talk:Short Circuit]]:
Line 68 ⟶ 82:
 
== Does the Clojure entry count the digits? ==
 
--[[User:Paddy3118|Paddy3118]] 06:13, 11 June 2010 (UTC)
 
 
==Move timings to the talk pages==
 
I'm not sure that timings should be included in answers except maybe in general terms, as [http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game] does it in a more rigourous way and yet still points out [http://shootout.alioth.debian.org/dont-jump-to-conclusions.php issues]. --[[User:Paddy3118|Paddy3118]] 00:34, 25 February 2011 (UTC)
 
Line 76 ⟶ 93:
 
::Thanks Kernigh. I know I prefer it this way rather than having to out-do TCLBG. What do others think? --[[User:Paddy3118|Paddy3118]] 04:05, 27 February 2011 (UTC)
 
 
=== Timings with AMD Phenom II X2 560 ===
 
# C with GMP: 0m0.04s
# Ruby 1.9.2: 0m0.52s
Line 86 ⟶ 105:
 
--[[User:Kernigh|Kernigh]] 03:26, 27 February 2011 (UTC)
 
 
== Missing output ==
Line 127 ⟶ 147:
Cosmetic edits made to the task page at 05:58, 24 July 2016 , including the injection of spaces around expressions in <math> tags, left the main expression completely invisible to all browsers which display the graphic file version of formulae rather than processing the MathML (this is, in fact, the majority of browsers). The MediaWiki processor does not currently expect such spaces, and generates syntactically ill-formed HTML if they are introduced. Other aspects of these cosmetic edits may further compound the problem. [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 08:48, 21 September 2016 (UTC)
: Repaired [[User:Hout|Hout]] ([[User talk:Hout|talk]]) 00:29, 3 November 2016 (UTC)
 
 
==failure of ooRexx using Classic REXX example==
Line 134 ⟶ 155:
ooRexx gives me
 
5 *-* n=5** (4** (3** 2)) /*calc. multiple exponentationsexponentiations. */
Error 26 running Z:\huge.rex line 5: Invalid whole number
Error 26.8: Operand to the right of the power operator (**) must be a whole number; found "2.6214E+5"
Line 142 ⟶ 163:
No answer yet. numeric digits 6 at the start fixes the problem for ooRexx --[[User:Walterpachl|Walterpachl]] ([[User talk:Walterpachl|talk]]) 18:47, 5 November 2013 (UTC)
 
: (Note:   the above comments should've been placed under the ooRexx language section, or here, on the discussion page.
: Yes, Regina and R4 are both very lenient (liberal?) in their usage of exponents.
 
: Also, the (internal) subroutines of these REXXes may use a   '''numeric digits 9''',
: Also note that ooRexx won't execute a lot of Classic REXX examples   (as evident here on Rosetta Code)   as they are different languages with different syntax (dialects?) and statements,   despite having '''REXX''' in their names.   Although ooRexx claims to run any Classic REXX, all evidence is to the contrary.
: thereby bypassing the use/limit of '''numeric digits 5''' &nbsp; (as in the older/replaced 2<sup>nd</sup> version). &nbsp; -- [[User:Gerard Schildberger|Gerard Schildberger]] ([[User talk:Gerard Schildberger|talk]]) 18:31, 10 September 2017 (UTC)
 
: Yes, Regina and R4 are both very lenient (liberal?) in their usage of exponents. &nbsp; But increasing the numeric digits just bypasses the problem, it doesn't fix it in that it is apparently one more difference between ooRexx and Classic REXXes.
 
: Also, the (internal) subroutines of these REXXes may use a &nbsp; '''numeric digits 9''', &nbsp; thereby bypassing the use/limit of&nbsp; '''numeric digits 5''' &nbsp; (as in the older/replaced 2<sup>nd</sup> REXX version). &nbsp; &nbsp; -- [[User:Gerard Schildberger|Gerard Schildberger]] ([[User talk:Gerard Schildberger|talk]]) 18:31, 10 September 2017 (UTC)