I was selected for GSoC 2021 under the organization Pharo Consortium to work on the project, Matrix State of the Art.
Today, many fields of computational sciences (Data Science, Data Visualization and even Machine Learning), mathematics, engineering, geology and others make use of matrices. Usually described from tables, it is a central tool used by many programming languages.
A tensor is a generalization of vectors and matrices and is easily understood as a multidimensional array. We are inspired by historical sources such as APL and NumPy. In the PolyMath project (a Pharo project that implements numerous mathematical algorithms), there is already a support for vectors (tensors with rank 1) and matrices (tensors with rank 2), but not general multi-dimensional matrices (aka tensors). The main objective of this project is to extend the existing PolyMath classes to support tensors and related operations.
-
Initially we carried out the implementations through the epidemiological simulation platform Kendrick. More specifically, we implemented operations and tests on rank 2 tensors:
-
After this phase, it was necessary to generalize the operations to multi-dimensional matrices (aka tensors). But we especially wanted to be inspired by the development vision of PolyMath concerning the matrices. For this reason, we have redefined, refactor certain operations and generalize some of them.
- Integration of the
PMNDArray
class and thePMNDArrayTest
class in theMath-Matrix
package of Polymath. - Generalization of the hadamard product for matrices of dimension greater than 2.
- Integration of the
It would also be important to generalize operations such as outer product and the kronecker product for matrices of dimension greater than 2