This subtask is to add support for the @ infix operator in python for matrix multiplication. The following combinations are permitted:

- Matrix @ Matrix
- Matrix @ Vector (vector interpreted as column vector)
- Vector @ Matrix (vector interpreted as row vector)
- Vector @ Vector (dot product)
- Quaternion @ Quaternion (cross product)
- Quaternion @ Vector

The subtask also covers element-wise multiplication but will be disabled. This will allow current usage of * for matrix multiplication in scripts to be identified and transitioned before the change to element-wise multiplication is introduced. A notable exception to this is that constant * matrix/vector/quaternion (and vice versa) is still permitted. The combinations to be supported are:

- Matrix * Matrix
- Vector * Vector
- Vector *= Vector
- Quaternion * Quaternion (is this useful?)
- Float * Matrix/Vector/Quaternion
- Matrix/Vector/Quaternion * Float