jakubi's blog

The actual architecture

In the volume Advanced Programming Guide of the Maple manual, the "clasical" picture of the Maple system architecture is depicted:

 A1: Internal Organization

Components

Maple consists of three main components: a kernel, a library, and a user interface. The kernel and library together are known as the math engine.

Kernel The kernel is written in the C language and is responsible for low-level operations such as arbitrary precision arithmetic, file I/O, execution of the Maple language, and the performance of simple mathematical operations such as differentiation of polynomials.

Library Most of the Maple mathematical functionality is in the Maple library, which is written in the Maple language. The library is stored in an archive, and pieces of it are loaded and interpreted by the kernel on demand.

User Interface The user interface is the part of Maple that the user sees, and is conceptually separate from the math engine. The same math engine can be used with different user interfaces.

However, the architecture of the system has been moving away from this picture for several years already. Eg:

A second parser has been implemented in the Standard GUI, instead of the kernel.

Multiple left single quotes

For a single pair of left single quotes, ?name is clear:

Any valid Maple name formed without using left single quotes is precisely the same as the name formed by surrounding the name with left single quotes.

So this is fine:

`x`;
                      x

But what about multiple left single quotes? This help page also states:

what is arctan(0,0)?

After ?invtrig:

For real arguments x, y, the two-argument function arctan(y, x), computes the principal value of the argument of the complex number x+I*y, so -Pi < arctan(y, x) <= Pi.

For any point in C or R^2 (x,y)<>(0,0) the geometrical meaning of this result is clear: the angle that the segment/vector from (0,0) to (x,y) forms with the x-axis. But this angle is undefined if this point is the origin.

So, what is arctan(0,0)?, and what it should be?

The set of protected names

The help page ?type/protected states:

The set of protected names in Maple can be computed with select(type, {unames(), anames(anything)}, protected).

However, the result of this computation is "time dependent". I.e. repeated execution of this command produce different sets. E.g. executed in a fresh session:

The single argument Complex constructor

The calling sequence in ?complex states only the two argument form 'Complex(x, y)', but later in the section "Description", in a bit confusing way, two rules for the single argument form are stated:

The continuous property

As the discussion in this thread  did not provide me a clear understanding of the implementation and intended usage of the property 'continuous' I have looked at this subject a bit further. And as it is an underdocumented subject, it seems fit to post here some issues that I have found.

Maple wiki

Because of John's answer to my last comment about a Maple wiki, I have searched first for antecedents in Maple Primes. From the many posts found in this search, I put together here what I consider the main points stated so far.

Oficial plans + technology:

http://www.mapleprimes.com/forum/how_do_we_grow_this_site

Syndicate content
}