Go to the previous, next section.

A number of vector-vector operations are provided. These include
addition, subtraction, multiplication and division. Either a new matrix
can be created (i.e. `x = y + z`

) or the result can be stored into
one of the operands (i.e. `x += y`

). Also, the method `dot`

calculates the dot product of two vectors.

The `fract_vector`

class has methods that operate on every element
of the vector. These include functions that add, subtract, multiply or
divide a fraction or integer to every element.

A number of miscellaneous math operations on vectors are also available.
The method `inverse`

returns a `fract_vector`

where every
element is the inverse of the original vector. The `proportional`

method checks to see if two vectors are proportional (i.e. all the
corresponding elements have the same ratio). The
`reduce_magnitude`

method will try to maximally reduce the
numerator of all the fractions in the vector.

The `projection`

method takes a `fract_vector`

as an argument
and returns a `fract_vector`

representing the point that's the
projection of the current vector onto the line spanned by the argument
vector. Let `a`

be the argument, `b`

be the current vector,
and `p`

be the resulting point. Also let `aT`

be the
transpose of `a`

. The projection is calculated using the following
equation: `p = a * (aT * b / aT * a)`

.

Go to the previous, next section.