# Test ->clump(). This is not yet good enough: we need
# nasty test cases
use PDL::LiteF;
$|=1;
# PDL::Core::set_debugging(1);
kill INT,$$ if $ENV{UNDER_DEBUGGER}; # Useful for debugging.
#$a = zeroes(4,4) * zeroes(4,4);
# $a = zeroes(4,4) ;
#print $a;
#
#print $a->at(3,3);
#
#exit 4;
sub ok {
my $no = shift ;
my $result = shift ;
print "not " unless $result ;
print "ok $no\n" ;
}
sub tapprox {
my($a,$b) = @_;
my $c = abs($a-$b);
my $d = max($c);
print "C AND D: $a,$b,$c,$d\n";
$d < 0.01;
}
if(0) {
$a0 = zeroes(3,3);
print $a0;
$b0 = 10 * $a0;
print $b0;
}
$a0 = zeroes(3,3);
# $a = $a0->PDL::Core::new_or_inplace($a0);
$a = $a0->copy;
$b = $a->xchg(0,1);
print $a;
# PDL::Primitive::axisvalues($b);
# print $a;
print "1..3\n";
$a0 = xvals(zeroes(3,3));
print $a0;
$a1 = yvals(zeroes(3,3));
print $a1;
$a2 = 10*$a1;
print $a2;
$a3 = $a0 + $a1;
print $a3;
$a = xvals(zeroes(3,3)) + 10*yvals(zeroes(3,3));
print $a;
$b = $a->clump(-1);
# $b->make_physical();
# $a->jdump();
# $b->jdump();
print $b;
ok(1,tapprox($b,pdl [0,1,2,10,11,12,20,21,22]));
# print $b;
$c = $a->slice('0:2:2,:');
$d = $c->clump(-1);
$e = $d->slice("2:4");
$f = ""; # Warning eater
$f= $e->copy();;
kill INT,$$ if $ENV{UNDER_DEBUGGER}; # Useful for debugging.
# ok(2,$@ =~ /^clump: Increments do not match/);
# Clump supports this now.
ok(2,tapprox($d,pdl [0,2,10,12,20,22]));
ok(3,tapprox($e,pdl [10,12,20]));