Mathematica 9 is now available
Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1991

[Date Index] [Thread Index] [Author Index]

Search the Archive

What's New in Version 2

  • To: mathgroup at
  • Subject: What's New in Version 2
  • From: pea
  • Date: Thu, 31 Jan 91 16:55:37 CST
  • Cc: joe, pea

New Features in Version 2.0

These notes describe new features in the kernel of Mathematica Version 2.0 that 
were not in Version 1.0. Incompatibilities between Versions 1.0 and 2.0 are 
indicated below by *. Particularly important enhancements are indicated by  
exclamation points (!). Page references are to the second edition of Stephen  
Wolfram's book "Mathematica: A System for Doing Mathematics by Computer". Some 
of the features described below were already present in Mathematica Versions 
1.1 or 1.2.


. Sign has been generalized to handle complex numbers. See pages 550
  and 604.

. Random has been speeded up for the case of real numbers. (It now uses  
  a Fibonacci generator in this case; it continues to use a cellular  
  automaton generator for integers.) See page 552.

* GCD now handles numbers only. PolynomialGCD has been added to handle  
  polynomials. See pages 553 and 598.

. PrimePi[x] gives the number of primes less than x. See page 554.

. FactorInteger has been greatly speeded up. A package is now provided
  for factoring with elliptic curves. See page 554.

. The option GaussianIntegers has been added for FactorInteger and PrimeQ,  
  allowing factoring of complex integers. See page 556.

. The functions ClebschGordan, ThreeJSymbol, and SixJSymbol have been added  
  for computing rotational coupling coefficients. See page 561.

* The trigonometric functions Csc, Sec, and Cot are now handled explicitly,  
  and are not automatically written in terms of Sin, Cos and Tan.

* The hyperbolic functions Sinh, etc., are now handled explicitly, and are  
  not automatically written in terms of Exp, etc.

* Principal roots are now used for all fractional powers. Thus (-8)^(1/3) is  
  now converted to 2 (-1)^(1/3), rather than to -2. See page 564.

. The evaluation of Pi, EulerGamma and Catalan to arbitrary precision has been  
  speeded up. See page 566.

. The computation of Bessel, Airy and related functions has been speeded up,
  particularly for machine-precision arguments. The computation of all  
  hypergeometric functions has been made more robust.

. AiryBi, AiryAiPrime, and AiryBiPrime have been added. See page 570.

. SinIntegral and CosIntegral have been added. See pages 570 and 571.

. Erfc has been added. See page 570.

. The functions RiemannSiegelTheta and RiemannSiegelZ have been added.  
  See page 571.

. JacobiZeta has been added, and EllipticTheta, EllipticThetaPrime and  
  EllipticPi have been completed. See page 580.

. A standard package giving common statistical distributions has been added.
  See page 586.


! A compiler for numerical expressions has been added, making their  
  evaluation much faster. With the option setting Compiled->True, the compiler  
  is automatically invoked in various numerical and graphical functions. You  
  can explicitly create CompiledFunction objects using the function Compile.  
  See page 312.

* The functions IntegerDigits and RealDigits have been added, for giving lists  
  of digits in numbers. See page 537. (These functions supersede the function  
  Digits provided in Version 1.2.)

. MantissaExponent gives the mantissa and exponent of a number, in any base.  
  See page 538.

. MachineNumberQ has been added to test for machine numbers. The global  
  variables $MachinePrecision, $MachineEpsilon, $MinMachineNumber and  
  $MaxMachineNumber give parameters of machine arithmetic on your particular  
  computer system. See page 545.

. SetPrecision and SetAccuracy have been added, to allow the precision and  
  accuracy for arbitrary-precision numbers to be changed. (These functions  
  were already present in Version 1.1.) See page 544.

. Interpolation gives an InterpolatingFunction which represents interpolation  
  of data. See page 676.

. InterpolatingPolynomial gives an exact polynomial fit to data. See page 675.

. Fourier and InverseFourier have been generalized to allow data with any number 
  of dimensions. They also allow data with arbitrary precision. See page 682.

. Numerical operations on functions have been made more efficient and robust.

* NIntegrate, NSum and NProduct now have a PrecisionGoal option as well as  
  AccuracyGoal. Other options to these functions have also been slightly  

