Subroutine Libraries
(NAG, IMSL, LAPACK, GSL, IT++, ...)
Created in the 1960s as an add-on to languages like Fortran, subroutine libraries were a common feature of early technical computing. But the release of Mathematica in 1988 ushered in a new era, in which technical computing could immediately be done in a single unified system, without having to assemble collections of subroutines.
After over two decades of growth, Mathematica now contains by far the world's largest integrated web of algorithms—including efficient versions of essentially every corner of functionality found in every standard subroutine library. And through new generations of algorithms made possible by its immediate ability to call on symbolic, geometric, discrete and other methods, Mathematica's algorithms routinely outperform the traditional algorithms found in subroutine libraries.
Mathematica dramatically simplifies access to sophisticated numerical methods—not only by providing an integrated interactive environment, but also through its unique methodology of automatic algorithm selection, which robustly selects optimal methods for particular problems, while allowing experts to choose specific named methods.
Mathematica Features Typical of Subroutine Libraries:
- Thousands of state-of-the-art built-in algorithms from all areas »
- Fully scalable architecture supporting arbitrary data sizes
- World's broadest selection of built-in mathematical functions »
- Full support for high-efficiency linear algebra »
- Integrated support for equation solving, differential equations, optimization, etc. »
- High-performance statistics, data manipulation, data analysis, etc. »
- Robust support for all standard and emerging computer platforms »
- Support for modern distributed computing environments »
- Platform-optimized support based on long-standing vendor relationships >>
- Millions of users worldwide
- API for calling Mathematica from external code »
- Deployment options for distribution of Mathematica-based code
Key Advantages of Mathematica Compared to Subroutine Libraries:
- Single integrated system covering all areas
- Continually developed state-of-the-art and original algorithms in all areas
- Robust real-time automatic algorithm selection »
- Automatic updating to the latest algorithms without changing user code
- Highly detailed method options and plug-in architecture for expert customization >>
- Full automatic support for precision validation and arbitrary precision »
- Functions seamlessly allow all types of input (real, complex, integer, symbolic, etc.) »
- Consistent handling of non-numeric values, overflow, exceptions, etc.
- Consistent unified design and full documentation of all functions »
- Interactive environment for immediate testing and results
- Convenient built-in monitoring functions for tracking algorithm progress »
- Integrated world-class visualization, graphics, and interactive interface creation »
- Full support for exact and symbolic as well as numerical computation
- Symbolic language allowing arbitrary formulas to be used as arguments to functions »
- Input and output in traditional mathematical notation »
- World-class testing organization ensuring accuracy and quality of algorithms
- Full technical support available
Interoperability with Subroutine Libraries:
- API with bindings for C/C++, Java, Fortran, .NET, etc. »
- Serialization of symbolic objects and structured data »
- Third-party tools for generation of optimized C++ and Fortran code
Interesting Tidbits:
- Functions like NDSolve are equivalent to hundreds of routines in multiple subroutine libraries
- Mathematica internally uses routines from many top subroutine libraries
- Mathematica is usually the first computational system to run on new hardware platforms
- Many algorithms in Mathematica are now found with Wolfram Research's unique automated algorithm discovery methods
See Also Analyses On:
- Programming Languages
- Numerical Matrix Systems
- Optimization Software
- Statistics Packages
- Graph Visualization