#!perl -w -I..
#______________________________________________________________________
# Symbolic algebra: simple tests.
# PhilipRBrenan@yahoo.com, 2004, Perl License.
#______________________________________________________________________

use Math::Algebra::Symbols;
use Test::More tests => 34;

($a, $b, $x, $i, $zero, $one, $two) = symbols(qw(2 3 x i 0 1 2));

ok(  symbols(0)          == $zero);
ok(  symbols(0)          != $one); 
ok(  symbols(1)          == $one);
ok(  symbols(1)          != $zero);
ok(  $a                  == $two);
ok(  $b                  == 3);
ok(  $a+$a               == 4);
ok(  $a+$b               == 5);
ok(  $a+$b+$a+$b         == 10);
ok(  $a+1                == 3);
ok(  $a+2                == 4);
ok(  $b-1                == 2);
ok(  $b-2                == 1);
ok(  $b-9                == -6);
ok(  $a/2                == $one);
ok(  $a/4                == '1/2');
ok(  $a*2/2              == $two);
ok(  $a*2/4              == $one);
ok(  $a**2               == 4);
ok(  $a**10              == 1024);
ok(  sqrt($a**2)         == $a);
ok(  sqrt(symbols(-1))   == 'i');
ok(  sqrt(symbols(4))    == 2);
ok(  symbols('1/2') + '1/3' + '1/4' - '1/12' == 1);
ok(  sqrt(symbols('-1')) == $i);
ok(  symbols('x')        == $x);
ok(  symbols('2*x**2')   == 2*$x**2);
ok(  $a+$a               == 2*$a);
ok(  $a+$a+$a            == 3*$a);
ok(  $a-$a               == $zero);
ok(  $a-$a-$a            == -$a);
ok(  $a*$b*$a*$b         == $a**2*$b**2);
ok( ($b/$a)**2           == $b**2/$a**2);
ok(  $a**128             == '340282366920938463463374607431768211456');



syntax highlighted by Code2HTML, v. 0.9.1