“Ex” is the name of a library of software modules from which one can rapidly develop prototype or production versions of efficient numerical-computation application programs in the Native Oberon programming environment. Mathematical constructs that can be represented and processed by use of Ex modules include both integer and non-integer rational, real, and complex numbers; vectors; matrices; and the arithmetic, algebra, and calculus of the aforementioned quantities.

Native Oberon (which is so named for literary and historical reasons) is a fully functional operating system developed and maintained by the Institute for Computer Systems at ETH-Zürich, Switzerland. It runs on Intel-compatible personal computers. Native Oberon can also function as an X Window application program running under the Linux operating system. The Oberon operating system is written in the Oberon language, which is a fully functional object-oriented descendant of the Pascal programming language. Oberon features the readability of Pascal and is designed to be “safe” in the sense that it minimizes errors early in the development of an application program.

The software modules in Ex are grouped into three tiers: a set of lowerlevel modules, an intermediate interface module, and a set of higher-level modules. The set of lower-level modules provides base types for numbers used in numerical analysis; specifically, integer, rational, real, and complex numbers are defined. The integers are defined as a subset of the rational numbers, which are defined as a subset of the real numbers, which, in turn, are defined as a subset of the complex numbers. Also defined are associated vector and matrix types, e.g., integer vectors and complex matrices. The arithmetic operators “+”, “-”, “*”, “/”, “DIV,” and “MOD” and the assignment operator “:=” have all been overloaded (in the computer-programming sense), as appropriate, enabling the writing and facilitating the maintenance of clean code.

The intermediate interface module defines the base type for an Ex object. It also provides a means to make Ex objects, their extensions, and the Ex base types persistent.

The set of higher-level modules contains subsets of modules to implement various objects, functions, and operations, as follows:

*Data structures*— queues, stacks, lists, and trees, which are Ex objects;*Mathematical functions*— numbers, series, calculator math, and matrix math; and*Calculus*— integrals, derivatives, ordinary differential equations, and optimization, for both the classical (i.e., integer) and fractional calculi.

Unlike the interfaces of the other tiers, which are expected to undergo little to no change with further development of Ex, the modules in this tier will likely grow and evolve as new functions and capabilities are added.

Software packages similar to Ex have been developed previously [e.g., __L__inear __A__lgebra __Pack__age (LaPACK) in the FORTRAN language], but not in Oberon. Thus, Ex is expected to enhance the value of Oberon as an alternative to other languages for developing numerical-computation application programs.

*This program was written by Alan D. Freed of ***Glenn Research Center***. For further information, access the Technical Support Package (TSP) free on-line at www.nasatech.com/tsp under the Software category.*

*Inquiries concerning rights for the commercial use of this invention should be addressed to NASA Glenn Research Center, Commercial Technology Office, Attn: Steve Fedor, Mail Stop 4–8, 21000 Brookpark Road, Cleveland, Ohio 44135. Refer to LEW-17064.*

##### NASA Tech Briefs Magazine

This article first appeared in the January, 2002 issue of *NASA Tech Briefs* Magazine.

Read more articles from the archives here.