jscl-meditor - java symbolic computing library and mathematical editor

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

release_notes Version 5.4.6

Project description

The goal of this project is to develop a java symbolic computing library and a mathematical editor front-end. There are already several existing computer algebra systems, most of them developed in other languages, mainly C/C++ and Lisp. But using Java for symbolic computation has some benefits. In addition to being widely used and to comply with various standards, it has two important features : readability and portability.

Regarding readability, the goal is to produce code that is 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);
                        p = q;
                        q = r;
                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 languages. But it could be worth the effort, in the sense that understanding an algorithm just by looking at the code is made possible. Object-orientation allows to hide unsightly optimizations behind a clean, easy to use interface.

Some may doubt however that Java will ever be as clear as C++, because it does not have operator overloading, which means that a + b is written a.add(b), and will remain so. 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 many 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 three implementations (see below). Among others, it is intended for taking course notes. With it, a student can do 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 exported to XHTML and published on-line, see http://meditorworld.appspot.com/ for an illustration.


The implementations of the front-end are as follows:

    * New : there is now a version for android

    * j2se/swing for desktop platforms

    * Native jump/pilotjfc/wabajump for PalmOS


There was a special effort to make the palm front-end powerful enough to be used at school, 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/


Linoleum version (from v5.0 on)

Create a "meditor" directory on your hard drive. Extract the meditor.zip archive in it.

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

Open the application panel (Ctrl+O). Click on "meditor".

Desktop version (up to v4.2)

Extract the meditor.zip archive into any appropriate directory on your hard drive. It will create a "meditor" 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 can 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.14
http://xmlgraphics.apache.org/fop/ 2.4
http://xml.apache.org/batik/ 1.12
http://xsltml.sourceforge.net/ 2.1.2
http://www2.ph.ed.ac.uk/snuggletex/ 1.3.0
https://java.net/projects/swingx/ 1.6.2-2
http://beanshell.org/ 2.0b5


Progress report on the Scala Algebra System (CASC 2020) http://jscl-meditor.sourceforge.net/interface-slides.pdf presentation https://www.dk-compmath.jku.at/conferences/casc-2020/day-5/05-Jolly.mp4
meditor, the mathemagical editor (software demonstration, 2020) http://jscl-meditor.sourceforge.net/magical.pdf
Computer algebra in Scala : what's new with Dotty ? (ScalaUA 2020) https://drive.google.com/file/d/1MixKt_OXD719SgomXx81VrtW8jvAV78_/view presentation https://www.youtube.com/watch?v=L-NTXZZPV4A
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 Heinz Kredel, 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 Sat Jul 25 2020