. NSolve has been added to give numerical solutions to polynomial equations in  
  the form returned by Solve. It extends the Version 1.0 function NRoots.

! NDSolve has been added for finding numerical solutions to systems of ordinary 
  differential equations. See page 696.

! ConstrainedMin, ConstrainedMax and LinearProgramming have been added for  
  solving linear programming problems. See page 705.


. Numerical linear algebra has been made much more efficient.

. MatrixPower and MatrixExp have been added. See page 659.

. A Modulus option has been added for Inverse. See page 663.

. QRDecomposition and SchurDecomposition have been added. See page 665.


. Solve can now solve some equations involving exponential, logarithms and  
  trigonometric functions. (This functionality was already present in Version  
  1.2.) See page 612.

. InverseFunction has been added, to represent inverse functions which can be  
  returned by Solve. (Already present in Version 1.2.) See page 612.

. GroebnerBasis gives the Grobner basis for a list of polynomials. (This  
  function was already present in Version 1.2.) See page 622.

* Power does not automatically rewrite expressions of the form (ab)^c and  
  (a^b)^c. The function PowerExpand has been added to do this. See page 592.

. Expand and related functions now take a second argument which is a pattern  
  specifying which parts of an expression should be expanded. See pages 592  
  and 595.

* PolynomialGCD and PolynomialLCM have been added. GCD no longer works on  
  polynomials. (The functions PolynomialGCD and PolynomialLCM were already  
  present in Version 1.2.) See page 598.

* PolynomialMod has been added to reduce polynomials with respect to one or  
  several moduli. Mod no longer reduces coefficients in polynomials. See pages  
  598 and 602.

. FactorTerms now takes a second argument to specify which variables should  
  appear in terms that are factored out. See page 598.

. Factor and related functions now take the option GaussianIntegers which allows 
  factoring in terms of polynomials with complex number coefficients.  
  See page 600.

. Expand, Factor and related functions now take the option Trig. With the  
  setting Trig -> True, transformations are made for trigonometric functions.  
  See page 603.

. ComplexExpand transforms expressions, using explicit assumptions about whether 
  symbolic variables are real or complex. See page 604.


. Integrate has been considerably extended. It now incorporates the complete  
  Risch algorithm for indefinite integration, as well as algorithms for definite 
  integration based on generalized hypergeometric functions. Version 2.0 may  
  give results for some integrals in a different form from Versions 1.0 or 1.2. 
  See page 632.

! DSolve has been added for finding symbolic solutions to ordinary differential 
  equations. See page 637. (Dsolve existed in Version 1.2, but has been much  
  extended in Version 2.0.)

. InverseSeries now allows two arguments to be given, so that the value of the  
  series and the name of the expansion variable need not be the same.  
  See page 644.

. Limit has been much extended. The option Direction has been added to allow for 
  directional limits. Limit can now return RealInterval objects. See page 646.

. Series has been extended to handle many kinds of special functions. (Already  
  done in Version 1.2.)

. Residue has been added. (This function was already present in Version 1.2.)  
  See page 648.


. ParametricPlot3D has been added as a built-in function to allow parametric  
  curves and surfaces to be generated in three dimensions. (ParametricPlot3D
  was given in a package in Version 1.2.) See page 168.

. GraphicsArray has been added to allow a plot to be built up from several  
  subplots. See page 146.

. Surfaces generated by Plot3D, etc., can now be combined using Show. See  
  page 449.

. Conversions can now be done between all types of graphics. See page 448.

. Options now takes a second argument which specifies the particular option  
  whose value is to be given. FullOptions gives the explicit value used for  
  an option even if its setting is Automatic. See page 398.

. FullGraphics gives a complete graphics object containing the explicit graphics 
  primitives for axes and other elements specified by graphics options.  
  See page 398.

* The graphics primitive CellArray has been renamed Raster. The new graphics  
  primitive RasterArray has been added, to allow an array of graphics directives, 
  rather than an array of levels, to be specified. See page 405.

. The graphics primitives Circle and Disk have been added. See page 404.

. Rectangle now allows a second argument, which can be any graphics object. The 
  graphics object is rendered within the specified rectangle. This allows  
  subplots to be drawn in a flexible way.

. The graphics directive Hue has been added, to allow specification of colors in 
  hue, saturation and brightness as well as red, green and blue. See page 407.

