Stringify output testing (MatrixReal default) O->stringify => [ 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 ] Changing default vector to string format $Math::VectorReal::FORMAT = "[ %g %g %g ]"; Axis functions, assign to constants $o = O => [ 0 0 0 ] $x = X => [ 1 0 0 ] $y = Y => [ 0 1 0 ] $z = Z => [ 0 0 1 ] String conversion operation testing Note: this include some automatic stringify concat ('.') operations "$o" => [ 0 0 0 ] ""$x => [ 1 0 0 ] $y"" => [ 0 1 0 ] $z => [ 0 0 1 ] vector(1,2,3) => [ 1 2 3 ] Addition $a = $x + Y => [ 1 1 0 ] $a += $y => [ 1 2 0 ] Clone and Addition Tests $b = $y => [ 0 1 0 ] $b += Z => [ 0 1 1 ] $y => [ 0 1 0 ] Subtraction $b -= $z => [ 0 1 0 ] $b = $b - Z => [ 0 1 -1 ] Scalar Multiply $a = $z * 2 => [ 0 0 2 ] $a = 2 * Z => [ 0 0 2 ] $a *= 2.5 => [ 0 0 5 ] Scalar Divide $a = $b / 2 => [ 0 0.5 -0.5 ] $a /= 3e14 => [ 0 1.66667e-15 -1.66667e-15 ] Unary - and more subtraction $b = -$b => [ -0 -1 1 ] $b -= Z => [ -0 -1 0 ] $b -= $z - -$y => [ -0 -2 -1 ] $b = $o - $b => [ 0 2 1 ] Cross Product $a = $b x X => [ 0 1 -2 ] $a = $b x $y => [ -1 0 0 ] $a = $b x $z => [ 2 0 0 ] Dot Product / String Concatenation $a = Z . $b => 1 $a = $b . -$y => -2 $s = $b . "!" => [ 0 2 1 ]! $s = "!" . $b => ![ 0 2 1 ] $a .= $b => -2[ 0 2 1 ] Special Functions (length, norm, plane) $b->length => 2.23606797749979 $b->norm => [ 0 0.894427 0.447214 ] @a = plane(X,Y,Z) => [ 0.57735 0.57735 0.57735 ] 0.577350269189626 check output from plane() function normal => [ 0.57735 0.57735 0.57735 ] distance => 0.577350269189626 Are defined constants still OK $o => [ 0 0 0 ] $x => [ 1 0 0 ] $y => [ 0 1 0 ] $z => [ 0 0 1 ]