Last updated Jul 8, 2005
The ObjectOriented Numerics Page
Quick Index
The ObjectOriented Numerics
List is a forum for discussing scientific
computing in objectoriented environments.
An archive is
available.
To subscribe or unsubscribe, please visit
this page.
Freely available libraries

 Linear Algebra
 PyMat,
a matrix package for the Python programming language.
 JAMA,
an elementary linear algebra package for Java.
 MTL,
the Matrix Template Library. Dense and sparse matrices and
vectors; banded, symmetric, triangular matrices; basic
algorithms. C++.
 uBLAS,
BLAS in C++ with expression templates.
 tvmet,
a C++ library for "tiny" vectors and matrices with
expression templates.

GMM++,
generic C++ template library for sparse, dense and skyline matrices,
with solvers from ITL.
 dnAnalytics,
C# numerics library, linear algebra, BLAS interface.
 MET,
a C++ matrix library with expression templates,
which eliminates the overhead of overloaded operators.
 SL++,
the Scientific Library project. Will provide matrices, random
numbers, complex, quaternions, plotting, and FFTs. C++.
 Seldon, C++ library
for linear algebra with BLAS interface. Many matrix types (sparse, symmetric,
hermitian, etc.) are supported.
 ALP,
linear and polynomial algebra. Vectors, matrices, polynomials.

SVMT:
E. Robert Tisdale's proposal for a standard
C++
Scalar, Vector, Matrix and Tensor Class Library (with
implementation). Note: this is a proposal, not an official
standard.

GNUSSL
[ftp only], the GNU Scientific Software Library. Linear algebra
and arrays. C++.
 CPPLapack,
C++ wrapper for BLAS and LAPACK.
 Lapack++,
C++ wrapper for BLAS and LAPACK.

IML++
A C++ template library for numerical iterative methods.

MV++ Numerical Matrix/Vector Classes in C++

SparseLib++
A library for sparse matrix computations, including the Sparse BLAS
(Basic Linear Algebra Subprograms). C++.

ISIS++,
an objectoriented framework for solving sparse linear systems of equations.
C++.

ARPACK++,
a C++ template library for solving largescale standard and
generalized eigenvalue problems.

The
Template Numerical Toolkit (TNT) for linear
algebra is a successor
to the Lapack++,
Sparselib++,
IML++, and
MV++ packages.
Its goal is to
integrate these ideas into a generic algorithmic library, supporting
generic userdefined data types, and increasing its functionality.
C++.

LinAlg, basic linear algebra and optimization classes.
C++.

CAM C++ Class Library (Matrix, vector, and graphics classes)
 Newmat, a C++ matrix library
(docs,
download)
 CLHEP
includes matrix classes, random number generators for the High Energy
Physics (HEP) community. C++.
 BPKIT, Block
Preconditioning Toolkit for iterative solution of linear systems. Callable
from C++, C, or FORTRAN.
 Arrays and Images
 FreePOOMA
framework for scientific computing on sequential and parallel computers.
C++.
 The Blitz++
class library: Array and Vector classes which rival Fortran's
performance. C++.

The AIPS++ Array and Image Classes
(Astronomical Information Processing System). C++.

Daixtrose, a
generalpurpose expression template engine.

PETE,
an expression templates library  add expression templates to your own array
class.

SCTL (BlueSail), C++,
arrays, matrics, vectors, sparse, rotations.

NumPy, Numerical extensions to Python.

VIGRA,
generic computer vision/image processing library.

CPPIMA
A C++ image processing library

LIMP, Large Image
Manipulation Program

Image Restoration and Inpainting, C++ library for image restoration.

valarray<Troy> [ftp only], approximation of the
valarray<T>
class described in Ch. 26 of the ANSI/ISO C++ Standard.
Uses expression templates for efficient evaluation.

Image Understanding
Environment (IUE), a DARPA project. C++.
 WAILI,
a wavelet transform library in C++.
 Neural Networks, genetic algorithms, machine learning, data mining
 HighEnergy Physics and Quantum Chemistry
 Multiprecision, arbitrary precision data types

NTL, arbitrary length
integers, vectors/matrices/polynomials over integers and over finite
fields.

EXTNUM,
version of double which has the same number of mantissa bits
as IEEE 754, but extends the exponent to have range from
10^^{646456993} to 10^^{646456992}.