. AbsolutePointSize, AbsoluteThickness and AbsoluteDashing have been added to  
  allow sizes of graphics objects to be specified in absolute units, independent 
  of the overall size of a plot. See page 409.

. The options Background and DefaultColor have been added to allow overall  
  colors for plots to be specified. See page 412.

. The options Prolog and Epilog have been added to allow graphics primitives to 
  be specified for rendering before or after the main part of a plot. See  
  page 412.

. The option PlotRegion has been added to allow margins around plots to be  
  specified. See page 414.

* The option Axes now allows only the settings True and False in both two and  
  three dimensions. AxesOrigin specifies the origin to use for axes in two  
  dimensions. AxesStyle specifies the style in which axes should be rendered.  
  See page 418.

. New settings for the Ticks option have been added, to allow labels and styles 
  for ticks to be given, and to allow tick specifications to be given  
  automatically by a function. See page 420.

* The option Framed has been removed. Frame has been added, to allow axes to be 
  given on a frame around a plot. Details of the frame can be specified using  
  the options FrameStyle, FrameLabel, FrameTicks and RotateLabel. See page 422.

. The option GridLines has been added, to allow grid lines to be drawn in  
  two-dimensional plots.

* ContourPlot and ContourGraphics have been modified so that by default they  
  shade the regions between contour lines. This can be prevented by setting the 
  option ContourShading -> False. See page 151.

* ContourPlot and ContourGraphics now do not by default generate smooth  
  contours. Smooth contours can usually be produced by setting the option  
  ContourSmoothing -> Automatic. See page 153.

. The option ColorFunction has been added for surface, contour and density plots 
  to allow color maps to be specified. See page 425.

* The option Contours for contour plots gives the total number of contours to  
  use, or a list of the contour values. This option supersedes the options  
  ContourLevels and ContourSpacing in Version 1. See page 427.

. The three-dimensional graphics primitive Cuboid has been added. See page 430.

. Hidden surface elimination has been made substantially faster for complex
  three-dimensional graphics.

* The default setting for the option Lighting in Plot3D has been changed to  
  True. See page 436.

. The options ViewCenter and ViewVertical have been added to allow a wider range 
  of possible orientations for three-dimensional graphics to be used.  
  See page 443.

. The three-dimensional graphics directive SurfaceColor has been added to allow 
  reflection properties of surfaces to be specified. See page 458.

. Axes on three-dimensional plots can now have labels and tick marks. (Supported 
  in Version 1.2). See page 461.

. The option FaceGrids has been added for three-dimensional graphics.
  See page 463.

. The graphics primitive PostScript has been added to allow verbatim PostScript 
  code to be given. See page 465.

* The mechanism for specifying fonts for text in graphics has been changed.
  The option DefaultFont is now available in all graphics functions, with a  
  default value given by the global variable $DefaultFont. All fonts available  
  on a particular PostScript system can now be accessed from Mathematica.  
  See page 468.

. Text in graphics can now be written vertically, as well as horizontally.
  See page 470.

. Text is now supported in three-dimensional graphics. See page 471.

. The graphics directive CMYKColor has been added to allow color specifications 
  to be given in a form directly suitable for color printing. See page 472.

* The option PlotColor has been superseded by the more general option  
  ColorOutput, which specifies how colors generated by Mathematica should be  
  transformed before output. See page 473.


. Sound generation capabilities have been added. Play and ListPlay are the  
  analogs for sound of Plot and ListPlot for graphics. See page 176.


* ToASCII and FromASCII have been replaced by ToCharacterCode and  
  FromCharacterCode. See page 366.

. Extended character sets are now fully supported. Any one- or two-byte
  character can be used. See page 367.

. $StringConversion and the option StringConversion specify how special  
  characters should be output. See page 371.

. The special input form <> is now allowed for StringJoin. See page 376.

. StringTake and StringDrop allow substrings to be extracted and removed from  
  strings. See page 376.

. StringReverse reverses the characters in a string. See page 376.

. StringPosition allows the position of one or more substrings in a string to be 
  found. See page 376.

. StringReplace allows substrings within a string to be replaced. See page 376.

. DigitQ, LetterQ, UpperCaseQ and LowerCaseQ test for particular types of  
  characters. See page 378.

