# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl pderival.t' use Test::Simple tests => 10; use Math::Polynomial::Solve qw(poly_derivaluate fltcmp); use Math::Complex; use strict; use warnings; require "t/coef.pl"; my(@coef, $y, $dy, $d2y); # # (1, 0, 0, 0, -1) # # At point 5. # @coef = (1, 0, 0, 0, -1); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 5); ok( (fltcmp($y, 624) == 0 and fltcmp($dy, 500) == 0 and fltcmp($d2y, 300) == 0), " [ " . join(", ", @coef) . " ]"); # # (1, 4, 6, 4, 1) # # At point 5. # @coef = (1, 4, 6, 4, 1); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 5); ok( (fltcmp($y, 1296) == 0 and fltcmp($dy, 864) == 0 and fltcmp($d2y, 432) == 0), " [ " . join(", ", @coef) . " ]"); # # (1, -10, 35, -50, 24) # # At point 5. # @coef = (1, -10, 35, -50, 24); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 5); ok( (fltcmp($y, 24) == 0 and fltcmp($dy, 50) == 0 and fltcmp($d2y, 70) == 0), " [ " . join(", ", @coef) . " ]"); # # (-31, 14, -16, -14, 1) # # At point 5 # @coef = (-31, 14, -16, -14, 1); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 5); ok( (fltcmp($y, -18094) == 0 and fltcmp($dy, -14624) == 0 and fltcmp($d2y, -8912) == 0), " [ " . join(", ", @coef) . " ]"); # # (4, -20, -7, 49, -70, 7, -53, 90) # # At points 5, 3, 1, -1, -3, -5 # @coef = (4, -20, -7, 49, -70, 7, -53, 90); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 5); ok( (fltcmp($y, 0) == 0 and fltcmp($dy, 59892) == 0 and fltcmp($d2y, 145114) == 0), " [ " . join(", ", @coef) . " ]"); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 3); ok( (fltcmp($y, -5460) == 0 and fltcmp($dy, -8192) == 0 and fltcmp($d2y, -7510) == 0), " [ " . join(", ", @coef) . " ]"); ($y, $dy, $d2y) = poly_derivaluate(\@coef, 1); ok( (fltcmp($y, 0) == 0 and fltcmp($dy, -180) == 0 and fltcmp($d2y, -390) == 0), " [ " . join(", ", @coef) . " ]"); ($y, $dy, $d2y) = poly_derivaluate(\@coef, -1); ok( (fltcmp($y, 252) == 0 and fltcmp($dy, -360) == 0 and fltcmp($d2y, 394) == 0), " [ " . join(", ", @coef) . " ]"); ($y, $dy, $d2y) = poly_derivaluate(\@coef, -3); ok( (fltcmp($y, -15456) == 0 and fltcmp($dy, 39460) == 0 and fltcmp($d2y, -79078) == 0), " [ " . join(", ", @coef) . " ]"); ($y, $dy, $d2y) = poly_derivaluate(\@coef, -5); ok( (fltcmp($y, -563220) == 0 and fltcmp($dy, 760752) == 0 and fltcmp($d2y, -865686) == 0), " [ " . join(", ", @coef) . " ]"); 1;