The program consists of a small kernel written in C++ and the mathematical
Libraries written in the MuPAD programming language. All features described
may be used interactively or via the programming language. The usual control
structures for programming (loops, switches, procedures) are also available
at interactive level. Kernel and library are machine independent. In addition
to the terminal-based user interface window-based
interfaces exist for the X-Window-System, Apple Macintosh and Windows
95/NT.
The MuPAD programming language has various built-in constructs for parallel
programming, accessible at any level of programming experience. First parallel
implementations exist. MuPAD is devoted to the scientific community and
freely distributed by the authors for non-commercial use.
Integers and rational numbers of any length, floating point and complex numbers of arbitray precision, multivariate sparse polynomials, strings, Booleans, variable identifiers, dynamic lists, sets and tables, arrays of any dimension, user defined types (domains) and objects, a rich set of expressions, procedures and statements, which are first class data objects...
E, PI, I, FALSE, TRUE, various system constants...
Operand extraction, counting and substitution, object type testing, indeterminate extraction, concatenation of strings and lists, set manipulation, extraction, sorting and substitution of list, set, table, and array elements, mapping operands to functions, string searching, pattern matching, parsing, conversion of strings and polynomials to expressions and vice versa, run-time generation and manipulation of procedures...
Arithmetic (+, -, *, /, ^, mod, div), relational (<, >, <=, >=, =, <>), Boolean (and, or, not), set operations (union, intersect, minus), concatenation (.), range (..), sequencing (, and $), domain attribute access (::), assignment (:=), last output (%), user defined operators. System functions and operators may be overloaded by user defined types...
Absolute value, exponential, logarithm, square root, sign, trigonometric and hyperbolic functions and inverses, rounding, ceil and floor, truncation, modular computation, factorial, maximum and minimum, numeric evaluation, extraction of numerator and denumerator, fractional part, real and imaginary part, set union, intersection and difference, set membership, differentiation and expansion of expressions, taylor series and order terms, differential operator...
Coefficient mapping and extraction, degree, leading coefficient, term and monomial (lexical and degree order), trailing coefficient, number of terms, nth coefficient, division and pseudo-division, evaluation, integer content, norm, factorisation...
User defined types and data structures, operator overloading, object oriented programming, generic algorithms. As experimental library: parametric domains, domain constructors, categories, category constructors, axiomes...
Integer factorisation, integer GCD and LCM, extended Euclidean algorithm, prime number test, prime number generation, Eulers phi function, random number generation.
Also refer to: MuPAD Demo , new features of the current release of MuPAD.
Selection of printing and error level, line width, formatted or non-formatted output, verbose printing during procedure execution, recalling of earlier results. Line editor for raw terminal interface.
Look and feel of OpenLook, editing and recall of input and output, scroll back, two and also three dimensional plotting with mouse-controlled interface , on-line manual and tutorial with hypertext functionality, pasting of examples from these documents into the input window, mouse controlled interface for source code debugger.
Mac-like interface with notebook functionality, structured session documents, editing of text documents, graphics, debugger and hypertext system as in the X-Windows version.
Windows-95-style interface with notebook functionality, structured session
documents, editing of text documents, OLE-support, Drag&Drop, online-hypertext and graphics tool (alpha
version)
Any property of a plot may be set interactively in VCam or defined in a plot-command. VCam Graphics front-end for 2- and 3-dimensional plotting, running under X-Windows and MacOS; thightly coupled with the MuPAD kernel. An alpha-version of VCAM exists for Windows 95/NT. The functions to be plottedmay be entered and manipulated directly in VCam, objects can be added or deleted by a mouse-click.
Two-dimensional scenes, graphs, curves, list of points/lines/polygons; multiple objects per scene; object style may be points, lines or impulses; options for titling, labeling, colour selection, smooth colouring by height, colouring by user defined functions, axes scaling and style, automatic viewing box, grid and smoothness.
Three-dimensional scenes, graphs, surfaces, space curves, list of points/ lines/polygons; multiple objects per scene; object style may be points, lines, impulses, wire frame, mesh, x-line, y-line, hidden line, colour patches, transparent; options for titling, labeling, colour selection, smooth colouring by height, colouring by user defined functions, axes scaling and style, automatic viewing box, camera point and focal point, grid and smoothness.
Graphical Primitives like points, lines, polygons and closed and filled
polygones of three points can be combined to create 2D and 3D scenes. Plots
can be directly saved in different formats: ASCII, Binary, Raster-, Gif-
and Postscript-Files.
The language defined bu the MuPAD kernel is a functional programming
language with procedural extensions in Pascal-like syntax. Procedures
and statements are ordinary data objects and may be manipulated at run-time.
Any language construct, including loops or if-statements is available as
a system function. Any system function may be re-defined by user-procedures.
So-called domains - user-definable data structures - allow easy object-oriented
programming, i.e. inheriting methods from super-domains and overloading
of arbitrary operators. Matrices - for example - are added or multiplied
by using the usual + and * Operators. No special functions are needed. Similar,
strings can be concatenated with +.
Assignment, expression, statement sequence, if then elif else end_if, for from to step do end_for, while do end_while, repeat until end_repeat, case of do otherwise end_case, proc() begin end_proc, break, next, error, return, parameter lists of varying length.
The programmer has full control over the evaluation of expressions and the substitution of variables: holding evaluation, evaluation in an outer context, defining substitution level, additional evaluation, retrieving values directly. Procedures may remember calculations to speed up execution. Results are stored in a history table which may be accessed interactively and by procedures.
Reading and writing of text and binary (M-Code) files, opening and closing of files, reading and writing of MuPAD data and raw text, printing output to file, writing a session protocol to file. Entering expressions or text interactively.
Execution tracing, verbose procedure execution, different printing and
error levels, error trapping. A source code debugger allows to step through
procedures, print and observe values of variables, alter values of variables,
execute instructions, display the procedure stack. The debugger is integrated
into the kernel and may be used via command language or a comfortable window-based
user interface (available under the X-Window-System).
There are two levels of parallelism in MuPAD : micro-parallelism on a processor cluster with high speed communication facilities (a multi-processor machine for example) and macro-parallel ism on a network of clusters with medium- to low-speed communication.
Automatic task creation and distribution by the system. Easy-to-use language constructs: parallel for-loop, parallel and sequential blocks, private and global variables, task abortion.
Blocking and non-blocking message queues and pipes, global network-wide
variables, topology informations.
Besides the conventional concept of libraries written in the language of the CA system, MuPAD offers another library concept, called dynamic modules. Users can implement algorithms in the C++ programming language to extend the MuPAD system by new functions. The advantages are:
Dynamic modules do not need any interprocess communication, they are directly linked to the MuPAD kernel on demand at run time. It is also possible to unload modules at run time. The method used to bind the modules to the MuPAD kernel is called dynamic linking therefore we speak of dynamic modules. At the moment dynamic modules are available on the following platforms:
Versions for PowerMacintosh and Windows 95/NT are available will the
current developer's version.
In addition to the printed manual and the online documentation you will
find information on different aspects of MuPAD in the following issues of MathPAD Vol. 3. Heft 2, 9/93 (in German)
and Vol. 4. Heft 1, 3/94 (in English), both issues can be found on our server.
E-mail: MuPAD-distribution@uni-paderborn.de WWW : http://math-www.uni-paderborn.de/MuPAD/ FTP : math-ftp.uni-paderborn.de/MuPAD/
MuPAD-Distribution
Fachbereich 17, Automath
Universität-GH Paderborn
D-33095 Paderborn
Germany