The Wolfram Technology Guide


Mathematica: Glossary of Technologies

The Wolfram Technology Guide is a glossary of important and often unique Mathematica technologies, relating them to practical advantages for users. This summary page gives definitions and explanations for each technology. Clicking any title will give you the full entry for that technology, with graphical examples.

Check back. More definitions and examples are being added.


64-Bit Computing
Traditionally, operating systems have been 32-bit: able only to provide unique addresses for less than 232 bytes, or about 4.3GB of memory. Instead, new operating system releases from all major vendors now enable 64-bit addressing--making the memory limit 264 bytes, or about 18,000,000,000GB, although current hardware will only support a lower limit such as 242.

Mathematica 5.2 pioneered all-platform support for 64-bit technical computing--implementing 64-bit memory addressing and 64-bit long-number partitioning. This first reflects Wolfram Research's leading porting capabilities as well as a commitment to delivering rapid support for the latest computing technology.

These enhancements make Mathematica the ideal platform for solving large problems:
Its 64-bit support means that there's effectively no memory barrier.
Long numbers are now broken into 64-bit rather than 32-bit lengths for processing, enabling better performance.
Sparse and packed array technology introduced in Mathematica 4, 5.0, and 5.1 made computations highly memory efficient.
Computational speed-ups beginning with Mathematica 5 have improved some calculation times as much as 1000-fold.
Optional grid versions of Mathematica are available to distribute computations in parallel over multiple processors or computers.

Adaptive Plot Refinement (APR)
Adaptive plot refinement (APR) fine-tunes graphics plotted in Mathematica. The result is improved smoothness, better intelligibility, and a reduction of artifacts compared with standard graphics programs.

When plotting a function, Mathematica automatically analyzes that function to make sure the image is smooth and easy to understand while preserving as much information as possible. Techniques used include adaptive resampling and automatic selection of optimal plot ranges, as well as system-wide support of regions and discontinuous functions.

Automatic Algorithm Selection (AAS)
Automatic algorithm selection (AAS) is the underlying technology that enables Mathematica to select and apply the best algorithm(s) for a given task.

System-wide implementation of AAS is unique to Mathematica and a key distinguishing feature: other technical computing systems make the user specify a single algorithm (not just the task) by hand, often from a confusing array of possibilities. Get the selection wrong and your computation could fail or, worse still, produce an inaccurate answer.

That's why AAS capabilities are crucial for enabling users to get reliable results quickly--even without a specialist's algorithmic knowledge. And for the specialist, Mathematica's ability to perform AAS mid-calculation can optimize a computation beyond what could be manually selected.

Mathematica pioneered AAS in its first release in 1988. Since then, the range of available and implemented algorithms, the sophistication of selection, and the number of functions for which AAS operates have all greatly increased.

Autovectorizing
Autovectorizing is the capability of an operation to apply automatically to an entire vector, matrix or array--rather than just a single element.

Autovectorizing operations are common in Mathematica--both for built-in capabilities and as an attribute for user specified functions.

Operating on all the data at once reduces the number of top-level calls to Mathematica, replacing them with optimized internal routines. This optimization includes the use of CPU-specific vector capabilities where available.

A further benefit of autovectorizing is cleaner, easier-to-read problem specification.

Common Subexpression Detection and Collection
Before evaluating a large expression, Mathematica often tries to identify common subexpressions, which it collects and caches in linear time to avoid repeated work and improve accuracy. This technique can significantly cut both the computation time and the memory footprint for large, complex computations. Note that numerical-precision control is implemented to work with common subexpression collection and caching.

Document-Centered Interface (DCI)
Mathematica notebooks are today's most sophisticated manifestation of the document-centered approach to user interfaces and are a departure from the normal dialog-box-based approach. With a document-centered interface (DCI) approach, control elements, their associated specifications, and structural information all reside together inside the document itself alongside the user data--text, typeset math, graphics, interface elements, programs, and so forth.

As well as providing an optimized, highly interactive environment for performing and presenting technical work, the notebook structure has proved ideal as a superset container for technical information, a hub for an individual's or group's technical knowledge.

Most application software separates users from developers. With the DCI approach this is no longer necessary: users working on a problem are automatically creating a notebook document that is itself an application to utilize in solving similar problems in the future.