CLN,
an extensive number library. Arbitrary precision integer, float,
rational, polynomials, complex, modular integers, transcendental
functions, assembly language kernels for some CPUs.

MUNTL,
Multiprecision unsigned number template library (C++).

MPFUN++, a multiple precision floating point computation
package in C++.

LiDIA,
A library for computational number theory. Provides a collection of highly
optimized implementations of various multiprecision data types and
timeintensive algorithms.
 Apfloat, a C++
High Performance Arbitrary Precision Arithmetic Package
 hfloat,
An arbitrary precision package, optimized for very large (> 1000)
(decimal) digit numbers.

fPoint,
a C++ class which helps convert floatingpoint arithmetic to
fixedpoint arithmetic by recommending range and precision
requirements.

doubledouble, a quadprecision (approximately 30 decimal place) floating point
arithmetic class.
 Differential Equations

Rheoolef,
finite element environment in C++.

EXPDE,
a C++ library for solving partial differential equations on
semiunstructured grids. Parallel.

PZ,
a C++ library for finite elements. 13 dimensions with hpadaptivity,
continuous or discontinuous, variety of matrix formats.

MBDyn,
multibody dynamics analysis in C++. Builtin parallelization
via MPI/Metis.

P2MESH,
2D finite volume/finite elements, C++ library designed for fast
prototyping of highperformance PDE solvers.

Femlisp, a Common Lisp framework for
Finite Element Methods.

GETFEM++,
a C++ finite element library, generic, arbitrary dimensions.

MOUSE, a
C++ library for finite volume computations on unstructured
grids.

DEAL,
a C++ library for adaptive finite elements and error estimation.
Supports SMPs.

ODE++, a class library for ordinary differential equations.
Explicit and linearimplicit ODE systems, IVP and BVP parameters,
various solvers (RungeKutta, multistep, BDF).
[English]
[Deutsch]
 PETSc,
objectoriented software for partial differential equations
(programmed in C)
 Diffpack,
partial differential equations in C++. ($)
 TIDE:
Classes for Ordinary Differential Equations. Provides vectors
and matrices, extrapolation integrator for ODEs, sparse matrix
classes, eigenvalues, shooting for two point BVPs, nonlinear
solver, continuation

BoxLib/CCSE Applications Suite
(docs), a class library supporting adaptive mesh refinement (AMR)
schemes for computational fluid dynamics.

OVERTURE, a C++ class library for solving PDEs in complicated
domains. Includes adaptive mesh refinement and overlapping grids.

FEMLIB (ftp,
www)
A Finite Element package [ftp only] by Michael Tiller
(BROKEN LINK, no longer supported)
 Automatic differentiation and interval arithmetic

Gaol, C++
library for interval arithmetic. Includes methods for interval
constraint solvers.
 FADBADTADIFF,
a C++ package for automatic differentiation using
any arithmetic (double or interval) by operator overloading.
 PROFIL/BIAS [English]
[Deutsch],
a C++ interval arithmetic class library.
 Visualization
 Graph Theory/Combinatorics

Boost Graph
Library, a general purpose, generic C++ library for graph data
structures and graph algorithms.

GTL,
the Graph Template Library (C++).

LEDA, a C++ library
for graph theory and combinatorial computing.
 Language interoperability/scripting

CPPF77
(cppf77.zip),
a utility for interfacing C++ and Fortran 77 programs.

Paul Dubois's code for
interfacing Python and C++

SWIG, generates Perl, Python, Tcl,
Java, Eiffel and Guile wrappers for C++ libraries.
 SILOON
(Scripting Interface Languages for ObjectOriented Numerics),
toolkits and runtime support for building scripting interfaces
to existing numerical codes in C, C++, and Fortran. Generates
script bindings for Perl, Tcl, and Python.

Matwrap, a tool which generates C++ wrapper code for
matrixoriented scripting languages such as Matlab 5, Octave, and tela.
 Transforms

FFTPACK++,
a C++ wrapper for FFTPACK complex routines using LAPACK++ Matrix and Vector
classes.

The FXT library of transforms.
FFTs, Hartley, Number theoretic, Walsh, others coded in C++.
 Optimization
 COOOL, an
objectoriented optimization library

OptSolve++,
a C++ optimization library from TechX. (commercial)

StarFLIP,
optimization library for combinatorial problems with fuzzy constraints
(C++)

