#!/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; } #### #!/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; }