MATHEMATICA TUTORIAL

Incompatible Changes since Mathematica Version 1

Introduction

Every new version of Mathematica contains many new features. But careful design from the outset has allowed nearly total compatibility to be maintained between all versions. As a result, almost any program written, say, for Mathematica Version 1 in 1988 should be able to run without change in Mathematica Version 7—though it will often run considerably faster.

One inevitable problem, however, is that if a program uses names that begin with upper-case letters, then it is possible that since the version when the program was first written, built-in functions may have been added to Mathematica whose names conflict with those used in the program.

In addition, to maintain the overall coherence of Mathematica a few functions that existed in earlier versions have gradually been dropped—first becoming undocumented, and later generating warning messages if used. Furthermore, it has in a few rare cases been necessary to make changes to particular functions that are not compatible with their earlier operation.

Between Versions 1 and 2

  • 260 new built-in objects have been added, some of whose names may conflict with names already being used.
  • Accumulate has been superseded by FoldList; Fold has been added.
  • Condition () can now be used in individual patterns as well as in complete rules, and does not evaluate by default.
  • The functionality of Release has been split between Evaluate and ReleaseHold.
  • Compose has been superseded by Composition.
  • Debug has been superseded by Trace and related functions.
  • Power no longer automatically makes transformations such as Sqrt[x^2]→x.
  • Limit now by default remains unevaluated if it encounters an unknown function.
  • Mod now handles only numbers; PolynomialMod handles polynomials.
  • CellArray has been superseded by Raster and RasterArray.
  • FontForm takes a slightly different form of font specification.
  • Framed has been superseded by Frame and related options.
  • ContourLevels and ContourSpacing have been superseded by Contours.
  • Plot3Matrix has been superseded by ViewCenter and ViewVertical.
  • FromASCII and ToASCII have been superseded by FromCharacterCode and ToCharacterCode respectively.
  • Alias has been superseded by $PreRead.
  • ResetMedium has been subsumed in SetOptions, and $$Media has been superseded by Streams.
  • StartProcess has been superseded by Install and by MathLink.
  • Between Versions 2 and 3

  • 259 new built-in objects have been added, some of whose names may conflict with names already being used.
  • N[expr, n] now always tries to give n digits of precision if possible, rather than simply starting with n digits of precision.
  • All expressions containing only numeric functions and numerical constants are now converted to approximate numerical form whenever they contain any approximate numbers.
  • Many expressions involving exact numbers that used to remain unevaluated are now evaluated. Example: Floor[(7/3)^20].
  • Plus and Times now apply built-in rules before user-defined ones, so it is no longer possible to make definitions such as .
  • The operator precedence for and has been changed so as to be below . This has the consequence that expressions previously written in InputForm as must now be written as . V2Get[file] will read a file using old operator precedences.
  • is now an operator used to generate a superscript. Raw octal codes must be used instead of for inputting control characters.
  • In Mathematica notebooks, several built-in Mathematica functions are now output by default using special characters. Example: is output as in StandardForm.
  • More sophisticated definite integrals now yield explicit If constructs unless the option setting GenerateConditions->False is used.
  • HeldPart[expr, i, j, ...] has been superseded by Extract[expr, {i, j, ...}, Hold].
  • Literal[pattern] has been replaced by HoldPattern[pattern]. Verbatim[pattern] has been introduced. Functions like DownValues return their results wrapped in HoldPattern rather than Literal.
  • ReplaceHeldPart[expr, new, pos] has been superseded by ReplacePart[expr, Hold[new], pos, 1].
  • ToHeldExpression[expr] has been superseded by ToExpression[expr, form, Hold].
  • Trig as an option to algebraic manipulation functions has been superseded by the explicit functions TrigExpand, TrigFactor and TrigReduce.
  • AlgebraicRules has been superseded by PolynomialReduce.
  • The option LegendreType has been superseded by an additional optional argument to LegendreP and LegendreQ.
  • WeierstrassP[u, {g2, g3}] now takes and in a list.
  • and now have built-in values only, but these handle all possible Mathematica characters.
  • is no longer supported.
  • Arbitrary-precision approximate real numbers are now given by default as digits`prec in InputForm. This behavior is controlled by $NumberMarks.
  • Large approximate real numbers are now given by default as in InputForm.
  • HomeDirectory[ ] has been replaced by $HomeDirectory.
  • Dump has been superseded by DumpSave.
  • and are now obsolete, since all computer systems support pipes and links.
  • LinkOpen has been superseded by LinkCreate, LinkConnect, and LinkLaunch.
  • Subscripted has been superseded by RowBox, SubscriptBox, etc.
  • Subscript and Superscript now represent complete subscripted and superscripted quantities, not just subscripts and superscripts.
  • FontForm and DefaultFont have been superseded by StyleForm and TextStyle.
  • In the notebook front end, changes that were made include:

  • The file format for notebooks has been completely changed in order to support new notebook capabilities.
  • Notebook files are now by default given .nb rather than .ma extensions; .mb files are now superfluous.
  • The front end will automatically ask to convert any old notebook that you tell it to open.
  • The kernel command NotebookConvert can be used to convert notebook files from Version 2 to Version 3 format.
  • The default format type for input cells is now StandardForm rather than InputForm.
  • The organization of stylesheets, as well as the settings for some default styles, have been changed.
  • Some command key equivalents for menu items have been rearranged.
  • Between Versions 3 and 4

  • 61 new built-in objects have been added, some of whose names may conflict with names already being used.
  • N[0] now yields a machine-precision zero rather than an exact zero.
  • has been superseded by AbsoluteOptions, which yields results in the same form as Options.
  • Element[x, y] or now has built-in evaluation rules.
  • The symbols I and E are now output in StandardForm as (\[ImaginaryI]) and (\[ExponentialE]) respectively.
  • A new second argument has been added to CompiledFunction to allow easier manipulation and composition of compiled functions.
  • Between Versions 4 and 5

  • 44 completely new built-in objects have been added, some of whose names may conflict with names already being used.
  • Precision and Accuracy now return exact measures of uncertainty in numbers, not just estimates of integer numbers of digits.
  • Precision now returns the symbol MachinePrecision for machine numbers, rather than the numerical value $MachinePrecision.
  • N[expr, MachinePrecision] is now used for numerical evaluation with machine numbers; N[expr, $MachinePrecision] generates arbitrary-precision numbers.
  • ConstrainedMin and ConstrainedMax have been superseded by Minimize, Maximize, NMinimize, and NMaximize.
  • SingularValues has been superseded by SingularValueList and SingularValueDecomposition. SingularValueDecomposition uses a different and more complete definition.
  • LUBackSubstitution has been superseded by the use of the more general LinearSolveFunction.
  • FindRoot[f, {x, {x0, x1}}] is now used to specify a starting vector value for x, rather than a pair of values. The same is true for FindMinimum.
  • DSolveConstants has been superseded by the more general option GeneratedParameters.
  • TensorRank has been replaced by ArrayDepth.
  • $TopDirectory has been superseded by $InstallationDirectory and $BaseDirectory.
  • The default setting for the MathLink LinkProtocol option when connecting different computer systems is now rather than .
  • Between Versions 5 and 6

    The graphics functionality has significantly changed. For compatibility purposes, use to restore graphics capabilities from Mathematica 5. To restore the Mathematica 6 graphics capabilities, use .

  • Over 800 completely new built-in objects have been added, some of whose names may conflict with names already being used.
  • The output form of a Graphics or Graphics3D object is now the rendered graphic rather than an output such as .
  • $DisplayFunction is now set to Identity, so that no side effect happens by default when evaluating a graphic. To produce a side effect similar to Version 5 output, you can use the Print function to print the graphic.
  • The default font in graphics has changed from Courier to Times.
  • GraphicsArray has been superseded by GraphicsGrid and Grid.
  • The default for AspectRatio in Graphics and ParametricPlot is now Automatic.
  • The PlotDivision option for Plot has been superseded by MaxRecursion.
  • The PlotJoined option for ListPlot has been superseded by ListLinePlot.
  • Plot3D[{f, s}, {x, xmin, xmax}, {y, ymin, ymax}]: the shading specification s has been superseded by MeshShading.
  • The option HiddenSurface->False has been superseded by PlotStyle -> FaceForm[ ].
  • ContourGraphics has been superseded by ListContourPlot and GraphicsComplex.
  • DensityGraphics has been superseded by ListDensityPlot and GraphicsComplex.
  • Plot3D and other 3D plotting functions now emit GraphicsComplex rather than a raw list of Polygon primitives.
  • ListPlot now aggregates lists of points into a single Point primitive.
  • The MeshRange option has been superseded by DataRange.
  • DensityPlot and ListDensityPlot by default now do not draw meshes.
  • ListPlot3D[array, shades] has been superseded by MeshShading.
  • SurfaceColor in 3D graphics has been superseded by explicit color and the directives Specularity and Glow.
  • Lighting now supports a syntax for specifying different kinds of light sources, including spotlights, point light sources, directional lighting and ambient lighting.
  • The graphics primitive is no longer supported.
  • The options RenderAll and PolygonIntersections are no longer supported.
  • Rectangle[{xmin, ymin}, {xmax, ymax}, graphics] has been superseded by Inset.
  • StyleForm and StylePrint have been superseded by Style.
  • TextStyle has been superseded by the general BaseStyle mechanism.
  • SequenceForm has been superseded by Row.
  • Between Versions 6 and 7

  • Over 400 completely new built-in objects have been added, some of whose names may conflict with names already being used.
  • For raster image formats, Import[file] now returns Image[...] instead of Graphics[Raster[...]] to take advantage of the new image processing functionality. Use Import[file, "Graphics"] to import file as a Graphics expression.
  • For more precise expression structure, Import[file, "XML"] and Export[file, "XML"] now always imports and exports symbolic XML expressions only. Import["file.xml"] will still determine the XML format automatically as in Mathematica 6.
  • To allow for more diverse interactive controls, the option has been renamed TooltipDelay. The usage is unchanged.
  • New to Mathematica? Find your learning path »
    Have a question? Ask support »