Checking if your kit is complete... Looks good Writing Makefile for Math::Symbolic cp lib/Math/Symbolic/Custom/DefaultTests.pm blib/lib/Math/Symbolic/Custom/DefaultTests.pm cp lib/Math/Symbolic/Compiler.pm blib/lib/Math/Symbolic/Compiler.pm cp lib/Math/Symbolic/Custom/DefaultDumpers.pm blib/lib/Math/Symbolic/Custom/DefaultDumpers.pm cp lib/Math/Symbolic/Operator.pm blib/lib/Math/Symbolic/Operator.pm cp lib/Math/Symbolic/Constant.pm blib/lib/Math/Symbolic/Constant.pm cp lib/Math/Symbolic/VectorCalculus.pm blib/lib/Math/Symbolic/VectorCalculus.pm cp lib/Math/Symbolic/Base.pm blib/lib/Math/Symbolic/Base.pm cp lib/Math/Symbolic/Custom.pm blib/lib/Math/Symbolic/Custom.pm cp precompile_recdescent_grammar.pl blib/lib/Math/precompile_recdescent_grammar.pl cp lib/Math/Symbolic/AuxFunctions.pm blib/lib/Math/Symbolic/AuxFunctions.pm cp lib/Math/Symbolic/Custom/Base.pm blib/lib/Math/Symbolic/Custom/Base.pm cp lib/Math/Symbolic/Parser/Yapp.pm blib/lib/Math/Symbolic/Parser/Yapp.pm cp lib/Math/Symbolic/Custom/DefaultMods.pm blib/lib/Math/Symbolic/Custom/DefaultMods.pm cp compile_yapp_parser.pl blib/lib/Math/compile_yapp_parser.pl cp lib/Math/Symbolic/MiscAlgebra.pm blib/lib/Math/Symbolic/MiscAlgebra.pm cp lib/Math/Symbolic/Parser.pm blib/lib/Math/Symbolic/Parser.pm cp lib/Math/Symbolic/ExportConstants.pm blib/lib/Math/Symbolic/ExportConstants.pm cp lib/Math/Symbolic/Parser/Precompiled.pm blib/lib/Math/Symbolic/Parser/Precompiled.pm cp lib/Math/Symbolic/MiscCalculus.pm blib/lib/Math/Symbolic/MiscCalculus.pm cp lib/Math/Symbolic.pm blib/lib/Math/Symbolic.pm cp lib/Math/Symbolic/Variable.pm blib/lib/Math/Symbolic/Variable.pm cp lib/Math/Symbolic/Derivative.pm blib/lib/Math/Symbolic/Derivative.pm Manifying blib/man3/Math::Symbolic::Custom::DefaultTests.3 Manifying blib/man3/Math::Symbolic::Compiler.3 Manifying blib/man3/Math::Symbolic::Custom::DefaultDumpers.3 Manifying blib/man3/Math::Symbolic::Operator.3 Manifying blib/man3/Math::Symbolic::Constant.3 Manifying blib/man3/Math::Symbolic::VectorCalculus.3 Manifying blib/man3/Math::Symbolic::Base.3 Manifying blib/man3/Math::Symbolic::Custom.3 Manifying blib/man3/Math::precompile_recdescent_grammar.3 Manifying blib/man3/Math::Symbolic::AuxFunctions.3 Manifying blib/man3/Math::Symbolic::Custom::Base.3 Manifying blib/man3/Math::Symbolic::Custom::DefaultMods.3 Manifying blib/man3/Math::Symbolic::MiscAlgebra.3 Manifying blib/man3/Math::Symbolic::Parser.3 Manifying blib/man3/Math::Symbolic::ExportConstants.3 Manifying blib/man3/Math::Symbolic::Parser::Precompiled.3 Manifying blib/man3/Math::Symbolic::MiscCalculus.3 Manifying blib/man3/Math::Symbolic.3 Manifying blib/man3/Math::Symbolic::Variable.3 Manifying blib/man3/Math::Symbolic::Derivative.3 PERL_DL_NONLAZY=1 /home/cpanrun/build/5.6.1/bin/perl -Iblib/arch -Iblib/lib -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi -I/home/cpanrun/build/5.6.1/lib/5.6.1 -e 'use Test::Harness qw(&runtests $verbose); $verbose=1; runtests @ARGV;' t/*.t t/00dist............1..0 # Skip Test::Distribution not installed skipped: Test::Distribution not installed t/00pod.............1..0 # Skip Test::Pod 1.00 required for testing POD skipped: Test::Pod 1.00 required for testing POD t/00podcover........1..0 # Skip Test::Pod::Coverage not installed skipped: Test::Pod::Coverage not installed t/01basic...........1..32 ok 1 - use Math::Symbolic; ok 2 - use Math::Symbolic::VectorCalculus; ok 3 - Variable prototype ok 4 - Variable creation, value(), and name() Vars: a=2 b=3 c=4 (Values are optional) ok 5 - Operator prototype ok 6 - Operator creation, type() Expression: (a+c)/(a*b) prefix notation and evaluation: divide(add(a, c), multiply(a, b)) = 1 ok 7 - to_string("prefix") did not complain Now, we derive this partially to a: (prefix again) ok 8 - long-form partial derivative did not complain ok 9 - long-form partial derivative returned derivative partial_derivative(divide(add(a, c), multiply(a, b)), a) = -0.333333333333333 Now, we apply the derivative to the term: (infix) ok 10 - apply_derivatives() did not complain ((a * b) - ((a + c) * b)) / ((a * b) ^ 2) = -0.333333333333333 Finally, we simplify the derived term as much as possible: ok 11 - simplify() did not complain ((a * b) - (b * (a + c))) / ((a * b) ^ 2) = -0.333333333333333 ok 12 - binomial_coeff(0, 0) ok 13 - binomial_coeff(1, 1) ok 14 - binomial_coeff(4, 2) ok 15 - binomial_coeff(5, 2) ok 16 - binomial_coeff(5, 4) ok 17 - binomial_coeff(2, 4) ok 18 - binomial_coeff(2, -1) ok 19 - bell_number(-1) ok 20 - bell_number(0) ok 21 - bell_number(1) ok 22 - bell_number(2) ok 23 - bell_number(3) ok 24 - bell_number(4) ok 25 - bell_number(5) ok 26 - bell_number(6) ok 27 - bell_number(7) ok 28 - bell_number(8) ok 29 - bell_number(9) ok 30 - bell_number(10) ok 31 - Special attribute on constants set correctly. ok 32 - Special attribute on constans unset correctly on change of value. ok t/02basic...........1..26 ok 1 - use Math::Symbolic; Vars: a=2 (Value is optional) ok 2 - value of a==2 is 2 ok 3 - value of a=3 is 3 ok 4 - value of a==3 is still 3 ok 5 - name=foo is foo ok 6 - name==foo is foo ok 7 - Constant with undefined value throws exception ok 8 - Constant prototype ok 9 - constant creation, value(), and special() ok 10 - euler constant creation, value(), and special() ok 11 - pi constant creation, value(), and special() ok 12 - Creation of logarithm Expression: log_10(a*a) prefix notation and evaluation: log(10, multiply(a, a)) = 0.602059991327962 Now, we derive this partially to a: (prefix again) partial_derivative(log(10, multiply(a, a)), a) = 0.434294481903252 ok 13 - apply_derivatives() did not complain (a + a) / ((log(2.71828182845905, 10)) * (a * a)) = 0.434294481903252 Finally, we simplify the derived term as much as possible: ok 14 - simplify() did not complain (2 * a) / (2.30258509299405 * (a ^ 2)) = 0.434294481903252 ok 15 - value() with arguments did not complain ok 16 - set_value() with arguments did not complain ok 17 - value() returns undef for undefined vars ok 18 - apply() returns undef for undefined vars ok 19 - value() defined if vars defined ok 20 - fill_in_vars() ok 21 - signature ok 22 - explicit_signature ok 23 - new (as of 0.132) syntax for set_value() ok 24 - new (as of 0.132) syntax for value() ok 25 - Simplification never adds a superfluous zero ok 26 - simplification: ((x+x^2)+3)-3 ==> x+x^2 ok t/03exp.............1..4 ok 1 - use Math::Symbolic; Vars: a=2 (Value is optional) ok 2 - Creation of exponentiation Expression: 10^(a*a) prefix notation and evaluation: exponentiate(10, multiply(a, a)) = 10000 Now, we derive this partially to a: (prefix again) partial_derivative(exponentiate(10, multiply(a, a)), a) = 92103.4037197618 Now, we apply the derivative to the term: (infix) ok 3 - apply_derivatives() did not complain (10 ^ (a * a)) * (((log(2.71828182845905, 10)) * (a + a)) + ((a * a) * (0 / 10))) (10 ^ (a * a)) * (((log(2.71828182845905, 10)) * (a + a)) + ((a * a) * (0 / 10))) = 92103.4037197618 Finally, we simplify the derived term as much as possible: ok 4 - simplify() did not complain (10 ^ (a ^ 2)) * (4.60517018598809 * a) = 92103.4037197618 ok t/04deep_derivatives.1..4 ok 1 - use Math::Symbolic; Vars: a=2 (Values are optional) prefix notation and evaluation: exponentiate(2.71828182845905, multiply(2, a)) = 54.5981500331442 Now, we derive this partially to 'a' (10 times): (infix) 1 2 3 4 5 6 7 8 9 10 2048 * (2.71828182845905 ^ (2 * a)) = 111817.011267879 ok 2 - Large coefficient and op1() method ok 3 - op2() method ok 4 - op2() method, special euler trait ok t/05unary_minus.....1..6 ok 1 - use Math::Symbolic; Vars: a=2 (Values are optional) ok 2 - Unary minus creation prefix notation and evaluation: negate(a) = -2 ok 3 - Unary minus to prefix -a = -2 ok 4 - Unary minus to infix ok 5 - Unary minus simplification ok 6 - More unary minus simplification ok t/06parser..........1..23 ok 1 - use Math::Symbolic; ok 2 - Parsing constants ok 3 - Parsing multiplication ok 4 - Parsing parens and addition, precedence ok 5 - no fatal error. ok 6 - Parsing difference, chaining. ok 7 - Parsing unary ok 8 - Parsing exp and log ok 9 - Parsing complicated term ok 10 - Parsing complicated term involving sine and cosine ok 11 - Parse fails on invalid string. ok 12 - parsing exp() does not throw an error ok 13 - parsing exp() returns an operator isa Math::Symbolic::Operator ok 14 - Parse of exp() turns it into e^() ok 15 - parsing sqrt() does not throw an error ok 16 - parsing sqrt() returns an operator isa Math::Symbolic::Operator ok 17 - Parse of sqrt() turns it into ()^0.5 ok 18 - parse_from_string complains about being called without args ok 19 - parse_from_string complains about being called as method without args ok 20 - parse_from_string creates a new parser if necessary ok 21 - The object isa Math::Symbolic::Parser::Yapp ok 22 - chose implementation RecDescent ok 23 - Cannot create parser of unknown implementation ok t/07simple_trig.....1..28 ok 1 - use Math::Symbolic; Vars: x=2 (Value is optional) ok 2 - sine creation Expression: sin(2*x) prefix notation and evaluation: sin(multiply(2, x)) ok 3 - sine to_string Now, we derive this partially to x: (prefix again) partial_derivative(sin(multiply(2, x)), x) Now, we apply the derivative to the term: (infix) ok 4 - sine derivative 2 * (cos(2 * x)) Finally, we simplify the derived term as much as possible: 2 * (cos(2 * x)) Now, we do this three more times: 4 * (-(4 * (-(sin(2 * x))))) ok 5 - tan(x) parses ok 6 - tan() is a real tan ok 7 - M::S::AuxF::tan is a real tan ok 8 - cot(x) parses ok 9 - cot() is a real cot ok 10 - M::S::AuxF::cot is a real cot ok 11 - asin(x) parses ok 12 - asin() is a real asin ok 13 - M::S::AuxF::asin is a real asin ok 14 - acos(x) parses ok 15 - acos() is a real acos ok 16 - M::S::AuxF::acos is a real acos ok 17 - atan(x) parses ok 18 - atan() is a real atan ok 19 - M::S::AuxF::atan is a real atan ok 20 - acot(x) parses ok 21 - acot() is a real acot ok 22 - M::S::AuxF::acot is a real acot ok 23 - asinh(x) parses ok 24 - asinh() is a real asinh ok 25 - M::S::AuxF::asinh is a real asinh ok 26 - acosh(x) parses ok 27 - acosh() is a real acosh ok 28 - M::S::AuxF::acosh is a real acosh ok t/08parse_hyperbolic.1..4 ok 1 - use Math::Symbolic; ok 2 - Parsing hyperbolic sine ok 3 - Parsing hyperbolic cosine ok 4 - Parsing more complicated string involving sinh/cosh/tan. ok t/09hyperbolic......1..7 ok 1 - use Math::Symbolic; Vars: x=2 (Value is optional) ok 2 - hyperbolic sine creation ok 3 - area hyperbolic sine creation Expression: sinh(2*x) and asinh(2*x) prefix notation and evaluation: sinh(multiply(2, x)) ok 4 - h. sine to_string asinh(multiply(2, x)) ok 5 - area h. sine to_string Now, we derive this partially to x: (prefix again) partial_derivative(sinh(multiply(2, x)), x) partial_derivative(asinh(multiply(2, x)), x) Now, we apply the derivative to the term: (infix) ok 6 - h. sine derivative ok 7 - area h. sine derivative 2 * (cosh(2 * x)) 2 * (1 / ((((2 * x) ^ 2) + 1) ^ 0.5)) Finally, we simplify the derived term as much as possible: 2 * (cosh(2 * x)) 2 / (1 + (2 * x)) Now, we do this two more times: 8 * (cosh(2 * x)) 0 ok t/10hyperbolic......1..7 ok 1 - use Math::Symbolic; Vars: x=2 (Value is optional) ok 2 - hyperbolic cosine creation ok 3 - area hyperbolic cosine creation Expression: cosh(2*x) and acosh(2*x) prefix notation and evaluation: cosh(multiply(2, x)) ok 4 - h. cosine to_string acosh(multiply(2, x)) ok 5 - area h. cosine to_string Now, we derive this partially to x: (prefix again) partial_derivative(cosh(multiply(2, x)), x) partial_derivative(acosh(multiply(2, x)), x) Now, we apply the derivative to the term: (infix) ok 6 - h. cosine derivative ok 7 - area h. cosine derivative 2 * (sinh(2 * x)) 2 * (1 / ((((2 * x) ^ 2) - 1) ^ 0.5)) Finally, we simplify the derived term as much as possible: 2 * (sinh(2 * x)) 2 / (-1 + (2 * x)) Now, we do this two more times: 8 * (sinh(2 * x)) 0 ok t/11trigonometric...1..25 ok 1 - use Math::Symbolic; Vars: x=2 (Value is optional) ok 2 - sine creation ok 3 - cosine creation ok 4 - tangent creation ok 5 - cotangent creation ok 6 - arc sine creation ok 7 - arc cosine creation ok 8 - arc tangent creation ok 9 - arc cotangent creation prefix notation and evaluation: sin(multiply(2, x)) ok 10 - sine to_string cos(multiply(2, x)) ok 11 - cosine to_string tan(multiply(2, x)) ok 12 - tangent to_string cot(multiply(2, x)) ok 13 - cotangent to_string asin(multiply(2, x)) ok 14 - arc sine to_string acos(multiply(2, x)) ok 15 - arc cosine to_string atan(multiply(2, x)) ok 16 - arc tangent to_string acot(multiply(2, x)) ok 17 - arc cotangent to_string Now, we derive this partially to x: (prefix again) multiply(2, cos(multiply(2, x))) ok 18 - sine derivative, simplification multiply(2, negate(sin(multiply(2, x)))) ok 19 - cosine derivative, simplification divide(2, exponentiate(cos(multiply(2, x)), 2)) ok 20 - tangent derivative, simplification multiply(2, negate(divide(1, exponentiate(cos(multiply(2, x)), 2)))) ok 21 - cotangent derivative, simplification divide(2, subtract(1, multiply(2, x))) ok 22 - arc sine derivative, simplification divide(-2, subtract(1, exponentiate(multiply(2, x), 2))) ok 23 - arc cosine derivative, simplification divide(2, add(1, multiply(2, x))) ok 24 - arc tangent derivative, simplification divide(-2, add(1, exponentiate(multiply(2, x), 2))) ok 25 - arc tangent derivative, simplification ok t/12overload........1..34 ok 1 - use Math::Symbolic; Vars: x=10 (Value is optional) Expression: x * 2 + 1, x / 2 - 1, x * (2+1) ok 2 - overloaded multiplication and addition ok 3 - Correct result of overloaded *,+ ok 4 - Result evaluates to the correct number ok 5 - overloaded division and subtraction ok 6 - Correct result of overloaded /,- ok 7 - Result evaluates to the correct number ok 8 - overloaded multiplication involving auto-parsing ok 9 - Correct result of overloaded * involving auto-parsing ok 10 - Result evaluates to the correct number ok 11 - overloaded ** w/ constant recognition and M::S::Operators ok 12 - Result evaluates to the correct number ok 13 - overloaded ** w/ two M::S::Operators ok 14 - Result evaluates to the correct number ok 15 - overloaded sqrt, * w/ M::S::Operators ok 16 - Result evaluates to the correct number ok 17 - overloaded unary minus, exp w/ M::S::Constant ok 18 - Result evaluates to the correct number ok 19 - overloaded log w/ M::S::Constant ok 20 - Result evaluates to the correct number ok 21 - automatic boolean conversion (Test1) ok 22 - automatic boolean conversion (Test2) ok 23 - overloaded sin, cos w/ M::S::Constant ok 24 - Result evaluates to the correct number ok 25 - overloaded += w/ M::S::Constant ok 26 - Result evaluates to the correct number ok 27 - overloaded -= w/ M::S::Constant ok 28 - Result evaluates to the correct number ok 29 - overloaded *= w/ M::S::Constant ok 30 - Result evaluates to the correct number ok 31 - overloaded /= w/ M::S::Constant ok 32 - Result evaluates to the correct number ok 33 - overloaded **= w/ M::S::Constant ok 34 - Result evaluates to the correct number prefix notation and evaluation: add(multiply(x, 2), 1) = 21 subtract(divide(x, 2), 1) = 4 Now, we derive this partially to x: (prefix again) partial_derivative(add(multiply(x, 2), 1), x) = 2 partial_derivative(subtract(divide(x, 2), 1), x) = 0.5 partial_derivative(multiply(x, add(2, 1)), x) = 3 ok t/13parse_more......1..17 ok 1 - use Math::Symbolic; ok 2 - Parsing variables ok 3 - Parsing multiplication of variables ok 4 - Parsing parens and addition, precedence, overloaded ops ok 5 - did not die ok 6 - Parsing difference, chaining ok 7 - Parsing unary minus and complex identifier ok 8 - Parsing exp and log ok 9 - Parsing complicated term ok 10 - Autoparsing at operator creation ok 11 - Parsing variable with signature ok 12 - Checking variable for correct signature ok 13 - did not die ok 14 - Parsing term involving variables with signatures. ok 15 - Checking term for correct signature ok 16 - Parsing term involving multiple unary minuses ok 17 - Parsing term involving multiple unary minuses ok t/14compile.........1..21 ok 1 - use Math::Symbolic; ok 2 - compile_to_sub(), one argument. ok 3 - - checking results. ok 4 - - checking results. ok 5 - compile_to_sub(), two arguments. ok 6 - - checking results. ok 7 - - checking results. ok 8 - compile_to_sub(), two arguments. ok 9 - - checking results. ok 10 - - checking results. ok 11 - compile_to_code() - one argument. ok 12 - - checking results. ok 13 - - checking results. ok 14 - compile_to_code() - two arguments. ok 15 - - checking results. ok 16 - - checking results. ok 17 - compile_to_code() - two arguments. ok 18 - - checking results. ok 19 - - checking results. ok 20 - compile() ok 21 - Correct result of sub ok t/15total_derivatives.1..8 ok 1 - use Math::Symbolic; ok 2 - Term creation from string did not complain. Expression: 10^(a(x)*a(x)) prefix notation and evaluation: (a=2) exponentiate(10, multiply(a, a)) = 10000 Now, we derive this totally to a: (prefix again) ok 3 - Total derivative did not complain. total_derivative(exponentiate(10, multiply(a, a)), a) = 92103.4037197618 Now, we apply the derivative to the term: (infix) ok 4 - Application of total derivative did not complain (10 ^ (a * a)) * ((log(2.71828182845905, 10)) * (a + a)) = 92103.4037197618 Finally, we simplify the derived term as much as possible: (10 ^ (a ^ 2)) * (4.60517018598809 * a) = 92103.4037197618 ok 5 - Simplification of result did not complain For a change, we derive the term to x. ok 6 - Parsing total derivative (to sig var) from string did not complain ok 7 - Applying total derivative (to sig var) did not complain The derived term becomes: (10 ^ (a * a)) * ((log(2.71828182845905, 10)) * ((a * (total_derivative(a, x))) + (a * (total_derivative(a, x))))) ok 8 - Printing result does not complain Which simplifies as: (10 ^ (a ^ 2)) * (4.60517018598809 * (a * (total_derivative(a, x))))ok t/16tests...........1..48 ok 1 - use Math::Symbolic; ok 2 - is_constant true for constants ok 3 - is_constant false for vars ok 4 - is_constant true for constant expressions ok 5 - is_constant false for non-constant expressions ok 6 - is_constant true for expressions that become constant after del/delx ok 7 - is_constant true for expressions that become constant after d/dx ok 8 - is_constant true for expressions that become constant after d/dx ok 9 - is_integer false for vars ok 10 - is_integer false for fractions ok 11 - is_integer true for integers ok 12 - is_integer true for zero ok 13 - is_integer false for operators ok 14 - is_sum true for constant ok 15 - is_sum true for constant sum ok 16 - is_sum true for constant times variable ok 17 - is_sum true for integer constant times variable ok 18 - is_sum false for non-integer constant times variable ok 19 - is_sum true for sum of variables and constant terms ok 20 - is_sum true for del/delx that evaluates to a sum ok 21 - is_identical true involved term ok 22 - is_identical true involved term ok 23 - is_identical false involved term differing in signature ok 24 - is_identical false involved term differing in constant ok 25 - is_identical false involved term differing in variable ok 26 - is_identical false involved term differing in operator ok 27 - can() returns code ref for builtin method. ok 28 - can() returns code ref for delegated method. ok 29 - can() returns false for non-existant builtin method. ok 30 - can() returns false for non-existant delegated method. ok 31 - is_identical_base trivial ok 32 - is_identical_base simple ok 33 - more is_identical_base tests ok 34 - more is_identical_base tests ok 35 - more is_identical_base tests ok 36 - more is_identical_base tests ok 37 - 1 is_one ok 38 - !0 is_one ok 39 - !4-3 is_one ok 40 - !a is_one ok 41 - !1 is_zero ok 42 - !0 is_zero ok 43 - !4-4 is_zero ok 44 - !a is_zero ok 45 - 1 is_zero_or_one ok 46 - 0 is_zero_or_one ok 47 - !4-4 is_zero_or_one ok 48 - !a is_zero_or_one ok t/17modifications...1..29 ok 1 - use Math::Symbolic; ok 2 - apply_constant_fold() working for simple case ok 3 - apply_constant_fold() working for simple case ok 4 - apply_constant_fold() working for simple case ok 5 - apply_constant_fold() working for simple case ok 6 - apply_constant_fold() working for simple case ok 7 - x+x^2 plus 3 should be 3+(x+x^2) (result: 3 + (x + (x ^ 2))) ok 8 - 3+(x+x^2) plus -3 should be x+x^2 (result: x + (x ^ 2)) ok 9 - x-x^2 plus 3 should be 3+(x-x^2) (result: 3 + (x - (x ^ 2))) ok 10 - 2+(x+x^2) plus -1 should be 1+(x+x^2) (result: 1 + (x + (x ^ 2))) ok 11 - (x+x^2)+2 plus -1 should be (x+x^2)+1 (result: (x + (x ^ 2)) + 1) ok 12 - (x+x^2)+1 plus -1 should be x+x^2 (result: x + (x ^ 2)) ok 13 - (x*x^2)+5 plus -4 should be x*x^2+1 (result: (x * (x ^ 2)) + 1) ok 14 - (x+(x^2+2)) plus -4 should be x+(x^2+(-2)) (result: x + ((x ^ 2) + (-2))) ok 15 - (x+(x^2+2)) plus -2 should be x+(x^2) (result: x + (x ^ 2)) ok 16 - (x+(x^2+2)) plus 0 should be x+(x^2+2) (result: x + ((x ^ 2) + 2)) ok 17 - x+(x+(1+x)) plus 2 should be x+(x+(3+x)) (result: x + (x + (3 + x))) ok 18 - x*x^2 times 3 should be 3*(x*x^2) (result: 3 * (x * (x ^ 2))) ok 19 - 3*(x*x^2) times 1/3 should be x*x^2 (result: x * (x ^ 2)) ok 20 - x/x^2 times 3 should be 3*(x/x^2) (result: 3 * (x / (x ^ 2))) ok 21 - x/x^2 times 0 should be 0 (result: 0) ok 22 - 4*(x*x^2) times 1/2 should be 2*(x*x^2) (result: 2 * (x * (x ^ 2))) ok 23 - (x*x^2)*4 times 1/2 should be (x*x^2)*2 (result: (x * (x ^ 2)) * 2) ok 24 - (x*x^2)*3 times 1/3 should be x*x^2 (result: x * (x ^ 2)) ok 25 - (x^x^2)*8 times 1/4 should be x^x^2*2 (result: (x ^ (x ^ 2)) * 2) ok 26 - (x*(x^2*2)) times 1/4 should be x*(x^2*0.5) (result: x * ((x ^ 2) * 0.5)) ok 27 - (x*(x^2*2)) times 1/2 should be x*(x^2) (result: x * (x ^ 2)) ok 28 - (x*(x^2*2)) times 1 should be x*(x^2*2) (result: x * ((x ^ 2) * 2)) ok 29 - x*(x*(2*x)) times 3 should be x*(x*(6*x)) (result: x * (x * (6 * x))) ok t/18vectorcalc......1..19 ok 1 - use Math::Symbolic; ok 2 - use Math::Symbolic::VectorCalculus; ok 3 - simple grad usage ok 4 - more simple grad usage ok 5 - more grad usage with custom signature ok 6 - simple divergence usage ok 7 - more simple divergence usage ok 8 - divergence usage with custom signature ok 9 - basic rot usage ok 10 - basic Jacobi usage ok 11 - basic Hesse usage ok 12 - basic TotalDifferential usage ok 13 - more basic TotalDifferential usage ok 14 - yet more basic TotalDifferential usage ok 15 - basic DirectionalDerivative usage ok 16 - basic DirectionalDerivative usage ok 17 - basic TaylorPolyTwoDim usage (degree 0) ok 18 - basic TaylorPolyTwoDim usage (degree 1) ok 19 - simple Wronsky Determinant ok t/19misccalc........1..11 ok 1 - use Math::Symbolic; ok 2 - use Math::Symbolic::MiscCalculus; ok 3 - simple taylor poly of 0-th degree ok 4 - simple taylor poly of first degree ok 5 - complex taylor poly of third degree ok 6 - simple lagrange error ok 7 - more simple lagrange error ok 8 - more simple lagrange error ok 9 - simple cauchy error ok 10 - more simple cauchy error ok 11 - more simple cauchy error ok t/20miscalgebra.....1..13 ok 1 - use Math::Symbolic; ok 2 - use Math::Symbolic::MiscCalculus; ok 3 - matrix_slice(..., 1, 1) ok 4 - matrix_slice(..., 0, 0) ok 5 - matrix_slice(..., 2, 1) ok 6 - det(4x4) ok 7 - 2x2 det ok 8 - linear_solve component ok 9 - linear_solve component ok 10 - linear_solve component ok 11 - bell_polynomial(0) ok 12 - bell_polynomial(1) ok 13 - bell_polynomial(2) ok t/21more_derivatives.1..7 ok 1 - use Math::Symbolic; ok 2 - b == b ok 3 - b + (c * (2 * x)) == b + ((2 * c) * x) ok 4 - ((((((((1 + (2 * x)) + (3 * (x ^ 2))) + (4 * (x ^ 3))) + (5 * (x ^ 4))) + (6 * (x ^ 5))) + (7 * (x ^ 6))) + (8 * (x ^ 7))) + (9 * (x ^ 8))) + (10 * (x ^ 9)) == ((((((((1 + (2 * (x ^ 1))) + (3 * (x ^ 2))) + (4 * (x ^ 3))) + (5 * (x ^ 4))) + (6 * (x ^ 5))) + (7 * (x ^ 6))) + (8 * (x ^ 7))) + (9 * (x ^ 8))) + (10 * (x ^ 9)) ok 5 - ((cos(3 * x)) * (2 * (cos(2 * x)))) + ((sin(2 * x)) * (3 * (-(sin(3 * x))))) == ((2 * (cos(2 * x))) * (cos(3 * x))) - ((3 * (sin(3 * x))) * (sin(2 * x))) ok 6 - 2 / ((log(2.71828182845905, a)) * (2 * x)) == 2 / (((log(2.71828182845905, a)) * 2) * x) ok 7 - ((x ^ 2) - (x * (2 * x))) / ((x ^ 2) ^ 2) == (-1) / (x ^ 2) ok t/22dumpers.........1..29 ok 1 - use Math::Symbolic; ok 2 ok 3 ok 4 ok 5 - to_sub works ok 6 ok 7 ok 8 ok 9 - to_sub works ok 10 ok 11 ok 12 ok 13 - to_sub works ok 14 ok 15 ok 16 ok 17 - to_sub works ok 18 ok 19 ok 20 ok 21 - to_sub works ok 22 ok 23 ok 24 ok 25 - to_sub works ok 26 ok 27 ok 28 ok 29 - to_sub works ok All tests successful, 3 tests skipped. Files=25, Tests=402, 91 wallclock secs (89.23 cusr + 1.21 csys = 90.44 CPU) Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/precompile_recdescent_grammar.pl Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/compile_yapp_parser.pl Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Compiler.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Operator.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Constant.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/VectorCalculus.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Base.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Custom.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/AuxFunctions.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/MiscAlgebra.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Parser.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/ExportConstants.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/MiscCalculus.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Variable.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Derivative.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Parser/Yapp.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Parser/Precompiled.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Custom/DefaultTests.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Custom/DefaultDumpers.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Custom/Base.pm Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/Math/Symbolic/Custom/DefaultMods.pm Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Custom::DefaultTests.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Compiler.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Custom::DefaultDumpers.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Operator.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Constant.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::VectorCalculus.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Base.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Custom.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::precompile_recdescent_grammar.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::AuxFunctions.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Custom::Base.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Custom::DefaultMods.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::MiscAlgebra.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Parser.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::ExportConstants.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Parser::Precompiled.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::MiscCalculus.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Variable.3 Installing /home/cpanrun/build/5.6.1/man/man3/Math::Symbolic::Derivative.3 Appending installation info to /home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi/perllocal.pod