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:

Mens Oakland Raiders Bow Tie,Men's Washington Redskins New Era Burgundy NFL Draft 59FIFTY Reflective Fitted Hat Patriots Jerseys Wholesale.Men's Atlanta Falcons Cutter & Buck Black WeatherTec Beacon Full-Zip Jacket,Washington Redskins Tiffany Table Lamp,Men's New York Jets Leonard Williams Nike White Game Jersey.Girl's Youth Arizona Cardinals Gray Amethyst Fleece Crew Neck Sweatshirt,New York Giants 4-Time Super Bowl Champion Commemorative Acrylic Scarf.Womens New York Jets Nike Gray Tri-Blend Helmet Tank Top,Juniors Arizona Cardinals White Rocker Raglan T-Shirt,Youth Tampa Bay Buccaneers Doug Martin Nike Red Team Color Game Jersey.Women's Pittsburgh Steelers Black Primary Foil Logo Tri-Blend Pullover Hoodie,Men's Cincinnati Bengals Pro Line Black Big Sizes San Marco Long Sleeve T-Shirt,Philadelphia Eagles Women's Game Tradition II T-Shirt - Midnight Green.New York Jets Protoast MVP Team Logo Toaster,Women's Denver Broncos CJ Anderson Nike Orange Game Jersey Patriots Jerseys Cheap.Girls Youth Seattle Seahawks Nike College Navy Replica Game Jersey,Women's Minnesota Vikings Majestic Purple Game Day Tradition V-Neck T-Shirt,Chicago Bears Premium Metal Auto Emblem Patriots Jerseys On Sale.Dallas Cowboys 27" x 37" Throwback Helmet Vertical Banner,New Orleans Saints Newborn Girls 3-Piece Ruffle Creeper Set - White/Pink/Ash Wholesale New England Patriots Jerseys
  • 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,