my($number, $result) = @_ ;
print "ok $number\n" if $result ;
print "not ok $number\n" if !$result ;
my $M = Math
::MatrixReal
->new($size, $size);
for (my $i=1; $i<=$size; $i++)
for (my $j=1; $j<=$size; $j++)
$M->assign($i,$j,rand());
my $v = $tmp->norm_one();
print " ($no: |Delta| = $v)\n" if $DEBUG;
sub ok_matrix_orthogonal
($$)
my $transp = $M->shadow();
$tmp->subtract($M->multiply($transp), $tmp);
my $v = $tmp->norm_one();
print " ($no: |M * ~M - I| = $v)\n" if $DEBUG;
sub ok_eigenvectors
($$$$)
my ($no, $M, $L, $V) = @_;
# Now check that all of them correspond to eigenvalue * eigenvector
my ($rows, $columns) = $M->dim();
unless ($rows == $columns) {
# Computes the result of all eigenvectors...
for (my $i = 1; $i <= $columns; $i++)
my $lambda = $L->element($i,1);
for (my $j = 1; $j <= $rows; $j++)
{ # Compute new vector via lambda * x
$test2->assign($j, $i, $lambda * $test2->element($j, $i));
ok_matrix
("$no",$test,$test2);
abs($x - $y) < $eps ?
return 1 : return 0;