For me, one of the interesting insights that came of my recent *Scientific Computing World* article on historical computing was how much modern computer users share with the calculator users of a century ago. For instance, user interface was as important as underlying function. The multiplication table has been packaged with many interfaces: for children as the rotary calculating pencil case and as Consul the Educated Monkey, who shows the product of digits input via his feet; or, for 19th century French engineers, as Pouchet's Table (an xy grid with x*y contours overlaid). Another multiplication device, the slide rule, could be packaged in a general form as the classic Mannheim slide rule, or customised with appropriate units and scales for, say, boiler engineers.

There's a strong analogy with mathematics software programs, their makers packaging similar functions differently for different markets: for instance, Mathcad's pencil-and-paper format targeted the engineering and educational sectors. Recently, though, even more flexibility has become possible through tools for users to customise radically their own interfaces to a program. Maplesoft's Maple, with a market that now spans school and university teaching, pure mathematics research, and many fields of applied mathematics, is one of the best examples of how this can be achieved.

The new Maple 9 came out in late July, with four chief themes, according to Maplesoft: a friendlier and more powerful interface; integration with new technologies (i.e. coding and connectivity); innovation in mathematics education; and innovation in fundamental mathematics.

These changes are headed up by an obviously new interface: a 'Standard' worksheet that replaces the six-window help system with a simpler two-window one that has a permanently visible 'contents, topic, search, history' search box. (The Maple 8 format - the 'Classic' - is also included, because the new one is somewhat memory-hungry).

Maplesoft has greatly improved the facilities for accessing Maple's huge repertoire of functions. 'Ctrl-space' and the Tools menu launch a pop-up for completing partial commands. As well as right-clicking on an output, the context-sensitive menu of available transformations now also appears as a pull-down Operations menu - and these menus can themselves be customised.

Most useful of all, Maple 9 provides function help through the package MathematicalFunctions and the FunctionAdvisor command, dropping the formulae direct into the worksheet. If, for instance, I wanted to know the properties of the sine function, I'd normally reach for Rade and Westergren's *Mathematics Handbook for Science and Engineering*. But in Maple 9, FunctionAdvisor(sin) returns information about it, up to a maximum level of detail comprising definitions, common identities, series forms, and special values such as sin(pi/6) = 1/2. This gives far quicker access than searching the help system and copying examples.

Not all the interface changes are as helpful; it may be an internet habit, but I find Tip of the Day pop-ups a nuisance whatever the program. Nor am I keen on the new sketchpad for drawing diagrams in worksheets; a simple CAD module, like the Drawing menu in Microsoft Word, would be far superior to expecting the user to draw freehand with their mouse.

'Integrating Maple with new technologies' is of main significance to programmers, but also covers the new, showpiece graphics renderer, OpenViz, a cross-platform system originally designed for business graphics by Advanced Visual Systems (AVS). I confess I couldn't see much difference with routine plots, but it does provide the option of plot transparency. Plotting in general has been upgraded with features such as multiple objects in 3D, implicit and 3D implicit plot types, and the animate command extended to all plot types.

Maple 9 builds on Maple 8's enhancements for programmers, with an interactive Maple code debugger and other helpful utilities: ArrayTools for manipulating array elements; FileTools for DOS-like file manipulation; and CodeTools for optimising and profiling code. The OpenMaple Application Program Interface (API) reverses the option of calling external code, with a suite of functions to call Maple data and algorithms from a compiled C program. The CodeGeneration package now writes to Matlab and Visual Basic as well the existing C, Fortran, and Java. Translation has always been a strong point for Maple, since its visible code (some 90 per cent of the main library) is readily accessible.

Maple 8 contained new functions for hand-coding custom interfaces akin to Java applets. The educational side of Maple 9 is the use of these same 'Maplets' to build new pre-calculus and linear algebra learning modules for its Student package. Maplet interfaces are also behind the new Interactive ODE Analyzer, greatly simplifying entry of the symbolic and numeric solver arguments, and the new Maplet graph plot window, which now allows real-time rotation and analysis as in worksheets.

