Franklin Math is an open source symbolic computer algebra system, written in Java, that I created. It has been an ongoing project in my free time between work and school over the past year and a half. I started developing a great interest in computer algebra system (CAS) packages such as Mathematica while taking a class in Numerical Analysis, sparking the desire to make my own. After laying out the initial design with UML diagrams and flow charts, I started development. Progress happened in several iterations, starting with the core program structure, then moving on to language implementation and expression reduction. I have the first version released under the GPL license on SourceForge and Google Code.
This screenshot shows the Franklin Math GUI after executing a Plot command. A user can input math commands in the upper text area, then see the execution results in the larger output area below. Available built-in functions are listed in a tree on the left, organized by category. This function information is read in from an XML file, which is then used to populate this tree and build a lookup table of classes using Java's reflection feature.
Basic Math Screenshot
Here are some basic math expressions evaluated using Franklin Math. The input is parsed into an abstract syntax tree using JavaCC with JJTree. These trees are then organized into hierarchical expressions using a series of encapsulating classes. Reducing these expressions produces the results.