## About This File

The **Eigen4AutoIt** environment (thread is here:

**online Help** is here) allows you to do matrix I/O (memory & files), matrix arithmetic, transformation, and decomposition, solve systems of linear equations, and perform advanced statistics, all at either single or double precision. Most functions can act on real or complex matrices (or the latter's real/imaginary parts separately). Much of the actual complexity of using Eigen in its native C++ environment has been hidden for AutoIt users, through extensive bounds and error checks, an intuitive function-naming convention, a large help file, and detailed tutorials and test examples.

This library allows you to perform **fast** matrix operations on large numerical data sets, using special matrix variables and simple AutoIt wrapper functions. These wrappers call C++ wrappers in the dlls (also written by RTFC, source included). The dlls in turn re-map AutoIt memory and call one or more Eigen functions. All operations are memory pointer-based and act directly on the matrices created in your AutoIt script, obviating the need for data transfers. Both 32-bit and 64-bit environments are supported; in x64, matrices can be **any size** that fits into virtual memory.

## What's New in Version 4.0

Released

- Added: Eigen4AutoIt.ini file, for easy adjustment of $EIGEN_DLLPATH and other operational settings.
- Added: x64 support for 64-bit architectures through a new, dedicated dll (EigenDense_x64.dll, automatically selected based upon what macro @AutoItX64 returns). Running E4A executables and scripts from Scite (F5) as a 64-bit process (NB in a 64-bit hardware + OS environment!) requires setting directive #AutoIt3Wrapper_UseX64 = Y.
- Added: _HighMem integration. In combination with x64 support, the _HighMem library allows handling matrices of any size that fits into total available virtual memory, without the usual 2/4 GB RAM allocation limit per Windows process that is normally imposed. NB This feature is limited to full 64-bit environments (64-bit machine + 64-bit OS + @AutoItX64=True).
- Added: new work evironment global $EIGEN_BITNESS (32 or 64, depending upon the content of macro @AutoItX64).
- Added: new work evironment global $EIGEN_ALLOCATE_RAM_GB (effective only if @AutoItX64=True), determining the amount of pre-allocated RAM in x64-mode; adjust in the Eigen4AutoIt.ini file.
- Added: new work evironment global $EIGEN_VERSION, containing the current E4A release version number.
- Added: _Eigen_Sort_* transformation functions for real (float, double) and integer matrices.
- Added: _Eigen_Gauss_* Gaussian statistics functions to derive Z-scores, probabilities, and p-values, given the assumption of an underlying Gaussian distribution.
- Added: Test scripts "Gauss" and "Sort."
- Added: _Eigen_Reverse_Colwise/Rowwise transformation functions.
- Added: _Eigen_CreateMatrix_FromAcols/rows_Index, expecting a matrix of col/row indices instead of a csv string. Unlike Eigen_CreateMatrix_FromAcols (original order kept), the user-defined sequence determines the new order.
- Added: _Eigen_Copy_Acell_ToBcell copy function.
- Added: _Eigen_MatrixProfile/_FromFile functions to quickly review matrix dimensions, size, and type.
- Added: _Eigen_GetMatrixSize (rows times columns), and _Eigen_GetMatrixSizeInBytes (rows times columns times $EIGEN_BYTESPERELEMENT)
- Added: _FromFile variants for several _Eigen_GetMatrix* functions in section Matrix Management.
- Added: alias wrappers for matrix-internal col/row/diag Copy functions.
- Added: internal functions _Eigen_IniRead/Write to store user settings and dll path in .\Eigen4AutoIt.ini file.
- Changed: Eigen includes for dlls have been upgraded to stable release version 3.3.4.
- Changed: default option (highlighted button) upon encountering E4A errors is now to <Cancel> the script.
- Changed: installation now requires editing the dll path in the Eigen4AutoIt.ini file.
- Changed: <specID> in all MatrixSpecs_Single variants is now base-1, in line with all other <specID> look-ups (dll call parameter internally uses base-0 ). This is a script-breaking change. Test scripts 4, 8, 14, and 16 have been updated accordingly, as has Tutorial PCA.
- Changed: MatrixSpecs parameter <specID> can now also be parsed as a string, like all other <specID> look-ups.
- Removed: _Eigen_RedefineMatrix. This is a script-breaking change.
- Fixed: <specID> in all MatrixSpecs_Single variants was not checked for being of numeric type.
- Fixed: <specID> constraints in MatrixSpecs_Row/Colwise_Single variants were insufficiently strict.
- Fixed: If a matrix conversion to an AutoIt array fails because it is too large, the call is aborted and an error message appears.
- Fixed: several bugs in MatrixFileConverter's Xbase I/O option 1Dto2D.
- Fixed: MatrixFileConverter switching to integer matrixtype through radio button did not re-initialise the work environment.
- Fixed: various typos and examples in Help document.