# 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.

Implementations

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

Download

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

Installation

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.

Dependencies

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

Papers

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

Acknowledgements

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

Contact

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/

Copyright

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

last updated on Sat Jul 25 2020