. ToUpperCase and ToLowerCase convert strings. See page 378.

. The option IgnoreCase allows string manipulation operations to be done in a  
  case-insensitive way. See page 379.

* The standard sorting order for strings and symbol names has been changed to  
  agree with the order usually used for indices and dictionaries. The variable  
  $StringOrder specifies the ordering of characters to be used. See page 379.

. ToHeldExpression converts a string to an expression, wrapping the expression  
  with Hold to prevent it from evaluating. See page 381.

. SyntaxQ and SyntaxLength allow the syntactic correctness of strings considered 
  as Mathematica input to be tested. See page 381.

. StringToStream converts a string to an object that can be treated like an  
  input file, and on which many standard file operations can be done.  
  See page 382.

. The option SpellingCorrection has been added for Names and related functions  
  to allow names that differ only slightly to be found. See page 385.


. Shallow has been added as an alternative to Short in generating outline forms 
  for expressions. See page 346.

. Padding and various alignment and other options have been added for printing
  numbers. See page 351.

. AccountingForm and PaddedForm have been added as new output formats for  
  numbers. See page 352.

. Many options have been added for TableForm and MatrixForm, including spacing  
  and labeling. See page 354.

* Functions such as Get now return $Failed if they cannot access the files  
  specified, rather than returning unevaluated. See page 477.

. Encode allows files to be encoded so that their text can be read only by  
  Mathematica. See page 480.

. Streams have been introduced, to allow multiple instances of a particular
  file or pipe to be used simultaneously for input or output. See page 483.

. Options and SetOptions can now be used on streams. See page 488.

. The option RecordLists has been added to ReadList, to allow separate records  
  to appear as separate sublists.  See page 494.

. ReadList now takes a third argument which specifies the maximum number of  
  objects to read. See page 494.

. ReadList can now handle Word and Record objects. Delimiters for these objects 
  are specified by options to ReadList. See page 496.


. Directory, SetDirectory and a variety of other functions have been added for  
  manipulating directories. See page 489.

. FileNames gives a list of the names of files matching a string pattern, in  
  specified directories. See page 491.

. Context names can now be used as system-independent specifications of files  
  containing Mathematica packages. See page 492.

. CopyFile, DeleteFile, FileDate, FileByteCount and related functions have been 
  added. See page 493.

. Skip allows objects in a file being read to be skipped over. See page 499.

. FindList allows records containing particular pieces of text to be found in  
  files. See page 500.

. StreamPosition and SetStreamPosition allow the current point in a file to be  
  manipulated. See page 503.


. The /; operator can now be used anywhere in a pattern, not just on the  
  right-hand sides of rules. See page 225.

. The special input forms === and =!= have been introduced for SameQ and  
  UnsameQ. See page 228.

. The operator | (Alternatives) can be used to specify a pattern which can have 
  one of several forms. See page 229.

. Dispatch has been added to allow lists of rules to be preprocessed into  
  dispatch tables which use hashing, and are much more efficient. See page 246.

* The procedure that Mathematica uses for ordering definitions has been changed
  so that a larger class of more specific rules are placed before more general
  ones. See page 254.

. DownValues and UpValues now provide explicit access to lists of rules set up  
  by assignments. See page 266.

. Lists of attributes can now be specified for pure functions. See page 274.

* Evaluate evaluates a function argument even if the attributes of the function 
  specify that the argument should be held. Evaluate takes over one of the two  
  uses of Release in Version 1. See page 280.

* ReleaseHold removes Hold and HoldForm in an expression. It takes over the  
  second of the two uses of Release in Version 1. See page 282.

. HeldPart and ReplaceHeldPart allow parts of expressions to be accessed and  
  replaced without evaluation. See page 282.

. Unevaluated allows a particular function argument to be passed to the function 
  without evaluation. See page 282.

. Iteration functions such as Table, Sum and Do now effectively use Block to  
  localize iteration variables. See page 286.

* If, Switch and Which now all remain unevaluated if the truth values of  
  conditions in them cannot be determined. See page 287.

* Break, Continue and Return now work inside Do. See page 293.

! Trace and related functions provide a range of capabilities for tracing the  
  evaluation of Mathematica functions. See page 295.

* Debug has been superseded by Trace and TraceDialog.

