#!/usr/bin/perl -w use strict; use Math::Gsl::Sf qw(gamma gamma_e); my $r = new Math::Gsl::Sf::Result; for (1 .. 25 ){ gamma_e( $_ , $r ); print "Difference ($_):" . abs( $r->val - fact($_- 1) ) . " vs "; print $r->err . "\n"; } sub fact { my $x = shift; return 1 if $x == 0; return $x * fact( $x - 1 ); }