#!/usr/bin/perl -s use v5.16; use Test2::V0 '!float'; use PDL; use experimental 'signatures'; our ($tests, $examples); run_tests() if $tests || $examples; # does not return die <transpose x $e2, $e2->transpose x $e3, $e3->transpose x $e4, $e1->transpose x $e1 - $e2->transpose x $e2; } # Create a column vector as 1xN piddle sub v (@p) { pdl(@p)->dummy(0); } ### Examples and tests sub run_tests { SKIP: { skip "examples" unless $examples; is is_square(v(10, 20), v(20, 20), v(20, 10), v(10, 10)), T(), 'example 1'; is is_square(v(12, 24), v(16, 10), v(20, 12), v(18, 16)), F(), 'example 2'; } SKIP: { skip "tests" unless $tests; is is_square(v(10, 20), v(21, 21), v(20, 10), v(10, 10)), F(), 'e1/e2 not ortogonal'; is is_square(v(10, 20), v(20, 20), v(21, 11), v(10, 10)), F(), 'e2/e3 not ortogonal'; is is_square(v(10, 20), v(20, 20), v(20, 10), v(11, 11)), F(), 'e3/e4 not ortogonal'; is is_square(v(11, 21), v(20, 20), v(20, 10), v(10, 10)), F(), 'e4/e1 not ortogonal'; is is_square(v(10, 20), v(21, 20), v(21, 10), v(10, 10)), F(), 'unequal edge lengths'; is is_square(v(1, 1), v(3, 2), v(2, 4), v(0, 3)), T(), 'rotated'; my $u = sqrt(2); my $v = sqrt(5); is is_square(v($u, $v), v($v, $v), v($v, $u), v($u, $u)), T(), 'floating point vertice coordinates'; } done_testing; exit; }