#!/usr/bin/perl -w
# programa 7
use Inline C;
use strict;
my $BASE = 0.987654321;
my $EXP = 1000;
print "# $BASE^$EXP = \n";
print "# ".potencia_perl($BASE,$EXP)." (perl)\n";
print "# ".potencia_C($BASE,$EXP)." (C)\n";
sub potencia_perl
{
my ($base,$exp) = @_;
my $result = $base;
for(my $p=1; $p<$exp; $p++) { $result *= $base; }
return $result;
}
__END__
### alternativa en C
__C__
#include <stdio.h>
float potencia_C( double base, double exp )
{
double result = base;
int p;
for(p=1; p<exp; p++)
{
result *= base;
}
return result;
}
La salida obtenida pone en evidencia que diferentes lenguajes suelen tener diferentes precisiones a la hora de representar números y operar con ellos:
$ perl prog7.pl # 0.987654321^1000 = # 4.02687472213071e-06 (perl) # 4.02687464884366e-06 (C)