This leaves the huge area of fundamental mathematics innovations. I'm still in awe of Maplesoft's developments in differential equation solution that were revealed in Maple 7. Maple 9 has made further inroads into ODEs - areas such as 2nd order linear ODEs, third-order linear with arbitrary functions - and now covers 'virtually 100%' of the ODE forms in the standard reference, Kamke's *Differentialgleichungen*. Symbolic and numeric solutions of PDEs have also been extended. The PDE Boundary Value Problem methods, for example, can now solve non-linear problems that are linear in the highest time-derivative (this physically important form underlies non-linear shockwaves).

Maple 8 added scientific constants, and Maple 9 has more to offer scientists with ScientificErrorAnalysis. This package enables associating an error with a value, thus automating calculation of error in derived values. (It isn't interval arithmetic, which gives rigorous bounds on range values - though there is a free PowerTools package if you need this).

With such a large command set, it's hard to do justice to all the upgrades. However, other significant features, in my view, include the adoption of the GNU Multiple Precision (GMP) library for large integer work; the arbitrary length DiscreteTransforms - forward and inverse fast Fourier transforms, superseding the FFT and iFFT that only work with 2n elements; and the IntegerRelations algorithms for finding integer relationships between a vector's elements. A very nice spinoff of the latter is identify, which converts floating point to symbolics; for example, identify(3.146264370) returns SQRT(2) + SQRT(3). New symbolics functions include expanded routines for interconverting functions (such as sum and integral representation of trig functions), new special functions such as inverse Jacobi, Mathieu, q-difference equations, and order basis calculation. There are also many enhanced packages, and computational speed-ups that improve data structures in areas such as table and matrix lookup.

There is a downside to the many improvements in Maple 9. Although I like the new Standard interface, its higher memory requirements will cause problems on under-equipped machines; for instance, on a Windows 98 Pentium with the minimum 64Mb RAM, it was very slow and occasionally locked up. Maple 9 also drops support for OLE objects and embedded Windows Metafiles. But otherwise, apart from minor syntax and language changes, the compatibility with Maple 8 is very good. Although Maple 9 stores worksheets in a new .mw XML format, it can still read and write the older .mws files.

Memory problems aside, Maple 9 is a well-designed upgrade, one that makes very clear the large scope for customising Maple to your own preferences. I found three outstanding highlights: FunctionAdvisor, ScientificErrorAnalysis, and the ODE Analyzer. These are packages that I know I'll use, and that I wish had been available when I was at university. I'd recommend Maple 9 for these alone, and I'm sure other readers will find equally striking and useful features for their own specialisms.

## Maple: Used in universities around the world

Maple originated as a project of the Symbolic Computation Group at the University of Waterloo, Ontario. Its commercial existence dates from 1998, with the founding of Waterloo Maple Inc. (now, bowing to customer usage, Maplesoft). It's one of the most widely used mathematics packages, with a quoted million-plus user base swelled by licensed Maple symbolics engines behind the scenes in Mathcad, Matlab, and Scientific Workplace.

Over recent releases, Maple's traditional strengths in symbolics and university pure-mathematics work have been augmented with numerics and applied mathematics functions, increasing its appeal to scientists and engineers. According to Maplesoft, users can now be found in 'virtually every major university and research institute in the world, including MIT, Stanford, Oxford, and Waterloo', with industrial customers including Nortel, Raytheon, Boeing, and DaimlerChrysler.

Maple uses a standard worksheet format, with collapsible input-output regions (execution groups) that may contain mathematics, text, graphics plots, and so on. The worksheet accesses a small C kernel that calls around 3,500 library functions - some permanent, some loadable on demand - which can be linked into programs using Maple's 4GL procedural language. Maple's growing set of connectivity options includes intercommunication with Excel 2000, Matlab and routines in other procedural languages; support for HTML, MathML 2.0 and XML; and TCP/IP socket connectivity.

Maplesoft provides strong online support, the Application Center providing thousands of free worksheets, including larger 'PowerTools' application packages for researchers and maths educators. There's also a Student Center and MaplePrimes, a commercial fast-track support site for subscribers to the Maple Extended Maintenance Plan.

Maple 9 is available for all post-98 Windows, Linux, Unix, and the new Mac OS X. Apart from Maple, the product family includes a Student Edition, available to accredited students, and two Maple-powered online education products: MapleNet, a platform for Web-based distance learning; and Maple TA - 'testing and assessment' - for creating and administering online mathematics tests.