. Stack gives a list of the objects being evaluated at a particular point in a  
  computation. See page 306.

. $IterationLimit and $RecursionLimit now provide two ways to limit  
  computations. See page 308.

. Interrupt and Abort generate interrupts during the execution of a program.  
  See page 311.

! Module and With have been added to allow the names as well as the values of  
  variables to be treated as local. See page 318.

* Pure functions, rules and assignments are now treated as scoping constructs,
  so that the names of variables appearing in them are considered to be local.
  See page 326.

. Contexts gives a list of contexts with names of a particular form.
  See page 335.

. DeclarePackage has been added to allow automatic loading of packages to be set 
  up. See page 341.

. $NewSymbol has been added to allow operations to be performed whenever a new  
  symbol is created. See page 386.


. ReplacePart allows one or more parts with specified indices in an expression  
  to be replaced. See page 195.

. Insert now allows a list of positions to be specified, at each of which the  
  same expression will be inserted. See page 128.

. Delete allows parts at specified positions to be removed. See page 128.

. DeleteCases allows parts matching a particular pattern to be removed.
  See page 222.

. RotateLeft, RotateRight and Partition have been generalized to handle arrays  
  of any rank. See page 132.

. The functions Position, Cases and Count now take level specifications.  
  See page 198.

. The option Heads can be used in functions which take level specifications
  to determine whether heads of expressions are included in levels.
  See page 198.

. The option SameTest has been added for FixedPoint, to allow an arbitrary  
  function to be used to determine whether a fixed point has been reached.  
  See page 201.

. FixedPointList is the analog for FixedPoint of NestList for Nest.  
  See page 201.

* Fold and FoldList are analogs of Nest and NestList for two-argument functions. 
  They supersede Accumulate. See page 202.

. MapIndexed is a version of Map which gives the index of each part as a second 
  argument. See page 206.

. MapThread is a version of Map which can be applied to several expressions with 
  the same structure. See page 206.

. ComposeList successively applies a list of functions, and gives a list of the 
  results. See page 210.

. Select now takes a third argument which specifies the maximum number of  
  elements to select. See page 211.

* The functional operator Composition supersedes the function Compose.  
  See page 213.

. FlattenAt effectively allows Flatten to be applied to specific elements.  
  See page 215.

. VectorQ and MatrixQ now take a second argument which is applied to each  
  element of the candidate vector or matrix. See page 227.


. Many warning messages have been renamed and rewritten. Documentation for the  
  messages is available as a Wolfram Research technical report.

. Many common input errors are now detected, and warnings are generated.

. MessageList gives the list of all messages generated during the evaluation of 
  a particular input line in a Mathematica session. See page 389.

. $Language specifies the default language to use for messages. See page 391.

. InString now stores the textual input given on each line in a Mathematica  
  session. See page 513.

. $PreRead allows input for Mathematica to be modified in textual form, before
  it is converted to an expression. See page 514.

. $SyntaxHandler specifies how syntax errors in Mathematica input should be
  handled. See page 514.

* SetOptions is now used instead of ResetMedium to change the options for input 
  and output streams. See page 517.

. Streams is now used instead of  to give a list of streams that are currently  
  open. See page 519.

. $MessagePrePrint is applied to expressions that are to be printed as part of  
  messages. See page 519.

. Dialog initiates a dialog, which serves as a subsession within a complete  
  Mathematica session. See page 520.

. Date, TimeZone, AbsoluteTime, SessionTime and TimeUsed give various measures  
  of time. See page 524.

. Pause tells Mathematica to pause for a certain time. See page 524.

. ToDate and FromDate convert to and from explicit date representation.
  See page 524.

. Several global parameters specifying properties of a particular Mathematica  
  system have been added. Examples are $CreationDate and $OperatingSystem.

. On many computer systems, a DataOnly option is supported for Dump, which  
  allows smaller, incremental, dump files to be used. See page 783.


. The operator <> has been added as a special input form for StringJoin.

. The operator | has been added to represent alternatives in patterns.

. The operators === and =!= have been added as special input forms
  for SameQ and UnsameQ.

. The form s::m::m represents messages in specific languages.

. New special input forms have been added for special characters, including
  16-bit ones. See page 714.

  • Prev by Date: math-mode bug fix
  • Previous by thread: math-mode bug fix