From 5e2c05e6c289d2ed09f9cf5308231afddc1c2e9b Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 05 Jan 2017 03:45:54 -0500 Subject: t/10_dadd.t: New file --- (limited to 't') diff --git a/t/10_dadd.t b/t/10_dadd.t new file mode 100644 index 0000000..256fc12 --- /dev/null +++ b/t/10_dadd.t @@ -0,0 +1,55 @@ +# t/10_dadd.t - dadd tests +# +# Copyright (C) 2017 Patrick McDermott +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use strict; +use warnings; + +use Test::More; +use Math::Decimal::FastPP; + +my @tests; +my $a; +my $b; +my $c; +my $i; + +@tests = ( + # a b c + [ 1.23, 4.56, 5.79], + [-1.23, 4.56, 3.33], + [-1.23, -4.56, -5.79], + [ 9.95, 0.52, 10.47], +); + +plan("tests" => scalar(@tests) + 1); + +foreach (@tests) { + ($a, $b, $c) = @{$_}; + is(dadd($a, $b), $c, sprintf("%5.2f + %5.2f = %5.2f", $a, $b, $c)); +} + +$a = 0; +for ($i = 0; $i < 10000; ++$i) { + $a = dadd($a, 0.01); +} +is($a, "100.00", "adding 0.01 10000 times"); +$a = 0; +for ($i = 0; $i < 10000; ++$i) { + $a += 0.01; +} +note("Using native floating-point arithmetic, the result is " . $a . + " (should be 100)"); -- cgit v0.9.1