Talk:Long multiplication: Difference between revisions
(→BigNum: what about code with "good" license? usable? must be semplified to make it intellegible in the RC-sense?) |
(Task origins and justification.) |
||
Line 28: | Line 28: | ||
: Hm, there's already good code out there, with ''good'' license (GPLv2 or later) too... e.g. [[:Category:Bc|Bc]] is an arbitrary precision calculator ([http://directory.fsf.org/project/bc/ Bc]) ... does it make sense copy-pasting or this behaviour would just waste RC's aims and space? (I believe RC is not about ''originality'', so it would be ok such a copypasted code, if licenses permit it?) Or should someone at least semplify the code or extract relevant parts in order to show more clearly the ''techinics'' of the calculation? --[[User:ShinTakezou|ShinTakezou]] 14:07, 26 February 2009 (UTC) |
: Hm, there's already good code out there, with ''good'' license (GPLv2 or later) too... e.g. [[:Category:Bc|Bc]] is an arbitrary precision calculator ([http://directory.fsf.org/project/bc/ Bc]) ... does it make sense copy-pasting or this behaviour would just waste RC's aims and space? (I believe RC is not about ''originality'', so it would be ok such a copypasted code, if licenses permit it?) Or should someone at least semplify the code or extract relevant parts in order to show more clearly the ''techinics'' of the calculation? --[[User:ShinTakezou|ShinTakezou]] 14:07, 26 February 2009 (UTC) |
||
: I created this task for two reasons. First, I wanted to see what a programmatic implementation of the ''algorithm'' behind long multiplication might look like. Second, there are better arbitrary-precision multiplication algorithms out there, but before one looks at those, it helps to understand the simpler, less-efficient ones first. Creating this task is a stepping stone for implementing those better algorithms. Libraries implementing general-purpose arbitrary-precision math tasks are great, but this one was specifically about the algorithm in question. I'll update the task description to be a little more clear on the "this isn't something you should do in production code" point. --[[User:Short Circuit|Short Circuit]] 15:34, 26 February 2009 (UTC) |
Revision as of 15:34, 26 February 2009
BigNum
Wouldn't it be appropriate to replace this task with arbitrary-precision arithmetic implementation? I.e. long to long +, -, *, /, and long to short +, -, *, /. The divisions are to be implemented in a complete form (result + remainder).
Hi User_talk:Dmitry-kazakov. Yes that makes sense. For the moment I'll switch this task to be a member of Category:Arbitrary precision. IIRC the Newton Raphson Kontorovich method can be used to speed up the division. It looks interesting....
Re: long/short implementations... I spotted the Ada Rational Arithmetic sample code with "long + short" and considered replicating. But by the time if counted all the combinations I ran out of fingers and toes. E.g. one would have to combine the short..., short short, short, long, long long, long... for int, real, compl for the operators "+", "-", "/", "*", "%", "%*", "**", etc ... ALSO: ×, ÷, ... abs, over, mod up, bin etc ... together with "+:=", "-:=" etc ...
Result: No more toes... I think C++/Ada templates can manage this kind of complexity.
The ALGOL 68 standard had a shorthand/template ≮L≯ for this. e.g.
op ≮÷*, %*, ÷×, %×, mod≯ = (L int a, i) L int: ...
But this for the compiler writer, and not available to programmers.
NevilleDNZ 10:56, 26 February 2009 (UTC)
- Hm, there's already good code out there, with good license (GPLv2 or later) too... e.g. Bc is an arbitrary precision calculator (Bc) ... does it make sense copy-pasting or this behaviour would just waste RC's aims and space? (I believe RC is not about originality, so it would be ok such a copypasted code, if licenses permit it?) Or should someone at least semplify the code or extract relevant parts in order to show more clearly the techinics of the calculation? --ShinTakezou 14:07, 26 February 2009 (UTC)
- I created this task for two reasons. First, I wanted to see what a programmatic implementation of the algorithm behind long multiplication might look like. Second, there are better arbitrary-precision multiplication algorithms out there, but before one looks at those, it helps to understand the simpler, less-efficient ones first. Creating this task is a stepping stone for implementing those better algorithms. Libraries implementing general-purpose arbitrary-precision math tasks are great, but this one was specifically about the algorithm in question. I'll update the task description to be a little more clear on the "this isn't something you should do in production code" point. --Short Circuit 15:34, 26 February 2009 (UTC)