LM (LevenbergMarquardt) implementation in Java for nonlinear least squares problems.
 Miscellaneous
 Tools

TAU
(Tuning and Analysis Utilities), explicit instrumentation of
C++ libraries for profiling and tracing. For both serial
and parallel codes.
 Compilers

KAI C++, an optimizing
compiler from Kuck & Associates (now a division of Intel).
Unfortunately, this product has been discontinued.
 The free GCC (Gnu Compiler
Collection) has a good C++ compiler which can be used under unix
or windows (with CygWin).
 Intel's C++ compiler.
 The Portland Group C++ compiler
 The MPC++,
a massively parallel, message passing, metalevel processing C++.

Titanium
(free),
a dialect of Java for largescale scientific computing.

Diffpack, a development
framework for multiphysics simulations (C++).

VectorSpace provides
vs.lib (integrable/differentiable objects in C++) and fe.lib
(an objectoriented finite element library).

NMath
provides vector, matrix, complex numbers and math functions
for the .NET platform (e.g. C#)

macstl,
std::valarray implementation using SIMD opcodes
(Altivec on PowerPC, SSE/SSE2 on Intel)

ExacMath library
(quad and doublequad precision floating point math),
from Floating Point Software.

Math.h++ and
LAPACK.h++
from Rogue Wave Software, Inc (LAPACK.h++ is not the same package as Roldan
Pozo's LAPACK++ listed above)
 MtxVec,
linear algebra/numerical library for Delphi and C++ Builder.
 Extreme Optimization
Library, numerical library for .NET
 MAT<LIB> (Matlab compatible
C++ Matrix Class Library)
 CXSC: A C++ Class Library for
Extended Scientific Computing
(A C++ interval methods class library)
 Siscat,
C++ software for scattered data approximation
 JNL, A numerical
language/library proposal for Java from Visual Numerics.
 LIA,GIA,ICE libraries for
interval methods in C++ from Delisoft Ltd. Includes interval arithmetic,
global optimization, and solving nonlinear equations.
 AMRES, a C++ library
for financial analysis.

POOSC 2003,
Parallel ObjectOriented Scientific Computing,
July 22, Darmstadt, Germany

Joint ACM Java
Grande  ISCOPE 2001 Conference, Stanford University, California,
June 24, 2001

Java Grande 2000,
San Francisco, California, June 35, 2000

ISCOPE'99:
International Symposium on Computing in Objectoriented Parallel
Environments, December 710 1999, San Francisco, California

POOSC'99
Workshop on Parallel/Highperformance ObjectOriented
Scientific Computing at the European Conference on
ObjectOriented Programming (ECOOP'99), Lisbon, Portugal,
June 1418.

ACM 1999 Java Grande Conference, Palo Alto, California,
June 1214.

ISCOPE'98:
International Symposium on Computing in Objectoriented Parallel
Environments, December 811 1998, Santa Fe, New Mexico

SIAM
Workshop on ObjectOriented Methods for Interoperable Scientific
and Engineering Computing, October 2123, 1998, Yorktown Heights,
New York

SciTools'98:
Workshop on Modern Software Tools for Scientific Computing,
Sept. 14  16, Oslo, Norway

POOSC'98:
Workshop on Parallel ObjectOriented Scientific Computing, Brussels,
Belgium, July 2024 1998.

ACM 1998
Workshop on Java for HighPerformance Network Computing,
Palo Alto, California, February 28 and March 1, 1998.

International Scientific
Computing in ObjectOriented Parallel Environments (ISCOPE'97),
Marina del Rey, California, December 811, 1997.

Physics Computing'97,
Santa Cruz, California, August 2528, 1996. Included a session on
objectoriented methods.

ACM 1997 Workshop on Java for Science and Engineering Computation
June 2127, 1997.

SciTools'96:
Workshop on Modern Software Tools for Scientific Computing,
Sept. 16  18, Oslo, Norway

Object Oriented Numerics
Conference (OONSCI'96) (broken URL)
Mississippi State University, March 2729, 1996

International
Workshop on Parallel C++, Kanazawa, Japan March 1012, 1996

POOMA'96:
Parallel ObjectOriented Methods and Applications Conference,
Feb. 28  Mar. 1, Santa Fe, New Mexico
This page is maintained by
Todd Veldhuizen.
Do you know of a URL which should be on this page? Please
tell me.