Download the latest draft of the NMC Technical Specification here.
Executive Summary
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.)