## About This File

The **Eigen4AutoIt** environment (thread is **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.

## What's New in Version 3.2

Released

- Added: _Eigen_RanSeed() to re-initialise Eigen's own randomiser with a user-defined integer seed (0 - 4GB). This affects all E4A functions that contain the keywork "Random." Please do not confuse it with AutoIt's own SRandom function.
- Added: _Eigen_CwiseUnaryOp rounding functions ceil, floor, and round; log functions log10 and log1p (log(1+x); power functions rsqrt [1/sqrt(x)] and abs2 ([abs(x)]^2); and hyperbolic functions: sinh, cosh, and tanh.
- Added: _Eigen_ConditCount_Colwise() and _Eigen_ConditCount_Rowwise() cellwise-conditional functions.
- Added: _Eigen_Swap_Acell_Acell() and _Eigen_Swap_Acell_Bcell() swap functions.
- Added: _Eigen_MatrixSpecs_*_Single() functions now also retrieve the full coordinates of min/max values.
- Added: _Eigen_LoadMatrix_Transposed() and _Eigen_SaveMatrix_Transposed() file I/O functions.
- Added: Test script "Inversion"
- Changed: complex matrix file storage is now split (entire real part first, followed by entire imaginary part) instead of interleaved (real and imaginary parts stored per matrix cell). This is a script-breaking change (if storing/loading complex matrices on/from file).
- Changed: _Eigen_MatrixDisplay() splash text window "Please wait" is now moveable.
- Changed: dll is now compiled with flag /LARGEADDRESSAWARE; performance may vary.
- Fixed: CwiseUnaryOp calls did not accept operator list indices (only operator strings).
- Fixed: internal function _Eigen_GetOperatorID() applied string conversion prematurely.
- Fixed: CwiseBinaryOp functions' dimensional checks were too strict in some cases.
- Fixed: CwiseBinaryOp variants ColCol, ColRow, RowCol, and RowRow in dll applied wrong index/dimension to source matrix A.
- Fixed: _Eigen_MatrixSpecs_Block dll function name was garbled in wrapper.
- Fixed: various typos and examples in Help document.