ArrayOps has a number of advantages over similar
existing libraries (e.g. Blitz++
and POOMA), including a much simpler
framework that easens the maintenance and user-specialization,
which means ArrayOps also provides different vector-datatypes
that are tailored to specific needs, and all vector-datatypes may be
combined arbitrarily in arithmetic expressions.

Example

To illustrate the basic idea of ArrayOps, consider
the following C++ source-code example where we
create and manipulate three arrays, each containing
100 elements:

Here, due to the use of socalled meta-programming, the last
line is automatically transformed at compile-time into the
following loop:

for (unsigned int i=0; i<A.Size(); i++)
{
A[i] = b*B[i] + c*C[i];
}

Where the datatypes are ensured to be the same at compile-time
and the sizes of the arrays are asserted to match in debug-mode.
Note that no implicit allocations of socalled temporaries take
place as would be the case if the valarray-class from the STL
had been used.