Dynamic Type Detection (DTD)
Dynamic type detection (DTD) is the technology by which Mathematica's functions automatically analyze the input given to them and act accordingly.

For example, Mathematica's multiplication operator is overloaded to handle both symbolic and numeric input with intelligent coercion for mixed types. It detects and multiplies symbolic variables, real and complex numbers, integers, vectors, matrices, tensors, and many other objects without requiring users to do explicit typing, or to remember different function names that apply to different types.

Dynamic Type Switching (DTS)
Computations in purely numerical systems often fail because their number representation is insufficient for the task--for example when IEEE floating-point overflow or underflow occurs, or when complex numbers appear in a floating-point computation.

With dynamic type switching (DTS), Mathematica detects these problems and switches number systems without user interaction. Mathematica can therefore often return accurate results in situations where non-Mathematica, numerical-only systems fail.

An example of DTS is found when using the numerical differential equation solver NDSolve. An initially real solution might become complex during the calculation, automatically triggering Mathematica's just-in-time (JIT) compiler to recompile optimized byte code.

Event Detection and Event Localization
Event detection enables differential equations to be solved differently in different regions, with boundaries between regions determined dynamically by features of the solutions obtained. This feature's flexibility is a unique capability of Mathematica.

Typical applications include:
Modeling hybrid systems with physical constraints where an event triggers swapping between different regimes
Solving only until some logical or functional condition is satisfied
Collecting samples of solutions at particular events, or for Poincaré sections

Expression-Based Document Generation (EBDG)
Every Mathematica notebook is itself a Mathematica expression--in other words, a program. This means that Mathematica can generate and manipulate all aspects of a notebook programmatically.

Expression-based document generation (EBDG) is a unique Mathematica architecture that--combined with capabilities such as publication-quality typesetting, spell checking, and import and export options--makes Mathematica ideally suited for automatic report generation, on-the-fly creation of customized quotes for customers, and even fully dynamic websites (using webMathematica).

Extended-Precision Computation (EPC)
Mathematica's extended-precision computation (EPC) supports almost any length of integer and precision of real or complex numbers--unlike non-Mathematica, numerical-only systems, which work to machine precision or around 16 digits.

As well as being required for high-precision answers, EPC is often a crucial factor in achieving accurate low-precision answers because intermediate computation stages can drain precision--sometimes dramatically. Complementing EPC, precision tracking is also built into Mathematica.

gigaNumerics
gigaNumerics is the unique set of evolving Mathematica technologies that deliver high-speed numerical computations. Because of Mathematica's generality and accuracy checking, numerical calculations would normally have suffered speed penalties because a number of extra operations have to occur each time a calculation is executed.

In fact, Mathematica now regularly outperforms specialist numerical systems. This is achieved by using the most modern algorithms--often developed by Wolfram Research--and an unique set of technologies, including automatic algorithm selection, precompilation, packed arrays, processor optimization, symbolic preprocessing, and vectorization. For even higher performance, gridMathematica delivers an optimized parallel Mathematica environment for modern supercomputers.

Interior Point Method
The interior point method is an advanced optimization technique pioneered as a built-in feature in general technical computing by Wolfram Research.

In general, the inclusion of state-of-the art advanced solvers, coupled with Mathematica's packed-array technology and automatic algorithm selection, lets users tackle much larger problems than with other packages--efficiently and with more accurate results.

Interpolating Objects
Mathematica is unique in returning the results of numerical superfunctions (e.g. NDSolve) as symbolic functions representing the interpolation through ordinates taken--the interpolating object. This is in contrast to purely numerical systems, which return an unprocessed list of numbers.

Interpolating objects make results easily and immediately usable: for example, plotting, differentiating, or finding a specific value (whether or not it was picked for evaluation during the computation) can all be performed with a result as if it were any built-in mathematical function.

MathML
The MathML standard for describing mathematical expressions, adopted by the World Wide Web Consortium (W3C), is based on key ideas from Wolfram Research's typesetting technology. This close relationship between the web's markup standard and Mathematica's internal representation put Mathematica in a unique position. As a result, a full-featured authoring and evaluation environment for documents with MathML expressions is fully integrated into the flexible, extensible technical document authoring system built into Mathematica, Mathematica CalcCenter, and Publicon.

