The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Vector as string (default ouput format)
$a => [  1.000000000000E+00  2.000000000000E+00  5.000000000000E-01 ]

Specified output format
$a => { 1, 2, 0.5 }

Modified default output format
$a => [ 1.00000 2.00000 0.50000 ]

General Vector Mathematics
length
2.29128784747792
normalised
[ 0.43644 0.87287 0.21822 ]
string concat   $a."**" = [ 1.00000 2.00000 0.50000 ]**
vector constant    X    = [ 1.00000 0.00000 0.00000 ]
subtraction     $a - Z  = [ 1.00000 2.00000 -0.50000 ]
scalar divide   $a / 3  = [ 0.33333 0.66667 0.16667 ]
dot product     $a . Y  = 2
cross product   $a x Y  = [ -0.50000 0.00000 1.00000 ]

Plane containing points X, $a, Z (in anti-clockwise order)
      normal      =    $n     = [ 0.69631 -0.17408 0.69631 ]
  disance from O  =    $d     = 0.696310623822791
 Y axis intersect = $d/($n.Y) = -4

Conversions to MatrixReal objects
Vector as a MatrixReal Row $r (vector -> matrix) => 
[  1.000000000000E+00  2.000000000000E+00  5.000000000000E-01 ]
Vector as a MatrixReal Col $c (vector -> matrix) => 
[  1.000000000000E+00 ]
[  2.000000000000E+00 ]
[  5.000000000000E-01 ]

Rotation Matrix from 3 Vectors
$R   => 
[  4.364357804720E-01  8.728715609440E-01  2.182178902360E-01 ]
[  8.728715609440E-01 -4.364357804720E-01  0.000000000000E+00 ]
[  9.523809523810E-02  1.904761904762E-01 -9.523809523810E-01 ]

Extract the Y row from the matrix as a VectorReal
$R->matrix_row2vector(1) => [ 0.87287 -0.43644 0.00000 ]

Rotate a vector with above rotation matrix
$a * $R (vector -> vector)
[ 2.22980 0.09524 -0.25797 ]

Rotate a MatrixReal column (post multiply)
(NB: matrix must be transposed (~) to match column format)
~$R * $c (col_matrix -> col_matrix) =>
[  2.229797949979E+00 ]
[  9.523809523810E-02 ]
[ -2.579725859545E-01 ]