Efficient support for complex numbers in Java

One glaring weakness of Java for numerical programming is its lack of support for complex numbers. Simply creating a Complex number class leads to poor performance relative to Fortran. We show in this paper, however, that the combination of stich a Complex class and a compiler that understands its semantics does indeed lead to Fortran-like performance. This performance gain is achieved while leaving the Java language completely unchanged and maintaining full compatibility with existing Java Virtual Machines. We quantify the effectiveness of our approach through experiments with linear algebra, electromagnetics, and computational fluid-dynamics kernels.

[1]  George K. Thiruvathukal Java Grande Forum Report: Making Java Work for High-End Computing , 1998 .

[2]  Jeffrey D. Ullman Elements of ML programming - ML 97 edition , 1998 .

[3]  Samuel P. Midkiff,et al.  Fortran 90 in CSE: a case study , 1998 .

[4]  Simon Peyton Jones,et al.  Unboxing using Specialisation , 1994, Functional Programming.

[5]  Michael Philippsen,et al.  Large-scale parallel geophysical algorithms in Java: a feasibility study , 1998 .

[6]  Vivek Sarkar,et al.  Automatic selection of high-order transformations in the IBM XL FORTRAN compilers , 1997, IBM J. Res. Dev..

[7]  Wei Li,et al.  Just‐in‐time optimizations for high‐performance Java programs , 1997 .

[8]  刘尚平 H~p(0 , 1982 .

[9]  Henri Casanova,et al.  Java Access to Numerical Libraries , 1997, Concurr. Pract. Exp..

[10]  Siddhartha Chatterjee,et al.  An Evaluation of Java for Numerical Computing , 1998, ISCOPE.

[11]  Ronald F. Boisvert,et al.  Developing numerical libraries in Java , 1998, Concurr. Pract. Exp..

[12]  Julian Dolby Automatic inline allocation of objects , 1997, PLDI '97.

[13]  Alain Deutsch,et al.  On the complexity of escape analysis , 1997, POPL '97.

[14]  W. Press,et al.  Numerical Recipes in Fortran: The Art of Scientific Computing.@@@Numerical Recipes in C: The Art of Scientific Computing. , 1994 .

[15]  Robert A. MacLachlan CMU Common Lisp User''s Manual , 1992 .

[16]  Michael Philippsen,et al.  Large-scale parallel geophysical algorithms in Java: a feasibility study , 1998, Concurr. Pract. Exp..

[17]  Samuel P. Midkiff,et al.  From flop to megaflops: Java for technical computing , 1998, TOPL.

[18]  David A. Padua,et al.  Beyond Arrays - A Container-Centric Approach for Parallelization of Real-World Symbolic Applications , 1998, LCPC.

[19]  William H. Press,et al.  Numerical Recipes in FORTRAN - The Art of Scientific Computing, 2nd Edition , 1987 .

[20]  Jerrold L. Wagener,et al.  Fortran 90 Handbook: Complete Ansi/Iso Reference , 1992 .

[21]  Benjamin Goldberg,et al.  Escape analysis on lists , 1992, PLDI '92.

[22]  Geoffrey C. Fox Java for computational science and engineering – simulation and modeling II , 1997 .