Why did the W3C drafting committee turn to Mathematica's box structure as the starting point? Wolfram Research had done many years of research into the representation, interpretation, and display of mathematical expressions as part of the development process of Mathematica. That effort gave us a thorough understanding of the difficult issues involved in fully integrating presentation and evaluation within a single environment.

Multicore Support
Multicore chips have more than one CPU core; multiple-processor computers have more than one CPU chip. Both are being introduced by manufacturers to speed up tasks by splitting threads or processes among different processors so that they can be performed in parallel.

Mathematica supports threading of numerical linear algebra across multiple-CPU or multicore computers.

In addition, Mathematica's notebook front end is a separate process from its computational kernel, allowing them to run on separate cores or CPUs. This gives a responsive interface even when the kernel core is under full load.

gridMathematica, Mathematica Personal Grid Edition, and the Mathematica application Parallel Computing Toolkit are options that let users tie together multiple computers, each containing one or several CPUs and/or cores.

Notebook Document
In 1988 Wolfram Research invented the notebook document. Unlike other documents, notebooks are live--combining interactive typeset inputs and outputs, 2D and 3D graphics, calculations, Mathematica programs, text, and other elements.

Mathematica notebooks are automatically reformatted for screen or printout--optimizing fonts and layout for each medium. Mathematica provides hundreds of options that allow users to give notebooks any desired look and generate full publication-quality documents.

Notebooks are the ideal hub for all of an individual's or group's technical work, able to encompass the structure of almost any file or data format, and with import and export capability for over 70.

Numerical-Precision Control--Specified Input Mode
Numerical-precision control (NPC) is fundamental to Mathematica's handling of numerical computations, ensuring unrivaled trustworthiness of numerical results.

In specified input mode, you give Mathematica input to a certain precision, and Mathematica adjusts subsequent computations to preserve as much precision as possible. At the end, digits are only displayed that can be justified given the input precision and the sequence of computations performed. For certain computations the output precision exceeds the input precision.

Without precision control, even simple numerical computations can return vastly inaccurate results. NPC technology uses advanced heuristics and precision tracking--switching to higher-precision computations, adjusting the step size in iterative computations, or changing algorithms on the fly when it expects a different approach to give a more accurate answer.

Numerical-Precision Control--Specified Output Mode
Numerical-precision control (NPC) is fundamental to Mathematica's handling of numerical computations, ensuring unrivaled trustworthiness of numerical results.

In specified output mode, you specify the output precision and Mathematica automatically adjusts the working precision through the computation sequence to reach this precision, assuming the input precision was sufficient for this to be possible. Note that working precision needed during a calculation is often much greater than that justifiable at the end. In many cases, Mathematica automatically takes this into account, stepping up precision mid-calculation where necessary.

This technology is unique to Wolfram Research, with key algorithms developed in-house.

Numerical-Precision Tracking (NPT)
Any numerical package or programming language can give numerical results up to machine precision, but only Mathematica will also automatically track and communicate how many digits of the result are accurate--using numerical-precision tracking (NPT) technology. This gives almost complete protection from numerical errors, be they round-off errors or from badly conditioned systems.

Packed Arrays
Packed arrays are the unique Mathematica technology used to seamlessly integrate compacted arrays and optimized computations that include them. Computations to be performed on machine-precision matrices and arrays are analyzed to decide whether packing them into a specialized format will improve the performance of the computation. This process of analysis and application occurs transparently, with outputs presented the same way regardless of which methodology Mathematica chooses.

Mathematica automatically compiles complicated functions that will be repeatedly applied to such packed arrays. This lets Mathematica perform large-scale linear algebra computations as fast as or faster than specialized numerical systems.

Piecewise Functions
Mathematica 5.1 introduced the unique capability of system-wide support for piecewise functions--functions with different definitions for different regions. More than 100 enhancements to solving, calculus, and other capabilities were added for fully automatic handling of piecewise functions.

Piecewise functionality is of wide-ranging importance across a number of different fields, including many areas of engineering (particularly hybrid systems) and education.

