SingSurf mathematical visualisation program



The program requires

  • Java version 8 or upwards.
  • JavaView mathematical visualisation software from Alas not open-source.
  • JEP 2.4.1 Java Expression Parser, a mathematical parser evaluator from my fork jep-java-gpl which contains some small customisation of the package to fit the needs of the SingSurf program.
  • The automated build process uses Apache Ant. It should be relatively easy to compile in java without ant.
  • To compile JUnit 4 must be available, but is not required to run. It is a good idea to register your version of JavaView. Registration provides a license file jv-lic.lic which should be copied to the rsrc directory, this prevents a notification message appearing.

A different version of this program is available for use with the newer 3.5/4.0 commercial release of Jep from This has a more flexible parser but is otherwise identical in operation.

Installation and running

Source code release

The source code can be downloaded from SingSurfGPL on github.

For the git source code, there are three different main classes

  • org.singsurf.singsurf.SingSurf3D the 3D version with all sub-types
  • org.singsurf.singsurf.SingSurf2D the 2D version, with setting for examining curves in the plane
  • org.singsurf.singsurf.ASurfSimp a simplified version just with the algebraic surface component

To compile first set environment variables for Jep, Javaview home directories and the Junit jar. Using 'bash' on linux use

 export JEP_HOME=C:/User/rich/git/jep-java-gpl
 export JAVAVIEW_HOME=C:/Users/rich/bin/javaview
 export JUNIT_JAR="org.junit_4.13.0.jar;org.hamcrest.core_1.3.0.jar"

the ant build file could then be run using


this will compile the java classes.

To run the main 3D version on unix


This will use the JEP_HOME and JAVAVIEW_HOME environment variable if set, otherwise it will read values specified in the script.

On windows use


The script will need to be edited to set the location of the Jep and Javaview home directories.

Both versions have variables which can be set to change the amount of memory allocated or the font sizes used.

Bundled release

A zip file with an executable jar file and all necessary files is available from Once unpacked this can be run using a single line Java command. This include the necessary Jep and JavaView files.

Once unzipped the main SingSurf3D program can be used by running either


on Linux or Macs via a command prompt or for Windows use


Javaview licence file

For best operation you should obtain a license file for the JavaView program. This prevents a red error message appearing on the main window. To obtain the file complete JavaView registration and a file will be automatically sent to you. Once you have it place it in the rsrc sub-directory of the JavaView home directory or the rsrc sub-directory of the SingSurf home directory for the bundled release.

For any installation problems contact


A rather unfinished PDF manual for the whole package.

Msqli defined