*Aion* Key Features And Capabilities¶

*Aion* is designed to help you efficiently design, develop, document, and
deploy computationally intensive algorithms, simulations, and mathematical
models in a single tool using an intuitive user interface.

## Self Documenting¶

*Aion* makes documenting the design and implementation of your algorithm or
mathematical model simple. You can mix rich markup with your algorithm using
a WYSIWYG user interface. Documentation you include, in-line, with your
work can include:

Text containing different fonts, point sizes, and styles.

Full control of paragraph styles, paragraph spacing and line spacing.

Support for different pages sizes and orientations on a per-page basis.

Numbered and ordered lists.

Tables

Plots, charts, images, and values generated by your algorithm or model.

You can use the documentation capabilities to do more than document the design
and implementation of your algorithm or model. Through the *Aion* user
interface, you can write detailed reports on the results of your work directly
in the tool.

Using *Aion*, you can provide robust documentation on your algorithm without
needing to maintain separate documents that can easily become inaccurate or out
of date.

Your algorithm can be printed and can be exported to a number of different formats including PDF, HTML, and LaTeX. You can also export plots or mathematical elements in a number of standard image formats.

## Design Is Documentation And Implementation¶

In addition, your algorithm or model is described using natural mathematical syntax that is embedded directly in-line with your documentation. No more traditional code to wade through. The implementation of your algorithm will be much easier to read and understand.

Through the *Aion* user interface, you can also run test cases or perform
analysis of your algorthm, documenting the results directly in *Aion*.

## Powerful Development Capabilities¶

*Aion* gives you the ability to use use natural mathematics to
simultaneously describe and implement your algorithm.

Your algorithm can use 10 different types of data:

Boolean or true/false values.

Integers

Real numbers

Complex numbers

Four different types of matricies, containing:

Boolean values (true/false)

Integers

Real values

Complex values

Sets containing arbitrary data, including matrices, sets, and tuples

Tuples containing arbitrary data, including matrices, sets, and tuples

You can also work with text *strings*. In future *Inesonic, LLC* will provide
additional more specialized data types such as saturating integers and finite
fields.

In addition to the traditional math operators, *Aion* provides a rich set
of more specialized operators, including:

Boolean or logical operators.

Set operators

Matrix operators

Case and conditional operations

Iteration operators

Operators used to group complex operations

*Inesonic, LLC* will be providing large operators such as summation, differentiation,
and integration shortly.

In addition to the provided operators, *Aion* also provides a wide range of
functions, including:

A wide selection of statistical functions.

Functions to calculate random deviates under a number of common distributions.

A wide selection of matrix functions.

A wide selection of specialized math functions.

Functions to load and save both images and audio.

Both low level and high level file functions.

*Inesonic, LLC* will be continually expanding our offering of supported functions
and operators.

The *Aion* user interface will guide you while you develop your algorithm.
Only operators and functions that are allowed will be enabled as you develop
your algorithm. The *Aion* user interface will also insert parenthesis as
you enter your mathematical statements to clarify the order of operations.
Development will be faster and less error prone.

You can test and identify errors or debug your algorithm directly in the user interface. You can stop and restart your algorithm on command or when the algorithm is about to evaluate specific statements. You can also inspect, import, export and modify variables while debugging.

Lastly, you can optionally import portions of your algorithm or model from
other files. Large efforts can be broken into smaller, more manageable, pieces
that can be developed collectively. The *import* feature allows you to do such
things as:

Calculate parameters or perform training in another set of files,

Run tests of your algorithm in a third set of files, and,

Write reports using output from your algorithm or model in a fourth set of files.

Of course, you can keep your entire algorithm or model contained in a single file.

## Deployment¶

Your algorithm or model’s speed will often be limited by the slowest part of
your algorithm. *Aion* optimizes and compiles your algorithm directly to
machine code so that your model runs as fast as your hardware allows without
a slow interpreter.

In addition, where possible, *Aion* uses features such as lazy evaluation,
copy-on-write, and memoization to improve performance and reduce memory usage
when handling large data structures.

When developing models, you can often use the increased performance to trade off conceptual simplicity for computational complexity. By compiling your model, you are often able to use conceptually simpler algorithms for your models. This can make your models and simulations easier to read, easier to understand, and more reliable.

You can export your algorithm as an object file or dynamic library that you can link against other programs. You no longer need to use one language to develop and prototype your algorithm and a second language to implement your algorithm. Our compiler can often yield performance comparable to what you can obtain using hand coded C, C++, or FORTRAN code.

Lastly, if needed, you can develop your own plug-ins giving your algorithm or model access to your own functions.