Checking if your kit is complete... Looks good Writing Makefile for Math::Polynom cp lib/Math/Polynom.pm blib/lib/Math/Polynom.pm Manifying blib/man3/Math::Polynom.3 PERL_DL_NONLAZY=1 /Users/cpanrun/build/5.8.8/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/01_test_compile...........1..1 ok 1 - use Math::Polynom; ok t/02_test_new...............1..11 ok 1 - use Math::Polynom; ok 2 - check type ok 3 - check content ok 4 - check type ok 5 - check content ok 6 - check type (empty polynom) ok 7 - check content (empty polynom) ok 8 - polynom contains no error ok 9 - new() accepts all kind of numbers ok 10 - new() fails on odd number of arguments ok 11 - new() fails on non numeric arguments ok t/03_test_stringify.........1..8 ok 1 - use Math::Polynom; ok 2 - test stringifying [4*x^3 + 2*x^1] ok 3 - test stringifying [9*x^8 + 4*x^3 + 2*x^1] ok 4 - test stringifying [9*x^8 + -4*x^3 + 2*x^1] ok 5 - test stringifying [9*x^8 + 2*x^1] ok 6 - test stringifying [9*x^8 + 2*x^1 + 4*x^0] ok 7 - test stringifying [9*x^8.4 + 4.3874*x^5.657 + 2*x^1] ok 8 - test stringifying empty polynom ok t/04_test_clone.............1..5 ok 1 - use Math::Polynom; ok 2 - clone() returns same content ok 3 - but a different object ok 4 - have different adresses ok 5 - clone of empty polynom have different adresses ok t/05_test_negate............1..3 ok 1 - use Math::Polynom; ok 2 - testing negate() ok 3 - testing negate on empty polynom ok t/06_test_eval..............1..54 ok 1 - use Math::Polynom; ok 2 - eval(0) on [] ok 3 - xpos stays undef ok 4 - xneg stays undef ok 5 - eval(12) on [] ok 6 - xpos stays undef ok 7 - xneg stays undef ok 8 - eval(-5) on [5*x^0] ok 9 - xpos set to value ok 10 - xneg stays undef ok 11 - eval(2) on [5*x^0] ok 12 - xpos set to value ok 13 - xneg stays undef ok 14 - eval(654321) on [5*x^0] ok 15 - xpos set to value ok 16 - xneg stays undef ok 17 - eval(-5) on [1*x^2] ok 18 - xpos set to value ok 19 - xneg stays undef ok 20 - eval(2) on [1*x^2] ok 21 - xpos set to value ok 22 - xneg stays undef ok 23 - eval(14) on [1*x^2] ok 24 - xpos set to value ok 25 - xneg stays undef ok 26 - eval(0) on [1*x^2] ok 27 - xpos stays undef ok 28 - xneg stays undef ok 29 - eval(4) on [3*x^2 + 5.2*x^0.5] ok 30 - xpos set to value ok 31 - xneg stays undef ok 32 - eval(0) on [3*x^2 + 5.2*x^0.5] ok 33 - xpos stays undef ok 34 - xneg stays undef ok 35 - got a nan on -5 ok 36 - eval(1) on [10*x^-1] ok 37 - xpos set to value ok 38 - xneg stays undef ok 39 - eval(10) on [10*x^-1] ok 40 - xpos set to value ok 41 - xneg stays undef ok 42 - eval(5) on [10*x^-1] ok 43 - xpos set to value ok 44 - xneg stays undef ok 45 - eval(-5) on [10*x^-1] ok 46 - xpos stays undef ok 47 - xneg set to value ok 48 - eval(undef) ok 49 - eval() ok 50 - eval(1,2) ok 51 - eval([]) ok 52 - eval({}) ok 53 - eval('abc') ok 54 - eval('+-32') ok t/07_test_add...............1..17 ok 1 - use Math::Polynom; ok 2 - p + empty polynom = p ok 3 - p + empty polynom = p (commutativity) ok 4 - p + empty polynom = p ok 5 - p + empty polynom = p (commutativity) ok 6 - empty polynom + constant ok 7 - constant + constant ok 8 - constant + constant ok 9 - p3->add(p2) ok 10 - p3->add(p4) ok 11 - p3->add(p2) = p2->add(Math::Polynom=HASH(0x18874d8)) ok 12 - p3->add(p4) = p4->add(Math::Polynom=HASH(0x18874d8)) ok 13 - p2->add(p4) = p4->add(Math::Polynom=HASH(0x1818210)) ok 14 - add(undef) ok 15 - add() ok 16 - add(1,2) ok 17 - add('abc') ok t/08_test_minus.............1..16 ok 1 - use Math::Polynom; ok 2 - p1->minus(p2) ok 3 - p1->minus(p2) ok 4 - p1->minus(p3) ok 5 - p1->minus(p3) ok 6 - p1->minus(3) ok 7 - p2->minus(6.5) ok 8 - p4->minus(6.5) ok 9 - p3->minus(p2) ok 10 - p2->minus(p3) ok 11 - p3->minus(p4) ok 12 - p4->minus(p3) ok 13 - minus(undef) ok 14 - minus() ok 15 - minus(1,2) ok 16 - minus('abc') ok t/09_test_multiply..........1..23 ok 1 - use Math::Polynom; ok 2 - []->multiply() ok 3 - []->multiply(5*x^0) ok 4 - [5*x^0]->multiply() ok 5 - []->multiply(7*x^0) ok 6 - [7*x^0]->multiply() ok 7 - []->multiply(2*x^1) ok 8 - [2*x^1]->multiply() ok 9 - [5*x^0]->multiply(7*x^0) ok 10 - [7*x^0]->multiply(5*x^0) ok 11 - [2*x^1]->multiply(5*x^0) ok 12 - [5*x^0]->multiply(2*x^1) ok 13 - [9*x^3]->multiply(2*x^1) ok 14 - [2*x^1]->multiply(9*x^3) ok 15 - [9*x^3]->multiply(5*x^5 + 4*x^3.2 + -2*x^0.9) ok 16 - [5*x^5 + 4*x^3.2 + -2*x^0.9]->multiply(9*x^3) ok 17 - [5*x^5 + 4*x^3.2 + -2*x^0.9]->multiply(6*x^3 + -6*x^1.8 + 6*x^-1) ok 18 - [6*x^3 + -6*x^1.8 + 6*x^-1]->multiply(5*x^5 + 4*x^3.2 + -2*x^0.9) ok 19 - [1*x^1 + 1*x^0]->multiply(1*x^2 + 1*x^1) ok 20 - multiply(undef) ok 21 - multiply() ok 22 - multiply(1,2) ok 23 - multiply('abc') ok t/10_test_divide............1..9 ok 1 - use Math::Polynom; ok 2 - testing divide(2) ok 3 - testing divide(-1) ok 4 - testing divide(5) on empty polynom ok 5 - divide() ok 6 - divide({}) ok 7 - divide('bob') ok 8 - divide(undef) ok 9 - test division by 0 ok t/11_test_derivate..........1..7 ok 1 - use Math::Polynom; ok 2 - derivate empty polynom ok 3 - derivate constant ok 4 - derivate [5*x^1] ok 5 - derivate [5*x^2] ok 6 - derivate [7*x^6 + 2*x^5 + 4*x^4.6 + 2.5*x^3.5 + 4*x^0.5] ok 7 - derivate [-2*x^5 + 4.5*x^3.5 + 2*x^1] ok t/12_test_newton_raphson....1..26 ok 1 - 1*x^2 + -4*x^0 ->newton_raphson(precision => 0.1) = 2 (got 2.00060975609756) ok 2 - p1->iterations=3 after search ok 3 - 1*x^2 + -4*x^0 ->newton_raphson(guess => 1, precision => 0.1) = 2 (got 2.00060975609756) ok 4 - 1*x^2 + -4*x^0 ->newton_raphson(guess => -1, precision => 0.1) = -2 (got -2.00060975609756) ok 5 - 1*x^2 + -4*x^0 ->newton_raphson(guess => 100, precision => 0.1) = 2 (got 2.00014266153301) ok 6 - 1*x^2 + -4*x^0 ->newton_raphson(guess => 100, precision => 0.0001) = 2 (got 2) ok 7 - 1*x^2 + -4*x^0 ->newton_raphson(guess => 100, precision => 1e-07) = 2 (got 2) ok 8 - 1*x^2 + -4*x^0 ->newton_raphson(guess => -10000, precision => 1e-07) = -2 (got -2) ok 9 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->newton_raphson(precision => 1e-15) = 0.6161718040343 (got 0.6161718040343) ok 10 - newton_raphson() fails on $p2 with negative guess ok 11 - $p2->error_message looks good ok 12 - $p2->error looks good ok 13 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->newton_raphson(guess => 50, precision => 0.01) = 0.6161718040343 (got 0.61617425039426) ok 14 - newton_raphson() fails on $p2 with limited max_depth ok 15 - $p2->error_message looks good ok 16 - $p2->error looks good ok 17 - 1*x^2 + -2*x^1 + 1*x^0 ->newton_raphson(guess => -10, precision => 0.1) = 1 (got 0.9140625) ok 18 - 1*x^2 + -2*x^1 + 1*x^0 ->newton_raphson(guess => 10, precision => 0.1) = 1 (got 1.0703125) ok 19 - 1*x^2 + -2*x^1 + 1*x^0 ->newton_raphson(guess => 1000000, precision => 0.1) = 1 (got 1.05960458517075) ok 20 - newton_raphson() fails on empty polynom ok 21 - $p4->error_message looks good ok 22 - $p4->error looks good ok 23 - guess => undef ok 24 - precision => undef ok 25 - guess => 'abc' ok 26 - precision => 'abc' ok t/13_test_error_codes.......1..4 ok 1 - check NO_ERROR ok 2 - check ERROR_NAN ok 3 - check ERROR_MAX_DEPTH ok 4 - check ERROR_EMPTY_POLYNOM ok t/14_test_secant............1..34 ok 1 - p1->iterations=0 before search ok 2 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.1) = 2 (got 2.00355871886121) ok 3 - p1->iterations=3 after search ok 4 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.1) = 2 (got 2.00355871886121) ok 5 - 1*x^2 + -4*x^0 ->secant(p0 => -5, p1 => -1, precision => 0.1) = -2 (got -1.99870466321244) ok 6 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.1) = 2 (got 2.00355871886121) ok 7 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.0001) = 2 (got 1.99999995786008) ok 8 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 1e-07) = 2 (got 2.0000000000005) ok 9 - 1*x^2 + -4*x^0 ->secant(p0 => 0, p1 => -100, precision => 1e-07) = -2 (got -2) ok 10 - p1->iterations=14 after search ok 11 - 1*x^2 + -4*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.1) = 2 (got 2.00355871886121) ok 12 - p1->iterations=3 after simpler search ok 13 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->secant(p0 => 0.5, p1 => 1, precision => 1e-15) = 0.6161718040343 (got 0.6161718040343) ok 14 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->secant(p0 => 0.5, p1 => 1, precision => 1e-15) = 0.6161718040343 (got 0.6161718040343) ok 15 - secant() does not fails on polynom 2 with negative guess (newton_raphson would) ok 16 - 1*x^2 + -2*x^1 + 1*x^0 ->secant(p0 => 0.5, p1 => 1, precision => 0.1) = 1 (got 1) ok 17 - 1*x^2 + -2*x^1 + 1*x^0 ->secant(p0 => 500, p1 => -500, precision => 0.1) = 1 (got 0.879390039217692) ok 18 - 1*x^2 + -2*x^1 + 1*x^0 ->secant(p0 => 100000, p1 => 99999, precision => 0.1) = 1 (got 1.12018458483204) ok 19 - secant() fails when max_depth reached ok 20 - $p3->error_message looks good ok 21 - $p3->error looks good ok 22 - secant() fails on empty polynom ok 23 - $p4->error_message looks good ok 24 - $p4->error looks good ok 25 - secant() fails on polynom 2*x^0.2 - 1 ok 26 - $p5->error_message looks good ok 27 - $p5->error looks good ok 28 - secant() fails when p0 == p1 ok 29 - p0 => undef ok 30 - p1 => undef ok 31 - precision => undef ok 32 - p0 => 'abc' ok 33 - p1 => 'abc' ok 34 - precision => 'abc' ok t/15_test_brent.............1..43 ok 1 - p0->iterations=0 ok 2 - 1*x^3 + 1*x^2 + -5*x^1 + 3*x^0 ->brent(a => -4, b => 1.33333333333333, precision => 0.1) = -3 (got -3.03586524839059) ok 3 - p0->iterations=8 after search ok 4 - 1*x^2 + -4*x^0 ->brent(a => 1, b => 3, precision => 0.1) = 2 (got 2) ok 5 - 1*x^2 + -4*x^0 ->brent(a => 3, b => 1, precision => 0.1) = 2 (got 2) ok 6 - 1*x^2 + -4*x^0 ->brent(a => -5, b => -1, precision => 0.1) = -2 (got -2.00000014585422) ok 7 - 1*x^2 + -4*x^0 ->brent(a => -1, b => -5, precision => 0.1) = -2 (got -2.00000014585422) ok 8 - 1*x^2 + -4*x^0 ->brent(a => 0, b => 3, precision => 0.1) = 2 (got 1.96666666666667) ok 9 - 1*x^2 + -4*x^0 ->brent(a => 3, b => 0, precision => 0.1) = 2 (got 1.96666666666667) ok 10 - 1*x^2 + -4*x^0 ->brent(a => -1, b => 3, precision => 0.0001) = 2 (got 2) ok 11 - 1*x^2 + -4*x^0 ->brent(a => 0, b => 3, precision => 1e-07) = 2 (got 1.99999999993295) ok 12 - 1*x^2 + -4*x^0 ->brent(a => 0, b => -100, precision => 1e-07) = -2 (got -2) ok 13 - 1*x^2 + -4*x^0 ->brent(a => 2, b => 3, precision => 0.1) = 2 (got 2) ok 14 - a was identified as root at once ok 15 - 1*x^2 + -4*x^0 ->brent(a => 1, b => 2, precision => 0.1) = 2 (got 2) ok 16 - b was identified as root at once ok 17 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->brent(a => 0.5, b => 1, precision => 1e-15) = 0.6161718040343 (got 0.6161718040343) ok 18 - 5*x^5 + 4*x^3.2 + -2*x^0.9 ->brent(a => 0.5, b => 1, precision => 1e-15) = 0.6161718040343 (got 0.6161718040343) ok 19 - brent() does not fails on polynom 2 with negative guess (newton_raphson would) ok 20 - 1*x^2 + -2*x^1 + 1*x^0 ->brent(a => 0.5, b => 1, precision => 0.1) = 1 (got 1) ok 21 - brent() fails when max_depth reached ok 22 - $p7->error_message looks good ok 23 - $p7->error looks good ok 24 - 5*x^5 + 4*x^3 + -2*x^1 ->brent(a => -1e+17, b => 1e+21, precision => 0.01) = 0.58893 (got 0.588937772512725) ok 25 - brent() fails on empty polynom ok 26 - $p4->error_message looks good ok 27 - $p4->error looks good ok 28 - 2*x^0.2 + -1*x^0 ->brent(a => 0, b => 10, precision => 0.1) = 0.03125 (got 0.0858250424457905) ok 29 - 1*x^1 ->brent(a => -10, b => 10, precision => 0.1) = 0 (got 0) ok 30 - 1*x^2 + -1*x^0 ->brent(a => 0.5, b => 10, precision => 0.1) = 1 (got 0.970588235294118) ok 31 - 1*x^2 + -1*x^0 ->brent(a => -0.5, b => -10, precision => 0.1) = -1 (got -1.00011942578473) ok 32 - 1*x^0.5 + -1*x^0 ->brent(a => 0, b => 10, precision => 0.1) = 1 (got 1) ok 33 - brent() throw sign exception for 'x^2 - 4' on wrong interval [0,1] ok 34 - error_message looks good ok 35 - error looks good ok 36 - brent() throw sign exception for 'x^2 - 4' on wrong interval [4,5] ok 37 - brent() fails when a == b ok 38 - a => undef ok 39 - b => undef ok 40 - precision => undef ok 41 - a => 'abc' ok 42 - b => 'abc' ok 43 - precision => 'abc' ok t/pod-coverage..............1..0 # Skip Test::Pod::Coverage 1.04 required for testing POD coverage skipped all skipped: Test::Pod::Coverage 1.04 required for testing POD coverage t/pod.......................1..1 ok 1 - blib/lib/Math/Polynom.pm ok All tests successful, 1 test skipped. Files=17, Tests=262, 2 wallclock secs ( 2.01 cusr + 0.52 csys = 2.53 CPU) Installing /Users/cpanrun/build/5.8.8/html/site/lib/Math/Polynom.html Installing /Users/cpanrun/build/5.8.8/lib/site_perl/5.8.8/Math/Polynom.pm Installing /Users/cpanrun/build/5.8.8/man/man3/Math::Polynom.3 Appending installation info to /Users/cpanrun/build/5.8.8/lib/5.8.8/darwin-thread-multi-2level/perllocal.pod