Home

πMath

Description

π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 (please refer to the status section for a brief description of what is available).

Goals

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 to others that has these desired properties (e.g. numpy or mpmath). Ideally, this transition should take place with very small changes in the core implementation of the algorithm. πMath will attempt to approximate this ideal.

To achieve these goals the projects 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 matrices are natively and transparently supported
  • Transparent Multi-processing -- The package should detect and use the availability of multiple cores.
  • 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.

Status
Documentation
License

Updated

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.