kronecker.t 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!perl -T
  2. use 5.006;
  3. use strict;
  4. use warnings;
  5. use Test::More tests => 4 * 441;
  6. use Math::AnyNum qw(kronecker);
  7. my @data = split(' ', <<'EOT');
  8. 0 -1 0 -1 0 0 0 1 0 -1 0 1 0 -1 0 0 0 1 0 1 0
  9. -1 0 -1 1 0 -1 -1 0 -1 -1 0 1 1 0 1 1 0 -1 1 0 1
  10. 0 -1 0 1 0 1 0 -1 0 -1 0 1 0 1 0 -1 0 -1 0 1 0
  11. 1 -1 -1 0 1 1 -1 1 -1 -1 0 1 1 -1 1 -1 -1 0 1 1 -1
  12. 0 0 0 -1 0 -1 0 0 0 -1 0 1 0 0 0 1 0 1 0 0 0
  13. 0 -1 1 -1 1 0 -1 -1 1 -1 0 1 -1 1 1 0 -1 1 -1 1 0
  14. 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0 -1 0 1 0
  15. -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1
  16. 0 -1 0 1 0 1 0 -1 0 -1 0 1 0 1 0 -1 0 -1 0 1 0
  17. -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1
  18. 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
  19. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  20. 0 1 0 1 0 -1 0 -1 0 1 0 1 0 -1 0 -1 0 1 0 1 0
  21. 1 0 -1 -1 0 -1 1 0 -1 1 0 1 -1 0 1 -1 0 -1 -1 0 1
  22. 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
  23. 0 1 -1 -1 1 0 1 -1 -1 1 0 1 -1 -1 1 0 1 -1 -1 1 0
  24. 0 0 0 -1 0 1 0 0 0 1 0 1 0 0 0 1 0 -1 0 0 0
  25. -1 1 1 0 1 -1 1 1 1 1 0 1 1 1 1 -1 1 0 1 1 -1
  26. 0 1 0 1 0 -1 0 -1 0 1 0 1 0 -1 0 -1 0 1 0 1 0
  27. 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1
  28. 0 1 0 -1 0 0 0 1 0 1 0 1 0 1 0 0 0 -1 0 1 0
  29. EOT
  30. foreach my $n (-10 .. 10) {
  31. foreach my $k (-10 .. 10) {
  32. my $sym = shift(@data);
  33. is(kronecker($n, $k), $sym, "kronecker($n, $k)");
  34. is(kronecker($n, Math::AnyNum->new($k)), $sym, "kronecker($n, $k)");
  35. is(kronecker(Math::AnyNum->new($n), $k), $sym, "kronecker($n, $k)");
  36. is(kronecker(Math::AnyNum->new($n), Math::AnyNum->new($k)), $sym, "kronecker($n, $k)");
  37. }
  38. }