The Yacas computer algebra system
Yacas is a general purpose easy to use Computer Algebra System (a CAS is a program that can be used to do symbolic manipulation of mathematical expressions). It is built on top of its own programming language designed for this purpose, in which new algorithms can easily be implemented. In addition, it comes with extensive documentation on the functionality implemented and methods used to implement them.