Introduction
During 2004 and early 2005, a number of customers and math vendors expressed an interest in standardizing on numerical mathematics to enable portability of algorithms. An initial working group put together a draft technical scope and charter document which received good reactions from both the vendor and user communities. This group has evolved into a formal working group, the Numerical Mathematics Consortium (NMC), with the purpose of promoting standardization of core numerical mathematics. NMC membership is open to users and vendors interested in these issues. Those interested in joining the consortium can contact any of the member companies or the consortium itself.
Background
Algorithms - The Backbone of Technical Professionals
Numerical
algorithms are the backbone of many technical pursuits. From advanced
research projects to industrial applications, algorithms provide the
brains to problem-solving engines. Many engineers, scientists, and
researchers spend months, years, even entire careers developing and
honing algorithms in efforts to provide breakthrough innovation or
create a better world around us. It is this huge investment in
intellectual property that the Numerical Mathematics Consortium (NMC)
seeks to preserve by standardizing on a core set of mathematical
functions applicable to numerical algorithms. With so much value placed
in numerical algorithms, it is critical to allow the work of these
technical professionals to be maintained across platforms, tools, and
environments, without spending a significant amount of valuable time in
"porting" or re-developing them.
Standards - A Must for Portability and Compatibility
Scientists
and engineers have a plethora of tools at their disposal to help
streamline the process of creating, optimizing, visualizing,
translating, or targeting key algorithms needed for their work. Whether
analyzing how different materials dissipate heat, or controlling an
automobile's engine performance with code running on an ECU, much of
this work can leverage a basic set of numerical functions and
libraries. However, each of the current numerical tools and platforms
have created their own set, even for the most common and core
functions, which makes it very difficult for users to move their
algorithms from one tool or platform to another. With rapidly
converging technologies in the products we use today, while combining
electronics, mechanical, physical, and multi-physics elements,
designers must be able to freely use tools that specialize in these
different domains during the process of bringing their product to
market. Without standard function definitions, engineers are trapped in
their current tool or platform with no hope of leveraging the best
aspects of each tool without long and arduous rewriting of their
algorithms.
The Numerical Mathematics Consortium is a group of
vendors, professors, and users committed to eliminating this
unnecessary reworking of algorithms. By standardizing the semantics of
functions, inputs and outputs will have the same meaning and order in
any compliant application. While the syntax may change among compliant
applications, a developer well versed in the syntax of multiple
products will no longer have to concern himself with the details of
standard parameter types and behavior. Developers will have an easier
time moving algorithms across platforms during a development cycle.
This will empower users to choose the best tool for a particular
problem and mix and match tools without worrying about all the
difficulties of learning a new product. Vendors can retain their
intellectual property without having to conform to a specific
implementation, as well as keep the advantages their individual
environments provide for specific application domains.
How Did We Get Here?
Algorithm
design tools have not always been so fragmented. In fact, when FORTRAN
was invented and released commercially as the first high-level
programming language in 1957, scientists and engineers had a jumpstart
on everyone else. FORTRAN, or Formula Translation, was specifically
designed to allow easy translation of mathematical formulas into code.
Several years after its release, FORTRAN had developed many different
variations, making it very difficult to transfer programs. These
problems led the American Standards Association, or ASA (now known as
the American National Standards Institute, or ANSI) to release its
first "Standard for a Programming Language" in 1966. This first
standardized version came to be known as FORTRAN '66 (also FORTRAN IV).
Despite this standardization, a few years later, various new versions
began to surface again, requiring the ASA to review the language again.
This version was known as FORTRAN '77. One of the major reasons for the
large-scale adoption and success of FORTRAN was attributed to its
standardization.
As modern numerical programming languages
have replaced FORTRAN as the language of choice, and as new interactive
design and development tools were introduced over the years, the
standardized representation of common functions began to disperse
again. The problem is as simple as looking at the Fast Fourier
Transform (FFT) function:
Mathcad t := 0..127 x := sin(2.p..01.t) w :=fft(x)
MATLAB t = 0:127 x = sin(2*pi*.01*t) w = fft(x)
Size of w: Mathcad = 65 MATLAB = 128
As in this case, even if the syntax is identical, the calculations yield different results!
By
definition, the FFT function of real data produces a result where the
second half of the data is the complex conjugate of the first half.
Mathcad uses this and only returns the first half of the data (i.e. N/2
+ 1). MATLAB returns all of the data (N). Both are valid
interpretations.
The Numerical Mathematics Consortium is
proposing a semantic standard for core numerical functions so as to
help solve issues such as this.
There have been some attempts
in the past to solve this problem, and some real progress has been made
in specific areas. Linear Algebra PACKage (LAPACK) and Basic Linear
Algebra Subroutines (BLAS) have become de facto standards for linear
algebra routines.
The Numerical Mathematics Consortium's
objective is to replicate the past standardization success of FORTRAN
and scale the more recent success of LAPACK & BLAS onto a broader
set of numerical mathematics functional areas that will make the
portability and reuse of numerical algorithms easy.
MATLAB ® is a registered trademark of The MathWorks, Inc.
Mathcad ® is a registered trademark of PTC (formerly Mathsoft Engineering & Education, Inc.)