Processor Optimization
Processor optimization involves utilizing compilers and libraries specialized for specific processors to improve performance. Wolfram Research's industry-leading release engineering, and its extensive work with hardware vendors, usually equip Mathematica users first with support and optimization for the latest processors. Mathematica is the leading system for frontier research, so leading deployment on the latest hardware is a key goal for Wolfram Research.

Selective Method Override
Setting a selective method override in a Mathematica function means manually narrowing down how Mathematica should carry out the computation to a particular method or class of algorithms, though not its order or sub-algorithm. This is a halfway point between letting Mathematica automatically select the best option using AAS or manually specifying everything.

For example, ExplicitRungeKutta is a selective method override specifiable in the numerical differential equation solver NDSolve. Choosing it enables all the different orders of Runge-Kutta methods to be utilized under AAS control but prevents the use of other methods, such as Adams or BDF.

Semantic-Faithful Typesetting (SFT)
Semantic-faithful typesetting (SFT) combines the elegance of traditional mathematical typography with the precision of a computer language. SFT is unique to Mathematica and its capabilities are immediately apparent: expressions input in a fully typeset form can be evaluated, evaluations are automatically typeset--and can then subsequently be edited, re-evaluated, exported, and so forth.

Delivering SFT is nontrivial (it required seven years of Wolfram Research development) because some mathematical notation is ambiguous, there are many cases where one mathematical meaning has multiple representations, and because of the complexity of working with expressions from a standard keyboard. Other difficult issues include line-breaking, subexpression selection and evaluation, and heuristic conversion from traditional non-semantic typesetting systems such as TeX.

Interactive, evaluatable, publication-quality typesetting is available in all Wolfram Research products, including Mathematica, Mathematica CalcCenter, Publicon, Mathematical Explorer, A New Kind of Science Explorer, and more.

Serializable Objects
A serializable object is one that can be converted into a string of characters and recreated by reading that string back. Almost all objects in Mathematica are serializable--expressions, programs, graphics, typeset mathematics, user interface elements, even complete notebooks. That's because all these Mathematica objects are represented in a uniform way by symbolic expressions; and, being represented in a textual form, symbolic expressions are serializable.

Most aspects of Mathematica have been serializable since its introduction in 1988, but the concept has recently become widely acknowledged with serializable Java and C# objects. Because objects are serializable, MathLink can transmit them to other Mathematica processes--the basis of gridMathematica.

Significance Arithmetic
Significance arithmetic, a basis for Mathematica's high-precision arithmetic, is a powerful technique that offers many advantages over fixed precision (such as the floating-point or integer arithmetic used by purely numerical technical software).

It not only keeps track of numerical results, but also uses error propagation to track their accuracy. In this way, numerical computations can carry accuracy and precision information with them, returning in the end a numerical quantity together with its estimated uncertainty.

This means that with Mathematica, unlike other software, you always get both a numerical result and the knowledge of to how many digits it is correct.

Sparse Arrays
Sparse arrays are those in which most of the elements (sparse matrices, or vectors, or tensors) are zero or--more generally--a common value.

Mathematica's SparseArray technology offers a uniquely efficient way to store and manipulate large sparse objects. In fact, Mathematica can perform very-large-scale linear algebra operations at higher speeds--and with smaller memory footprints--than specialized numerical systems can.

Subsystem Autoseparation
In some cases it is advantageous to split a system of differential equations into subsystems so that each can be solved with the most appropriate method, symbolic or numeric. When you manually specify a splitting method and composition, Mathematica automatically splits the equations and recombines them for you.

Mathematica is unique among mainstream technical computing systems in supporting such separation.

Symbolically Enhanced Numeric Computing
Symbolically enhanced numeric computing is the ability of Mathematica to apply symbolic transformations automatically to an ostensibly numerical computation to optimize computation time and accuracy--or to make it directly computable at all.

Often a numerical algorithm requires a particular form of expression with which to operate. In non-Mathematica systems, that specific form must be input to enable computation; with symbolically enhanced numeric computing, Mathematica automatically transforms the provided expression to reach this required form. The benefit of this approach is crucial for ease of use: it enables a wide range of problems to be input without a user's (sometimes complex) pencil-and-paper transformation beforehand.

