| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #!/usr/bin/perl | 
| 2 |  |  |  |  |  |  | # | 
| 3 |  |  |  |  |  |  | # Testing the Math::VectorReal module | 
| 4 |  |  |  |  |  |  | # | 
| 5 |  |  |  |  |  |  | # location of my libraries (I normally set this via PERL5LIB) | 
| 6 |  |  |  |  |  |  | #use lib '/home/anthony/lib/perl5';  # location of my libraries | 
| 7 | 1 |  |  | 1 |  | 964 | use FindBin; | 
|  | 1 |  |  |  |  | 1234 |  | 
|  | 1 |  |  |  |  | 52 |  | 
| 8 | 1 |  |  | 1 |  | 995 | use lib "$FindBin::Bin/blib/lib"; | 
|  | 1 |  |  |  |  | 838 |  | 
|  | 1 |  |  |  |  | 8 |  | 
| 9 |  |  |  |  |  |  |  | 
| 10 | 1 |  |  | 1 |  | 974 | use Math::VectorReal qw( :all ); | 
|  | 1 |  |  |  |  | 3 |  | 
|  | 1 |  |  |  |  | 3521 |  | 
| 11 |  |  |  |  |  |  | #$Math::VectorReal::TRACE = 1; # Tracing of overload operators on/off | 
| 12 |  |  |  |  |  |  |  | 
| 13 | 1 |  |  |  |  | 11 | print "Stringify output testing (MatrixReal default)\n"; | 
| 14 | 1 |  |  |  |  | 7 | print 'O->stringify => ', O->stringify; | 
| 15 | 1 |  |  |  |  | 20 | print "\n"; | 
| 16 |  |  |  |  |  |  |  | 
| 17 | 1 |  |  |  |  | 3 | print "Changing default vector to string format\n"; | 
| 18 | 1 |  |  |  |  | 3 | print '$Math::VectorReal::FORMAT = "[ %g %g %g ]";', "\n"; | 
| 19 | 1 |  |  |  |  | 2 | $Math::VectorReal::FORMAT = "[ %g %g %g ]"; | 
| 20 | 1 |  |  |  |  | 2 | print "\n"; | 
| 21 |  |  |  |  |  |  |  | 
| 22 | 1 |  |  |  |  | 3 | print "Axis functions, assign to constants\n"; | 
| 23 | 1 |  |  |  |  | 5 | print ' $o = O => ', $o=O, "\n"; | 
| 24 | 1 |  |  |  |  | 6 | print ' $x = X => ', $x=X, "\n"; | 
| 25 | 1 |  |  |  |  | 6 | print ' $y = Y => ', $y=Y, "\n"; | 
| 26 | 1 |  |  |  |  | 5 | print ' $z = Z => ', $z=Z, "\n"; | 
| 27 | 1 |  |  |  |  | 4 | print "\n"; | 
| 28 |  |  |  |  |  |  |  | 
| 29 | 1 |  |  |  |  | 3 | print "String conversion operation testing\n"; | 
| 30 | 1 |  |  |  |  | 2 | print "Note: this include some automatic stringify concat ('.') operations\n"; | 
| 31 | 1 |  |  |  |  | 4 | print ' "$o"  => ', "$o", "\n"; | 
| 32 | 1 |  |  |  |  | 34 | print '""$x   =>', " $x", "\n"; | 
| 33 | 1 |  |  |  |  | 5 | print '  $y"" => ', "$y\n"; | 
| 34 | 1 |  |  |  |  | 5 | print '  $z   => ',  $z, "\n"; | 
| 35 | 1 |  |  |  |  | 6 | print 'vector(1,2,3) => ', vector(1,2,3), "\n"; | 
| 36 | 1 |  |  |  |  | 4 | print "\n"; | 
| 37 |  |  |  |  |  |  |  | 
| 38 | 1 |  |  |  |  | 2 | print "Addition\n"; | 
| 39 | 1 |  |  |  |  | 12 | $a = $x + Y; | 
| 40 | 1 |  |  |  |  | 6 | print '$a = $x + Y => ', $a, "\n"; | 
| 41 | 1 |  |  |  |  | 15 | $a += $y ; | 
| 42 | 1 |  |  |  |  | 6 | print '$a += $y    => ', $a, "\n"; | 
| 43 | 1 |  |  |  |  | 2 | print "\n"; | 
| 44 |  |  |  |  |  |  |  | 
| 45 | 1 |  |  |  |  | 2 | print "Clone and Addition Tests\n"; | 
| 46 | 1 |  |  |  |  | 2 | $b = $y; | 
| 47 | 1 |  |  |  |  | 4 | print '$b = $y  => ', $b, "\n"; | 
| 48 | 1 |  |  |  |  | 4 | $b += Z; | 
| 49 | 1 |  |  |  |  | 5 | print '$b += Z  => ', $b, "\n"; | 
| 50 | 1 |  |  |  |  | 4 | print '   $y    => ', $y, "\n"; | 
| 51 | 1 |  |  |  |  | 3 | print "\n"; | 
| 52 |  |  |  |  |  |  |  | 
| 53 | 1 |  |  |  |  | 2 | print "Subtraction\n"; | 
| 54 | 1 |  |  |  |  | 4 | $b -= $z ; | 
| 55 | 1 |  |  |  |  | 5 | print '$b -= $z    => ', $b, "\n"; | 
| 56 | 1 |  |  |  |  | 4 | $b = $b - Z ; | 
| 57 | 1 |  |  |  |  | 6 | print '$b = $b - Z => ', $b, "\n"; | 
| 58 | 1 |  |  |  |  | 2 | print "\n"; | 
| 59 |  |  |  |  |  |  |  | 
| 60 |  |  |  |  |  |  |  | 
| 61 | 1 |  |  |  |  | 2 | print "Scalar Multiply\n"; | 
| 62 | 1 |  |  |  |  | 5 | $a = $z * 2; | 
| 63 | 1 |  |  |  |  | 5 | print '$a = $z * 2 => ', $a, "\n"; | 
| 64 | 1 |  |  |  |  | 5 | $a = 2 * Z; | 
| 65 | 1 |  |  |  |  | 7 | print '$a = 2 * Z  => ', $a, "\n"; | 
| 66 | 1 |  |  |  |  | 10 | $a *= 2.5; | 
| 67 | 1 |  |  |  |  | 5 | print '$a *= 2.5   => ', $a, "\n"; | 
| 68 | 1 |  |  |  |  | 3 | print "\n"; | 
| 69 |  |  |  |  |  |  |  | 
| 70 | 1 |  |  |  |  | 2 | print "Scalar Divide\n"; | 
| 71 | 1 |  |  |  |  | 4 | $a = $b / 2; | 
| 72 | 1 |  |  |  |  | 6 | print '$a = $b / 2 => ', $a, "\n"; | 
| 73 | 1 |  |  |  |  | 4 | $a /= 3e14; | 
| 74 | 1 |  |  |  |  | 5 | print '$a /= 3e14  => ', $a, "\n"; | 
| 75 | 1 |  |  |  |  | 3 | print "\n"; | 
| 76 |  |  |  |  |  |  |  | 
| 77 |  |  |  |  |  |  |  | 
| 78 | 1 |  |  |  |  | 2 | print "Unary - and more subtraction\n"; | 
| 79 | 1 |  |  |  |  | 4 | $b = -$b; | 
| 80 | 1 |  |  |  |  | 5 | print '$b = -$b       => ', $b, "\n"; | 
| 81 | 1 |  |  |  |  | 3 | $b -= Z; | 
| 82 | 1 |  |  |  |  | 5 | print '$b -= Z        => ', $b, "\n"; | 
| 83 | 1 |  |  |  |  | 4 | $b -= $z - -$y; | 
| 84 | 1 |  |  |  |  | 7 | print '$b -= $z - -$y => ', $b, "\n"; | 
| 85 | 1 |  |  |  |  | 5 | $b = $o - $b; | 
| 86 | 1 |  |  |  |  | 6 | print '$b = $o - $b   => ', $b, "\n"; | 
| 87 | 1 |  |  |  |  | 3 | print "\n"; | 
| 88 |  |  |  |  |  |  |  | 
| 89 |  |  |  |  |  |  |  | 
| 90 | 1 |  |  |  |  | 2 | print "Cross Product\n"; | 
| 91 | 1 |  |  |  |  | 12 | $a = $b x X; | 
| 92 | 1 |  |  |  |  | 7 | print '$a = $b x X   => ', $a, "\n"; | 
| 93 | 1 |  |  |  |  | 3 | $a = $b x $y; | 
| 94 | 1 |  |  |  |  | 5 | print '$a = $b x $y  => ', $a, "\n"; | 
| 95 | 1 |  |  |  |  | 5 | $a = $b x $z; | 
| 96 | 1 |  |  |  |  | 5 | print '$a = $b x $z  => ', $a, "\n"; | 
| 97 | 1 |  |  |  |  | 3 | print "\n"; | 
| 98 |  |  |  |  |  |  |  | 
| 99 |  |  |  |  |  |  |  | 
| 100 | 1 |  |  |  |  | 2 | print "Dot Product / String Concatenation\n"; | 
| 101 | 1 |  |  |  |  | 570 | $a = Z . $b; | 
| 102 | 1 |  |  |  |  | 9 | print '$a = Z . $b   => ', $a, "\n"; | 
| 103 | 1 |  |  |  |  | 3 | $a = $b . -$y; | 
| 104 | 1 |  |  |  |  | 6 | print '$a = $b . -$y => ', $a, "\n"; | 
| 105 | 1 |  |  |  |  | 3 | $s = $b . "!"; | 
| 106 | 1 |  |  |  |  | 3 | print '$s = $b . "!" => ', $s, "\n"; | 
| 107 | 1 |  |  |  |  | 4 | $s = "!" . $b; | 
| 108 | 1 |  |  |  |  | 2 | print '$s = "!" . $b => ', $s, "\n"; | 
| 109 | 1 |  |  |  |  | 3 | $a .= $b; | 
| 110 | 1 |  |  |  |  | 3 | print '$a .= $b      => ', $a, "\n"; | 
| 111 | 1 |  |  |  |  | 2 | print "\n"; | 
| 112 |  |  |  |  |  |  |  | 
| 113 | 1 |  |  |  |  | 1 | print "Special Functions (length, norm, plane)\n"; | 
| 114 | 1 |  |  |  |  | 5 | print '$b->length    => ', $b->length, "\n"; | 
| 115 | 1 |  |  |  |  | 5 | print '$b->norm      => ', $b->norm, "\n"; | 
| 116 | 1 |  |  |  |  | 9 | @a = plane(X,Y,Z); | 
| 117 | 1 |  |  |  |  | 10 | print '@a = plane(X,Y,Z) => ', "\n  @a\n"; | 
| 118 | 1 |  |  |  |  | 3 | print "check output from plane() function\n"; | 
| 119 | 1 |  |  |  |  | 3 | $a = X+Y+Z; | 
| 120 | 1 |  |  |  |  | 7 | print 'normal   => ', $a->norm, "\n"; | 
| 121 | 1 |  |  |  |  | 5 | print 'distance => ', ($a/3)->length, "\n"; | 
| 122 | 1 |  |  |  |  | 3 | print "\n"; | 
| 123 |  |  |  |  |  |  |  | 
| 124 | 1 |  |  |  |  | 2 | print "Are defined constants still OK\n"; | 
| 125 | 1 |  |  |  |  | 3 | print '$o => ', $o, "\n"; | 
| 126 | 1 |  |  |  |  | 4 | print '$x => ', $x, "\n"; | 
| 127 | 1 |  |  |  |  | 4 | print '$y => ', $y, "\n"; | 
| 128 | 1 |  |  |  |  | 4 | print '$z => ', $z, "\n"; | 
| 129 | 1 |  |  |  |  | 0 | print "\n"; | 
| 130 |  |  |  |  |  |  |  |