Welcome to πMath’s documentation!

πMath will be a math package to implement linear algebra methods and algorithms. It aims to provide vector and matrices based on abstract classes to aid the implementation, research and debugging of numerical analysis algorithms.


The project is currently in early development stage. Some functionality is available, but a lot of things are missing.


Using πMath the programmer should be able to develop his algorithm (test and debug) without the need to compile or install external libraries. If the algorithm needs to be optimized (e.g. memory usage, speed, accuracy) the programmer should be able to create new backends and transparently switch the vector and matrix classes (e.g. numpy or mpmath). Ideally, this transition should take place with no changes in the code implementation of the algorithm. πMath will attempt to approximate this ideal.

To achieve these goals the project’s development will be concentrated on the following challenges:

Pure python
The methods implemented using πmath should work without any dependency to external libraries or packages.
Dense and Sparse
Dense and sparse classes should be transparently supported
Transparent Multi-processing
The package should detect and use the availability of multiple cores (where it is safe to do so).
Wrap external libraries
Alternative back-ends can be registered using wrapper classes in order to utilize their speed and accuracy (e.g. numpy or mpmath). In a similar manner a wrapper should be provided that would allow manipulation of matrices mapped into files (e.g. through pytables).
Debugging and Testing
The library should provide classes with embedded logging and debugging capabilities to test, validate and benchmark code.

Indices and tables

Table Of Contents

Next topic

User Guide

This Page