#!/usr/bin/env perl use utf8; use Carp::Assert; use Utils; use strict; use warnings; our $TEST_BASE = 0.9; sub exponentiation { my ($base, $power_arg) = @_; ::assert($power_arg >= 0, "exponentiation() power must be non-negative, was " . $power_arg); my $power = $power_arg; my $result = 1.0; while ($power > 0) { $result *= $base; --$power; } return $result; } MAIN: { for (my $p = 10; $p >= -1; --$p) { print Utils::messageFormat("\{0:f\} ^ \{1:d\} = \{2:f\}", $TEST_BASE, $p, exponentiation($TEST_BASE, $p)), "\n"; } }