in reply to Re^2: Algorithm for cancelling common factors between two lists of multiplicands

in thread Algorithm for cancelling common factors between two lists of multiplicands

I was too lazy to look before, but now that I have, I was a bit off. On the other hand, I snuck in something similar in step 5 anyway. Here's what I remembered when I said that:So, now I've got my "schoolboy approach" working, care to point me at the methods clever people would use?

In QOTW #2 MJD considers the n_choose_k function that computes:

He notes that the intermediate values are very large, even though the final result is not. He submits this replacement:sub n_choose_k { my ($n, $k) = @_; # f($n) = $n! return f($n)/f($k)/f($n-$k); }

and he notes:sub n_choose_k { my ($n, $k) = @_; my $t = 1; for my $i (1 .. $k) { $t *= $n - $k + $i; $t /= $i; } return $t; }

For your formula, this only applies to a small portion of the terms. You may be better off just ignoring MJD's improvement and proceeding as I outlined before.$t here is always an integer, and never gets bigger than necessary.

-QM

--

Quantum Mechanics: The dreams stuff is made of

In Section
Seekers of Perl Wisdom

Comment onRe^3: Algorithm for cancelling common factors between two lists of multiplicandsSelectorDownloadCode