## 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.1

Released

- Added: Linear Discriminant Analysis statistics functions _Eigen_LDA*, with new Tutorial.
- Added: function _Eigen_CloneMatrix_Transposed.
- Added: option to transpose array in _Eigen_CloneArray.
- Added: functions _Eigen_CreateMatrix_FromAcols/Row_Mask.
- Added: option to invert row/col selection in _Eigen_CreateMatrix_FromAcols/rows/_Transposed. Internal function _Eigen_Selection_ToTable now accepts a third, optional parameter to enable this.
- Added: conditional bit mask functions _Eigen_ConditMask/_InPlace.
- Added: matrix multiplication functions _Eigen_Multiply_AtBA/ABAt.
- Added: _Eigen_Sort_Unique/Block/Col/Diag/Row, to return a colvector of the sorted unique values found in an input matrix or part thereof (treated as a vector).
- Added: _Eigen_Freq/Block/Col/Diag/Row, to return a colvector of the frequencies of provided sorted unique values (as produced by _Eigen_Sort_Unique) found in (part of) a supplied input matrix.
- Added: _Eigen_Sort_EigenVectors, to re-order both (unsorted) eigenvalues (absolute largest first) and their associated eigenvectors, as returned by EigenSolvers and decompositions; useful for dimensional reduction prior to reprojection into eigenspace.
- Added: _Eigen_MatrixSpecs_Rowwise_Single/Colwise_Single now support obtaining the column/row index for the min/max value per row/col, as well as the value itself.
- Added: optional flag $presetA (default: True) to _Eigen_ResetActiveMatrix, to enable explicit disabling of matA in the active matrices list.
- Added: matrix-internal Copy functions _Eigen_Copy_Acol_ToAcol and _Eigen_Copy_Arow_ToArow.
- Added: singular value decomposition function _Eigen_Decomp_BDCSVD (faster alternative to JacobiSVD for large inputs), with Test script.
- Added: shared memory management functions (in x64-mode): _Eigen_GetMatrixAbsolute/RelativeAddress, _Eigen_Map/UnMap_ExternalMemory, _Eigen_UnMap_AllExternalMemory, and _Eigen_Obtain/Release_ExclusiveAccess, plus Test script.
- Added: x64-mode environment functions _Eigen_Set/ResetSharedAccess for default multi-processing without data transfers; these control new global variable $EIGEN_SHAREDACCESS.
- Added: environment functions _Eigen_Set/ResetVerbose for status messages; these control global variable $EIGEN_VERBOSE.
- Changed: auxiliary UDF library _HighMem (by yours truly), upgraded to beta version 0.9, now supports multi-process shared memory.
- Changed: _Eigen_Copy_A_ToB now supports automatic transposition if the provided destination matrix's dimensions are a) different and swapped with respect to the source matrix (ergo, this excludes square matrices from being transposed-copied in this manner). Internal function _Eigen_Check_SameDims now accepts a third, optional parameter to enable this.
- Changed: _Eigen_Show_DecompSpecs now supports parsed flag $wipeFirst (default: True).
- Changed: internal function _Eigen_CheckDllCallSuffix now uses faster _ArrayBinarySearch.
- Changed: added optional parameters for _Eigen_CreateMatrix control shared access in multi-processing.
- Changed: _Eigen_SaveMatrix/_Transposed now have an additional flag to force overwriting any existing file without warning, regardless of whether warning messages are enabled.
- Fixed: _Eigen_LoadMatrix did not interpret file sizes exceeding 4 GB correctly.
- Fixed: internal function _Eigen_SetActiveMatrix did not handle <space> correctly.
- Fixed: various typos and examples in Help document.