Java Numerics: Main (original) (raw)
Java Numerics: Main
[Numerics Working Group] [Meetings] [Proposals] [Benchmarks] [Libraries] [Tools] [Papers] [Links]
The JavaNumerics page provides a focal point for information on numerical computing in Java. This is an activity of the Java Grande Forum Numerics Working Group, chaired by Ron Boisvertand Roldan Pozo.
**Note.**Some of the links below will take you away from NIST webspace. We are providing these links because we think they will be of interest to you; however, the views expressed and the decisions reported do not necessarily connote NIST agreement with, or endorsement of them. Further, NIST does not endorse any commercial products that may be mentioned. Please address comments about this page to [email protected]. We conform to the NIST Privacy Policy. Java is a registered trademark of Sun Microsystems, Inc.
News | Java Specification Request forFloating-Point Extensionshas been withdrawn due to difficulties in setting up an expert group.Java Specification Request for MultiArraysunder consideration. (WITHDRAWN) |
---|---|
Numerics Working Group | The goals of the Numerics Working Group of the Java Grande Forum are (1) to assess the suitability of Java for numerical computation, (2) to work towards community consensus on actions which can be taken to overcome deficiencies of the language and its run-time environment, and (3) to encourage the development of APIs for core mathematical operations. The Group hosts open meetings and other forums to discuss these issues. Reports Minutes of the Numerics Working Group meeting(November 2002) Java Specification Request (JSR): Floating-Point Extensions(October 2000) Java Specification Request (JSR): Java MultiArray Package(October 2000) (WITHDRAWN) Minutes of the Numerics Working Group meeting(June 2000) Recent Progress of the Java Grande Numerics Working Group(June 1999) Improving Java for Numerical Computation(Oct 1998) Response to Sun Proposal to Extend Java Floating Point Semantics (Sept 1998) Java Numerics Issues: Preliminary Assessment (April 1998) Presentations Working Group Report, ACM Java Grande Conference, San Francisco(Jun 1999) Working Group Report, Java Grande Panel, SC 98, Orlando(Nov 1998) Proposed APIs for Numerical Computing Complex arithmetic Multidimensional arrays Linear algebra Higher mathematical functions |
Meetings | Future Past Workshop on Java in Computational Science, held in conjunctions with the International Conference on Computational Science 2003 (ICCS 2003), Melbourne, Australia (June 2-4, 2003).5th International Workshop on Java for Parallel and Distributed Computing, held in conjunction with IPDPS 2003, Nice, France (April 22-26, 2003) Joint ACM Java Grande - ISCOPE 2002 Conference, Seattle, WA, USA (November 3-5, 2002) Java Virtual Machine Research and Technology Symposium 2002 (JVM'02), San Francisco, CA, USA (August 1-2, 2002) 4th International Workshop on Java for Parallel and Distributed Computing, held in conjunction with IPDPS 2002, Fort Lauderdale, Florida, USA (April 15-19, 2002) Workshop on Java in High Performance Computing at HPCN Eurpe 2001 Conference, Amsterdam, The Netherlands (June 25 - 27, 2001) Third Workshop on Java for High Performance Computing in conjunction with ICS'01, Sorrento, Italy (June 16-21, 2001). Joint ACM Java Grande -- ISCOPE Conference in San Francisco Bay Area (June 2-4, 2001). Includes meetings of the Java Grande Numerics Working Group on June 4. Shortcourse on Java for High Performance Computingat the Tenth SIAM Conference on Parallel processing for Scientific Computing in Portsmouth, Virginia, USA (March 11, 2001). Euro-Par 2000 Workshop on Object-Oriented Architectures, Tools and Applications in Munich, Germany (August 29 - September 1, 2000). Dagsthul Seminar on High Performance Computing in Java in Dagsthul, Germany (August 20 - August 25, 2000). Minisymposium on The Role of Java in Scientific Computing at the SIAM Annual Meeting in Puerto Rico (July 10-14, 2000). ACM Java Grande Conference in San Francisco (June 2000). Included meetings of the Java Grande Numerics Working Group on June 5. Second Workshop on Java for High Performance Computing at ICS 2000 in Santa Fe, NM (May 8-11, 2000) Workshop on Java for High Performance Computing at HPCN-Europe 2000 in Amsterdam (May 8-10, 2000) http://www.acl.lanl.gov/iscope99/ Panel at ISCOPE99 (December 1999) Panel at SC'99 (November 1999) Java for Computational Science and Engineering Minisymposium at International Congress on Industrial and Applied Mathematics (July 1999) ACM Java Grande Conference (June 1999) International Workshop on Java for Parallel and Distributed Computing (April 1999) Panel at SC'98 in Orlando (November 1998) First UK Workshop on Java for High Performance Network Computing (September 1998) ACM Workshop on Java for High-Performance Network Computing (February 1998) |
Proposals | Language Extensions James Gosling's preliminary proposal for numerical computing in Java Sun's proposal for extension of Java floating point in JDK 1.2 ... and the Java Grande Forum response Standard Classes for Numerical Computing Matrix Class Proposal of The MathWorks and NIST Multidimensional Array Class Proposal of IBM Complex and Special Functions Class Proposal of Visual Numerics Draft proposal for Java BLAS interface Visual Numerics Proposed Pure Java Implementation of java.lang.math IBM's library of correctly rounded elementary functionsintended for use with Java. Proposed extension ofjava.math.BigDecimal. |
Benchmarks | Numeric SciMarkis a composite benchmark comprising of FFT kernels, finite-difference stencils, Monte Carlo simulations, sparse matrix computations, and direct (LU) factorization. Java Grande Benchmark Suiteis a collection of low-level kernels, and applications for scientific and technical computing. Java Linpack Benchmark is a translation of the popular Linpack benchmark, originally written in Fortran. It measures the performance solving a 100x100 dense linear system. Java matrix benchmarkis a tool for evaluating the performance and stability of java matrix libraries. General SPEC JVM98 Benchmarks JMark (PC Magazine) Doug Bell's benchmark applet CaffineMark 3.0 Plasma Benchmark |
Libraries | General Numerics Apfloat is a arbitrary precision floating-point arithmetic package. ArciMath BigDecimal is an extension of java.math.BigDecimal based on IBM's Java Specification Request. Colt is a free Java toolkit containing data structures and utilities intended for high performance computing. Commons-Math The Jakarta Mathematics Library is is a library of lightweight, self-contained mathematics and statistics components addressing the most common problems not available in the Java programming language. Drej, an open-source Java library for linear and non-linear least-squares regression and regularized least-squares classification. A translation of the ELEFUNT Elementary Functions Testing Package has been ported to Java. The collection also contains extensions to java.lang.Math and new classes for numeric output formatting. IBM's AlphaWorks contains several tools of interest, including library of correctly rounded elementary functionsintended for use with Java. Ninja, a set of classes for numerically intensive Java, including complex, multidimensional arrays, and the BLAS. (RETIRED) Java Numerical Toolkit (JNT) Special functions including Bessel functions, Chebyshev series. Zero root finder Random Number generators for uniform and normal sequences of floating point numbers and long integers. Java Ultimate Math Package, a framework for arbitrary precision computations. The Java3D effort produced a matrix package for use in graphics. JMSL, a collection of mathematical, statistical and charting classes, written in 100% Java, marketed by Visual Numeric, Inc. Includes linear algebra, zero finding, splines, ordinary differential equations, linear programming, nonlinear optimization, FFTs, special functions, regression, ANOVA, ARMA, Kalman filters. JLargeArrays, a pure Java library of one-dimensional numeric arrays that can store up to 2^63 elements. JSci, a set of Java packages for linear algebra, statistics, wavelets. Includes chart/graph components and a partial MathML DOM implementation. jScience contains packages for numerical linear algebra, for computing with units (e.g., kg., sec.), and other utility operations. Jspline+is a spline approximation library for Java developed at the Institute of Computational Mathematics and Mathematical Geophysics (RAS) in Novosibirsk. It contains classes for univariate and multivariate spline approximation on scattered meshes, as well as core matrix and linear system solution classes. JTransforms, The first open source, multithreaded FFT library in pure Java. Koalog Constraint Solveris a commercial Java library for solving combinatorial optimization problems using Constraint Programming or Local Search. Least Squares Software markets the jCrunch[tm] class libraries for numerical computing. mpjavais a Java implementation of David Bailey's Fortran-based multiprecision package. The package performs multi precision floating point arithmetic with arbitrary precision level. It takes advantage of Java's inheritance facility to provide smooth transition from primitive arithmetic types. netlib has a small collection of Java numerical classes. A Numerical Library in Java for Scientists and Engineers, a book published by CRC Press, contains a CD-ROM with translation into Java of the library NUMAL (NUMerical procedures in Algol 60). ojAlgo, an open source pure Java mathematics package containing matrices, complex numbers, and optimization, with links to Jama, Jampack, and Colt. . OpsResearch has developed a freeware library of more than 450 Operations Research objects, including packages for linear programming, graph-theoretic problems, linear algebra, nonlinear equations, probability and geometry. The Orbital library is a class library providing object-oriented representations and algorithms for logic, mathematics and artificial intelligence. It includes theorem proving, computer algebra, search and planning, as well as machine learning algorithms.A set of Java classes from the book _Ordinary and Partial Differential Equation Routines in C, C++, Fortran, Java, Maple and Matlab_can be obtained from author William Schiesser. Parallel Colt, An attempt to implement fully multithreaded version of Colt. Still in early development stage. RngPack, a pseudorandom number generator library. SSJ, Stochastic Simulation in Java, provides facilities for generating random variates, computing measures related to probability distributions, performing goodness-of-fit tests, applying quasi-Monte Carlo methods, collecting elementary statistics, and programming discrete-event simulations. SuanShu, a large collection of Java classes for basic numerical analysis, statistics, and optimization. Linear Algebra, BLAS JAMA (JAva MAtrix package) provides factorizatons (LU, Cholesky, QR, SVD) and symmetric/non-symmetric eigenvalue problems. Jama is a proposed interface standard for dense linear algebra computations. The package has been relesed for comment by the MathWorks and NIST. Jampack (JAva Matrix PACKage) is a collection of cooperating Java classes for numerical linear algebra. Jampack fully supports complex matrices. Developed by Pete Stewart of the University of Maryland and NIST, Jampack is preliminary and incomplete, but is being released to see if there is sufficient interest to continue its development. Java Lapack is available from netlib at the University of Tennessee at Knoxville. This code was automatically translated from the Fortran version of the well-knowLAPACK linear algebra package using f2j. la4j is a pure Java library for linear algebra that uses many structural and object oriented patterns from the classic GoF book. The Linear Algebra component of the Java Numerical Toolkit (JNT) provides LU, QR factorizations, optimized BLAS, and sparse matrices. MTJ is designed to be used as a library for developing numerical applications, both for small and large scale computations. The library is based on BLAS and LAPACK for its dense and structured sparse computations, and on the Templates project for unstructured sparse operations. OpsResearch has developed a freeware library of more than 450 Operations Research objects which include a complete implementation of the BLAS in both serial and parallel versions. The OwlPack: a general purpose linear algebra library in polymorphic, object-oriented style Java, based on the standard Fortran LINPACK library. Not meant for high-performance applications. Rather, serves an exercise in writing scientific programs in Java in an elegant, object-oriented style, given sufficient compiler technologies to ameliorate the performance problems Steve Verrill developed one of the first Java linear algebra packages from the Fortran BLAS and LINPACK. Universal Java Matrix Package (UJMP)is an open source Java library which provides sparse and dense matrix classes, as well as a large number of calculations for linear algebra like matrix multiplication or matrix inverse. UJMP uses multiple threads for calculations for improved performance on modern hardware. Also supported are visualization methods, import/export filters for various file formats, and interfaces to Matlab, Octave and R. The vecmath package in the Java 3D(TM) API provides general matrix and vector classes (GMatrix,GVector) along with its specialized matrix classes for graphics applications. EJMLis a linear algebra library for manipulating dense matrices. Its design goals are; 1) to be as computationally efficient as possible for both small and large matrices, and 2) to be accessible to both novices and experts. These goals are accomplished by dynamically selecting the best algorithms to use at runtime and by designing a clean API. EJML is written in 100% Java. |
Tools / Utilities | Formatted I/O for Java Henrik Bengtsson's Java printf(), package provides C-like formatted output. Lava Rocks, by Charlton D. Rose, provides text parsing classes for scientific I/O, including an implementation of printf(). JNT **NumericReader()**class: readapts java.io.Reader to correctly parse floating point numbers in scientific notation. Multidimensional Arrays Multidimensional Array Class from IBM's Ninja project. (RETIRED)UCAR's MultiArray API provides an abstraction for multidimensional array access and some concrete implementations. Extended Languages for Java Robert Tolksdorf keeps a listof langauages (compilers, interpreters, preprocessors, assemblers) for the Java Virtual Machine (JVM). cj, a Java compiler that implements complex as a primitive type. HPJava, is an environment for scientific and parallel programming using Java. It is an extension of Java that incorporates data parallel programming features similar to those in HPF. It also includes Fortran-style multiarrays. Jython, an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. Timber is a static compiler for Spar/Java, a superset of Java with constructs for high-performance computing. The additions include support for data parallelism and task parallelism, tuples, multi-dimensional arrays, generic classes and interfaces through templates, complex numbers, and subscript operator overloading. zeta, a Java compiler that admits infix notation for operations on complex variables Linking Java to Other Technical Computing Packages JavaMathis free software to enable mathematical programs in Java to use the computational capabilities of existing compute engines, either stand-alone applications or Web-based client-server applications. J/Link for Mathematicaprovides tools to call Java from Mathematica and Mathematica from Java. Scientific Visualization Java 3D(TM) API is a set of classes for writing three-dimensional graphics applications. The NCSA http://imagelib.ncsa.uiuc.edu/Horizon Horizon Image Data Browser Package is a toolkit for visualizing multi-dimensional arrays in a format-independent way. Visual Numeric's JWAVEprovides a set of Netscape IFC based Java components for data visualization and numerics, using a PV-WAVE server. The Scientific Graphics Toolkit of NOAA's NOAAServer Project aims to provide Java classes to produce publication quality, object oriented graphics of scientific data. Features include user settable or automatically scaled axes, automatically self-scaling time axes, labels as movable, customizable objects, and automatic generation of legends. VisAD, from theSSEC Visualization Project, is a Java class library for interactive and collaborative visualization and analysis of numerical data. |
Related Papers, Talks | From flop to megaflops: Java for technical computing Jos� E. Moreira, Samuel P. Midkiff and Manish Gupta ACM Transactions on Programming Languages and Systems Volume 22 , Issue 2 (2000), pp. 265-295.Just when you thought your little language was safe: `Expression Templates' in Java Todd L. VeldhuizenIndiana University CS Technical Report Numer 539, July 2000Postscript Digital Journey, Work of the Java Grande Forum featured in video-taped interviews with John Gage at JavaOne 2000. Towards a Science of Reliable Programming Bill JoyACM Java Grande Conference, June 1999. Slides in Powerpoint Efficient Support for Complex Numbers in Java Peng Wu, Sam Midkiff, Jose Moreira and Manish GuptaACM Java Grande Conference, June 1999. Postscript PDF Slides in PDF An Evaluation of Java for Numerical Computing B.L. Blount and S. ChatterjeeJanuary 1999. ftp://ftp.cs.unc.edu/pub/users/sc/papers/sp-java.pdf PDF_Numerical Performance in Java_ Jon MeyerWorking Paper, January 1999. Is Java ready for computational science? Michael PhilippsenEuro-PDS'98, the 2nd European Parallel and Distributed Systems Conference, July 1998. Floating-Point Performance in Java Marc Snir, Jose Moreira, Manish Gupta, Lois Haibt and Sam MidkiffSlides from presentation at the May 1998 Java Grande Forum. PDF Developing numerical libraries in Java Ronald F. Boisvert, Jack J. Dongarra, Roldan Pozo, Karin A. Remington, and G. W. StewartACM 1998 Workshop on Java for High-Performance Network Computing, March 1998. Postscript PDF How Java's Floating-Point Hurts Everyone Everywhere W. Kahan and Joseph D. DarcySlides from presentation at the ACM 1998 Workshop on Java for High-Performance Network Computing, March 1998. PDF A Proposal for RealJava Jerome CoonenJuly 1997 |
Related Links | Borneo, a Java dialect with true support for the IEEE 754 floating-point standardJoseph D. Darcy validlab's Java numerics page David Hough List of Java Compilers and Virtual Machines Marco Schmidt Index of Scientific Java resources on the Web Mathtools.net Java at Sun Sun Microsystems Java Community Process Sun Microsystems Other NIST Projects Related to Java The Matrix Market Deli Java Collaborative Environment |
Moderated by Roldan Pozoand Ron Boisvert. Last update: 25 June 2013
This resource is sponsored by the Mathematical and Computational Sciences Division of the NIST Information Technology Laboratory. Please address comments about this page to[email protected].