History
Elements has solved problems since 1982.
It closely supports software development for EleSoft Research clients.
Elements' original objective was to formulate problems in aggregate arrays.
Its syntax includes data types: vector, matrix, polynomial, quaternion, hypermatrix, discrete function, and file.
The user can express his problem using these high-level objects.
This is especially useful for linear algebra and statistical problems.
Elements syntax was descriptive and did not require a special keyboard like APL.
Elements included built-in plotting.
Elements was originally written in the PL/I programming language and ran on IBM mainframes.
At the time, PL/I offered an important advantage over FORTRAN.
PL/I implemented dynamic memory allocation in each subroutine.
Numerical routines were written or came from public-domain sources: published articles and LINPACK and EISPACK packages.
All BASIC and FORTRAN routines were converted to PL/I.
Key design problems solved were:
- Inclusion of numerous aggregate data types: set, vector, matrix, polynomial, quaternion, function, and file.
- Inclusion of the hypermatrix data type.
- Inclusion of rational fraction and complex-valued objects with automatic conversion.
- Creating an effective syntax.
- Making the discrete function (table of values) syntactically equivalent with a continuous function, like
sin().
Key software problems solved were:
- Mathematics expression parser.
- Recursive-descendant expression evaluator.
This required reentrant code, and thus special handling within IBM System 370.
- Memory management of temporary evaluations.
A pool method with idle-time memory recovery (garbage collection) was selected.
Later, this was extended with immediate-recovery reference counting.
- Symbol table and hash function for declared objects.
- Robust error identification and recovery.
User interruptible execution.
- Precision of integer representation.
- Efficient default formatting of numeric precision during display of a large matrix.
- Command interpreter user interface.
Elements' development was expensive.
Each complete build cost approximately $600.
Originally, Elements was a batch-mode program whose output was printed on paper.
It can still operate in batch script mode.
In 1983, it became interactive using a special language PL/X at Stanford University.
On IBM mainframes, one of Elements' most popular features was file-algebra, the means to manipulate files using powerful functions, like: combine(), split(), sort(), merge(), and match().
In 1987, Elements was converted to C language.
It ran under Unix environments on both Sun and DEC machines.
In June 1989, Elements Version 5.0 for MS-DOS was completed.
To fit in DOS memory, Elements' code memory was reduced to 285 KBytes.
This version starts and stops almost instantaneously.
Even now, Elements benefits from the extreme compaction forced by DOS.
In November 1993, Elements Version 7.0 for Microsoft Windows 3.1 was completed.
It used Visual C++ and Microsoft Foundation Classes.
In June 1995, 32-bit Elements Version 8.0 for Microsoft Windows NT and Windows 95 was completed.
Added capabilities were:
- Salient assemblage representation of (bumpy) geometry.
- Minimum-length geodesic (path) computation.
Elements plots a geodesic on a 2D surface in three space.
In November 1997, Elements Version 9.0 was completed.
Recently software problems solved are:
- New syntax and mathematical operators that extend other industrial standards.
These include:
- Syntax very similar to JavaScript.
- Redefined built-in function names suitable for OLE Automation, but can be abbreviated during interactive use.
- Elementwise (Alt) operators
+', -', *', /', ^', and =' that perform non-standard vector-matrix calculations.
For example, M+'5 adds 5 to every element of M.
And M*'N multiplies corresponding elements in two matrices.
- SeqInteger operator
: that generates an inclusive sequence of integers between two integers.
- Transpose operator
'.
- Nested C++ virtual functions to handle the many combinations of types and number field.
- Statement compilation into intermediate representation for faster subsequent execution.
- Every plot is an ActiveX embedded object.
- Almost all plot attribute commands removed and replaced with dialog boxes.
- Elements runs as an ActiveX document inside the frame of Microsoft Internet Explorer Version 4.0.
- Automatic download and installation over the Internet.
For other technological issues, see Elements Comparisons with Other Math Environments,