Skip to main content

The design of Maple: A compact, portable, and powerful computer algebra system

  • Systems And Language Features
  • Conference paper
  • First Online:
Computer Algebra (EUROCAL 1983)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 162))

Included in the following conference series:

Abstract

The Maple system has been under development at the University of Waterloo since December 1980. The kernel of the system is written in a BCPL-like language. A macroprocessor is used to generate code for several implementation languages in the BCPL family (in particular, C). Maple provides interactive usage through an interpreter for the user-oriented, higher-level, Maple programming language.

This paper discusses Maple's current solution to several design issues. Maple attempts to provide a natural syntax and semantics for symbolic mathematical computation in a calculator mode. The syntax of the Maple programming language borrows heavily from the Algol family. Full “recursive evaluation” is uniformly applied to all expressions and to all parameters in function calls (with exceptions for only four basic system functions).

Internally, Maple supports many types of objects: integers, lists, sets, procedures, equations, and power series, among others. Each internal type has its own tagged data structure. “Dynamic vectors” are used as the fundamental memory allocation scheme. Maple maintains a unique copy of every expression and subexpression computed, employing hashing for efficient access. Another feature relying upon hashing is the “remembering” facility, which allows system and user-defined functions to store results in internal tables to be quickly accessed in later retrieval, thus avoiding expensive re-computation of functions.

The compiled kernel of the Maple system is relatively compact (about 100K bytes on a VAX under Berkeley Unix). This kernel includes the interpreter for the Maple language, basic arithmetic (including polynomial arithmetic), facilities for tables and arrays, print routines (including two-dimensional display), basic simplification, and basic functions (such as coeff, degree, map, and divide). Some functions (such as expand, diff (differentiation), and taylor) have a “core” in the kernel, and automatically load external user-language library routines for extensions. The higher-level mathematical operations (such as gcd, int (integrate), and solve, are entirely in the user-language library and are loaded only when called.

This work was supported in part by grants from the Natural Sciences and Engineering Research Council of Canada, and by the Academic Development Fund of the University of Waterloo.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. F. David Boswell, A Secure Implementation of the Programming Language Pascal, Dept. of Computer Science, University of Waterloo (1980). (M.Math thesis)

    Google Scholar 

  2. John Foderaro and Richard Fateman, “Characterization of VAX Macsyma,” Proceedings of the 1981 ACM Symposium on Symbolic and Algebraic Computation, pp. 14–19 Association for Computing Machinery, (1981).

    Google Scholar 

  3. James Gosling, Unix Emacs Reference Manual. 1981.

    Google Scholar 

  4. Martin Griss, Eric Benson, and Gerald Maguire, Jr, “PSL: A Portable LISP System,” Proceedings of the 1982 ACM Symposium on Lisp and Functional Programming, pp. 88–97 (1982).

    Google Scholar 

  5. Andrew D. Hall, Jr., “The ALTRAN System for Rational Function Manipulation — A Survey,” in Proceedings of the Second Symposium on Symbolic and Algebraic Manipulation, ed. S.R. Petrick, Special Interest Group on Symbolic and Algebraic Manipulation, Association for Computing Machinery (1971).

    Google Scholar 

  6. Carl Hoffman and Richard Zippel, “An Interactive Display Editor for MACSYMA,” Proceedings of the 1979 MACSYMA User's Conference, p. 344 (1979).

    Google Scholar 

  7. Michael Malcolm, Bert Bonkowski, Gary Stafford, and Phyllis Didur, The Waterloo Port Programming System, Dept. of Computer Science, University of Waterloo (1982).

    Google Scholar 

  8. Joel Moses, “MACSYMA — The Fifth Year,” in Proceedings of the Eurosam 74 Conference, Stockholm (August 1974).

    Google Scholar 

  9. Arthur Norman, “The Development of a Vector-based Algebra System,” Proceedings EUROCAM '82, pp. 237–248 Springer-Verlag, (1982). Lecture Notes in Computer Science #144.

    Google Scholar 

  10. Art Rich and David Stoutemyer, “Capabilities of the muMATH-79 Computer Algebra System for the INTEL-8080 Microprocessor,” EUROSAM 1979, pp. 241–248 Springer-Verlag, (1979).

    Google Scholar 

  11. David Stoutemyer, “Computer Symbolic Math and Education: a Radical Proposal,” Proceedings of the 1979 Macsyma User's Conference, pp. 142–158 MIT Laboratory for Computer Science, (1979).

    Google Scholar 

  12. David Stoutemyer, “PICOMATH-80, an Even Smaller Computer Algebra Package,” SIGSAM Bulletin 14(3) pp. 5–7 (1980).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

J. A. van Hulzen

Copyright information

© 1983 Springer-Verlag

About this paper

Cite this paper

Char, B.W., Geddes, K.O., Gentleman, W.M., Gonnet, G.H. (1983). The design of Maple: A compact, portable, and powerful computer algebra system. In: van Hulzen, J.A. (eds) Computer Algebra. EUROCAL 1983. Lecture Notes in Computer Science, vol 162. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-12868-9_95

Download citation

  • DOI: https://doi.org/10.1007/3-540-12868-9_95

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-12868-7

  • Online ISBN: 978-3-540-38756-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics