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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
F. David Boswell, A Secure Implementation of the Programming Language Pascal, Dept. of Computer Science, University of Waterloo (1980). (M.Math thesis)
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).
James Gosling, Unix Emacs Reference Manual. 1981.
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).
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).
Carl Hoffman and Richard Zippel, “An Interactive Display Editor for MACSYMA,” Proceedings of the 1979 MACSYMA User's Conference, p. 344 (1979).
Michael Malcolm, Bert Bonkowski, Gary Stafford, and Phyllis Didur, The Waterloo Port Programming System, Dept. of Computer Science, University of Waterloo (1982).
Joel Moses, “MACSYMA — The Fifth Year,” in Proceedings of the Eurosam 74 Conference, Stockholm (August 1974).
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.
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).
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).
David Stoutemyer, “PICOMATH-80, an Even Smaller Computer Algebra Package,” SIGSAM Bulletin 14(3) pp. 5–7 (1980).
Author information
Authors and Affiliations
Editor information
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