in reply to Re^5: One Zero variants_without_repetition
in thread One Zero variants_without_repetition

I like this way of computing it better, for several mostly unimportant reasons. :)

#!/usr/bin/perl -w use strict; print countPairPermutations( @ARGV ), $/; sub countPairPermutations { my( $x, $y )= @_; ( $x, $y )= ( $y, $x ) if $y < $x; my $log= 0; for my $i ( 1 .. $x ) { $log += log( $y+$i ) - log( $i ); } my $exp= int( $log / log(10) ); my $mant= exp( $log - log(10)*$exp ); $mant= sprintf "%.*f", 6 < $exp ? 3 : 8, $mant; $mant .= $exp ? "e" . $exp : ""; return $mant if 6 < $exp; return 0 + $mant; }

My code appears to agree with your code (though I didn't count the number of digits output by your code) but they both disagree with your node, reporting that there are 5.807e234 different permutations (not 1.962e230).

Update: Or, using my prototype module:

#!/usr/bin/perl -w use strict; require Math::BigPositiveOkayPrecision; print countPairPermutations( @ARGV ), $/; sub countPairPermutations { my( $x, $y )= @_; ( $x, $y )= ( $y, $x ) if $y < $x; my $p= Math::BigPositiveOkayPrecision->new( 1 ); for my $i ( 1 .. $x ) { $p= $p * ( $y+$i ) / $i; } return $p; }

- tye