# t/12_dmul-dadd.t - dmul and 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 qw(dadd dmul drhtz drhfz); plan("tests" => 2); # https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#700 is(dadd(dmul(3.34, 3.34), dmul(-4, dmul(1.22, 2.28))), ".0292", "sum of products"); note("Using native floating-point arithmetic, 3.34*3.34 + -4*1.22*2.28 = " . (3.34*3.34 + -4*1.22*2.28) . " (should be 0.0292)"); is(dadd(dmul(3.3, 3.3), dmul(-4, dmul(1.2, 2.2))), ".33", "sum of products"); note("Using native floating-point arithmetic, 3.3*3.3 + -4*1.2*2.2 = " . (3.3*3.3 + -4*1.2*2.2) . " (should be 0.33)");