jscl-meditor - java symbolic computing library and mathematical
editor
News
Version 3.1
- Packages for the following
projects are added:
MathPiper
active fork of Yacas
Jasymca
Symbolic Calculator for Java
SymPy Python library
for symbolic mathematics
- Most engines are enabled for java web start and available on-line
with this button:
- There is a new plotting facility which is used in Hartmath,
MathEclipse and Jasymca (more engines to come). It is based on SVG and
Batik and works as follows : as a "plot" expression is evaluated, it is
converted in SVG and pasted in the editor. The latter renders
automatically any expression enclosed in <svg></svg>, as it
already did for MathML. Exports to PDF and XHTML are supported, in
vector graphics.
- XML libraries are upgraded to their up-to-date versions (JEuclid,
Fop, Batik)
- Version 1.0 of ScAS is made available
- Some engine interoperation is considered : through its
Jython interface, the ScAS library can be used from the JAS engine. The
newly included JLinAlg
library can be used from any engine with import ability (i.e. Jython,
BeanShell or Scala based ones, namely : JAS, SymPy, JSCL, ScAS).
- Copy to Wiki is made in TeX, in compatibility with Wikipedia. meditorworld
is moved to Sourceforge hosted apps.
Version 3.0 : meditor adopts a
pluggable engine architecture.
Currently, beside the standard JSCL library, packages for the following
projects are provided:
JAS Java Algebra
System
HartMath Java Computer
Algebra Tool
MathEclipse Small computer
algebra server written in Java
Omath open computer algebra
system
Yacas Yet Another CAS
There is also an experimental, Scala-based engine named
ScAS. Any other symbolic package written
for Java (or one of its scripting languages) could be added, to what is
now thought as an open plateform for Java computer algebra, in the
spirit of the
Sage project.
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);
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 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.
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-line thanks to the Copy to Wiki
feature, for instance on
meditorworld.
Implementations
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
Jump.
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.
Installation
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.txt]
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.
Dependencies
jeuclid 3.1.4
(included)
fop 0.95
(included)
batik 1.7
(included)
xerces 2.7.1
(included)
xsltml 2.1.2 (included)
beanshell 2.0b4 (included)
Papers
Symbolic script programming
for Java (2009, with H. Kredel)
How to turn a scripting
language into a domain specific language for computer algebra
(2008, with H. Kredel)
Acknowledgements
Thanks to Klaus Hartlage, 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
JScience Java Tools and Libraries
for the Advancement of Sciences
GeoGebra dynamic mathematics
software that connects geometry, algebra and calculus
MVT Mathematical
Visualization Toolkit
GCalc mathematical graphing system in
Java
MathDrag'n Symbolic
Equation Manipulator
MTAC - More than a
Calculator
Contact
You can send your reactions to raphael.jolly@free.fr.
For bug reports
and support requests, you've got tools on the Project summary
page.
Copyright
The GNU General
Public License
last updated on mon Jun 15 2009