jscl-meditor - java symbolic computing library and mathematical editor

# News
# Project description
# Implementations
# Symbolic capabilities
# Download
# Installation
# Dependencies
# Papers
# Acknowledgements
# Related projects
# Contact
# Copyright


meditor for android

release_notes Version 4.2

Project description

The goal of this project is to provide a java symbolic computing library with a mathematical editor front-end. There are several computer algebra systems available on the market, most of them developed in other languages, mainly C/C++ and Lisp. But the benefits of using java in symbolic computation are great. Aside from being widely used and to comply with various standards, this language has two features of concern : readability and portability.

Regarding readability, the goal is to produce a code as nice and short as the pseudo-code found in textbooks or research papers. As an illustration, here is what the Euclidean algorithm would look like:

        Polynomial gcd(Polynomial p, Polynomial q) {
                while(q.signum()!=0) {
                        Polynomial r=p.remainder(q);
                return p;

It entails a dedicated development effort. This choice of clear coding, enabled by java, may have consequences in terms of performance compared to other software. But it could be worth the commitment, in the respect that understanding an algorithm just by looking at the code is made possible. Object-orientation allows to hide ugly optimizations behind a clean, easy to use interface.

Some may doubt however that java will ever be as clear as C++ because it doesn't provide operator overloading, which means that a+b is written a.add(b), and will remain as such. The interested reader can look at the on-going discussion on the matter at Sun http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4905919 

As for portability, it means that a lot of platforms are available at no cost, from powerful unix workstations or servers to handheld devices. To make it possible, the project is split in two parts : the engine (jscl) and the mathematical editor front-end (meditor). The engine is usable interactively or in batch mode from a java shell interpreter (like BeanShell for instance), or as a java library in any third-party application.

The front-end has currently two implementations (see below). Among others, it is intended for taking course notes. With it, a student can perform the calculations asked by their teacher fast and reliably. The plain text format should make the exchange of notes easy. The produced worksheets can be published on http://meditorworld.appspot.com/ through the Connect to web folder feature.


The current implementations of the front-end are as follows:

    * j2se/swing for desktop platforms

    * Native jump/pilotjfc/wabajump for PalmOS


There was a special effort to make the palm front-end powerful enough for school use, by compiling the software into native code with http://jump.sourceforge.net/ 

Symbolic capabilities

The symbolic capabilities are currently:

    * polynomial system solving
    * vectors and matrices
    * factorization
    * derivatives
    * integrals (rational functions)
    * boolean algebra
    * simplification
    * geometric algebra
    * java code generation
    * graphical rendering of math expressions


Go to the Project summary page http://sourceforge.net/projects/jscl-meditor/ 


Desktop version (v3.0 onward)

Extract the meditor3.0.zip archive into any appropriate directory on your hard drive. It will create a "meditor3.0" directory. Change dir to it.

To run meditor, add the bin directory to your path, give bin/meditor execution privilege (unix), then : meditor [file]

Once the application is up, you may go to the docs directory and try the examples it contains.

PalmOS version (up to v2.3)

Go to the "palm" subdirectory. Upload the editor.prc into the device.

To have the data persisted, create an entry in the memopad with the word "meditor" (+return) on the first line. The memo.csv that you can optionally install (via your desktop application import) has such an entry and several other memos containing the documentation.


http://jeuclid.sourceforge.net/ 3.1.9
http://xmlgraphics.apache.org/fop/ 0.95
http://xml.apache.org/batik/ 1.7
http://xsltml.sourceforge.net/ 2.1.2
http://www2.ph.ed.ac.uk/snuggletex/ 1.2.2
http://github.com/lookfirst/sardine/ 5.1
http://beanshell.org/ 2.0b5


Categories as type classes in the Scala Algebra System (CASC 2013) http://jscl-meditor.sourceforge.net/catc-slides.pdf
Parallelizing Stream with Future (2013) http://arxiv.org/abs/1305.4367
Straightforward parallelization of polynomial multiplication using parallel collections in Scala (EOOPS 2013) http://jscl-meditor.sourceforge.net/parallel-slides.pdf
Categories as classes and mixin composition (CASC 2012, with H. Kredel) http://krum.rz.uni-mannheim.de/kredel/com-casc2012-poster.pdf
Algebraic structures as typed objects (CASC 2011, with H. Kredel) http://krum.rz.uni-mannheim.de/kredel/to-cas-casc2011-slides.pdf
Object Scala Found - a JSR223-compliant version of the scala interpreter (Scala Days 2011) http://jscl-meditor.sourceforge.net/scalaint.pdf presentation http://days2011.scala-lang.org/node/138/319
Generic, Type-safe and Object Oriented Computer Algebra Software (CASC 2010, with H. Kredel) http://krum.rz.uni-mannheim.de/kredel/oocas-casc2010-slides.pdf
A real world use of higher kinds in the domain of computer algebra (2010) http://jscl-meditor.sourceforge.net/hk-ca.pdf
Symbolic script programming for Java (2009, with H. Kredel) http://arxiv.org/abs/0906.2315
How to turn a scripting language into a domain specific language for computer algebra (2008, with H. Kredel) http://arxiv.org/abs/0811.1061


Thanks to Yves Noyer, Jeffry Madura, Eric Smith, Sergio Melas, Andrea Boright, Ross Green, Nicolas Rosillo, Marten van Wezel, Toyin Akin, Philippe d'Oreye, Sione Palu, Michael Braginsky, Mike Thomas, David Schneider, Oleg Volkov, Markus Hohenwarter, Dimitri Pissarenko, Eckhard Hitzer, Daniel Fontijne, Alfredo Vianna, Oliver Pretzel, Axel Kramer, Bob Orchard.

Related projects

http://jscience.org/ Java Tools and Libraries for the Advancement of Sciences
http://www.geogebra.at/ dynamic mathematics software that connects geometry, algebra and calculus
http://mvt.sourceforge.net/ Mathematical Visualization Toolkit
http://gcalc.net/ mathematical graphing system in Java
http://mathdragn.squarespace.com/ Symbolic Equation Manipulator
http://mtac.sourceforge.net/ - More than a Calculator


You can send your reactions to raphael.jolly@free.fr. For bug reports and support requests, you have tools on the Project summary page http://sourceforge.net/projects/jscl-meditor/ 


http://www.gnu.org/licenses/gpl.html The GNU General Public License

last updated on Wed Jul  9 2014