Additionally, this intelligent expression transformation cuts unnecessary computations by getting expressions into the easiest-to-evaluate form, sometimes even avoiding a failure of the computation where the untransformed expression would have exhibited numerical instability.

Mathematica is unique in being equipped to take this approach because of its mixed symbolic-numeric architecture and the range of its symbolic transformation capabilities.

SymbolicXML
SymbolicXML is Mathematica's lossless representation of XML documents.

Mathematica is naturally suited to representing and working with XML, given its tree structure and uniform expression model. But it is SymbolicXML that makes the process of working with XML documents seamless--enabling automated import and export, and providing a representation that is straightforward to work with within Mathematica.

As well as being the most comprehensive solution for analyzing data contained in XML documents, Mathematica is commonly used for working with XML documents themselves because of its highly developed rule-based transformation language.

Task-Oriented Superfunctions (TOSF)
Mathematica's task-oriented superfunctions (TOSF) each subsume the functionality of a large number of algorithm-based functions in non-Mathematica systems.

Unlike all other computation systems, Mathematica's functions are "task-oriented"--named by which task they perform, not which algorithm(s) they use to perform them.

This distinction particularly affects high-level, multistage, multialgorithm tasks, handled by "superfunctions" in Mathematica. Take numerical differential equation solving as an example. In Mathematica, NDSolve is all you need to use. Applying this TOSF analyzes your equation and decides (unless you set an override) which of its dozens of algorithms and controller methods to deploy to get you an accurate answer quickly--sometimes switching mid-calculation for further optimization.

By contrast, non-Mathematica computation systems make you analyze your equation manually to determine which function to apply--e.g., where in Mathematica you use NDSolve, in Matlab you must choose among ode45, ode23, ode113, ode15s, bvp4c, pdepe, and so on. Get the selection wrong and your computation could run inefficiently, fail altogether, or, worse still, produce an inaccurate answer. And there's no switching mid-calculation.

Another crucial benefit of the TOSF approach is future-proofing: algorithmic innovations enable TOSF to perform better without the form of the input or output being affected. Compatibility is therefore maintained while having the latest computational technology under the skin.

Transparent Auto-Compilation (TAC)
When carrying out large repetitive numerical computations, either requested by the user directly--for example creating a table--or implicitly--solving a differential equation numerically--Mathematica automatically generates optimized byte code to speed up the computations, a process known as just-in-time compilation.

The instructions created are chosen to be close to those found in the machine code of a typical computer, and can thus be executed quickly. For large expressions, compilation can speed up execution by a factor of 20 or more. Many Mathematica functions, for example NIntegrate, use compilation by default, while others, for example the Table command, invoke compilation dynamically, based on the type and complexity of the expression evaluated and the number of evaluations requested.

Uniform Expression Model
Mathematica handles many different kinds of concepts: mathematical formulas, lists, and graphics, to name just a few. Although they often look very different, Mathematica represents all of these in one uniform way--as expressions.

This uniform expression model is a crucial unifying principle in Mathematica. The fact that every object in Mathematica has the same underlying structure makes it possible for Mathematica to cover so many areas with a comparatively small number of basic operations, and for each function (whether built-in or user defined) to be so powerful.

For example, there's no need for a special graphics manipulation language in Mathematica: the uniform expression model means that like every other kind of expression, graphics can be manipulated by "standard" expression manipulation functions. In a non-Mathematica system, graphics would have a different representation type from numerical quantities, so without special adaptation would need their own set of operations for manipulation.

Universal Database Connectivity (UDC)
Universal database connectivity (UDC) is the capability for interactive I/O with almost all databases, including Oracle, Access, MySQL, and Microsoft SQLServer.

Mathematica's combination of computational and language abilities makes it uniquely suitable for operating at a high level with data. Moreover, UDC has been built in ever since Mathematica 5.1--a first among technical computation systems.

Web Services
Web services technology provides programmatic interfaces that are used for application-to-application communication over the web--allowing users to integrate their applications with data and functionality provided from varying platforms and languages.

Mathematica was the first technical software to be fully integrated with web services, enabling users to call web services from Mathematica in a completely transparent way. This makes the whole universe of existing and future web services an automatic extension to the Mathematica environment.



© 2009 Wolfram Research, Inc.  | Sign up for our newsletter:   | Glossary