About This File
Eigen4AutoIt Features:
- free, fast matrix computing environment for Windows (runs under Wine on Linux and Mac)
- built upon the robust Eigen code base (open-source), with many enhancements
- simple, intuitive functions, with extensive online documentation
- supports integer, single, and double precision, in real and complex matrices
- Tutorials with scripts, plus Test scripts for each function section
- easily exchange data between native binary files (.mat) and ASCII, Excel, and Xbase files, or AutoIt arrays
- 32-bit (x86-mode) and 64-bit (x64-mode) support
- in x64-mode, matrices can be any size that fits into available virtual memory (>4GB), and can be shared between processes
- over one thousand alias wrappers for flexibility and ease-of-use
The Eigen4AutoIt thread is here:
This computing environment allows you to do matrix I/O (memory & files), matrix arithmetic, transformation, reduction, and decomposition, solve systems of linear equations, and perform statistics. Most functions can act on integer, 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.
What's New in Version 5.3
Released
- Added (finally): Optional matrix file de/compression for integer and real matrices, using the open-source ZLib library (see www.zlib.net) as back end. Loading un/compressed matrices from file is transparent (no new functions are required), as is any operation affecting the matrix file header only. To store a specific matrix compressed on file, use new File I/O functions _Eigen_SaveMatrix_Compressed and _Eigen_SaveMatrix_Transposed_Compressed. Alternatively, set new operational flag $EIGEN_ALWAYSCOMPRESS prior to saving (see below). NB matrix variable type conversion on file (without loading into memory first) is not supported for compressed matrix files at this time (instead, load these into memory first and resave compressed). See also new example script EigenTest_29a/b_FileCompression.au3.
- Added: The current matrix file storage mode (compressed/uncompressed, matrix vartype bit8 in the matrix file header) can be checked with new File I/O function _Eigen_IsCompressed, or with amended function _Eigen_ShowMatrixProfile_FromFile.
- Added: global operational flag $EIGEN_ALWAYSCOMPRESS, controlled by Work Environment functions _Eigen_[Re]SetAlwaysCompressed, stored in Eigen4AutoIt.ini, and displayed by _Eigen_ShowEnvironmentVars. This flag controls whether calls to _Eigen_SaveMatrix[_Transposed] are automatically redirected to their compressed equivalent. This allows all existing E4A scripts to switch to compressed file storage without changing a single line of user code.
- Added: _Eigen_GetMatrixHash_MD5 for retrieving a hex-string hash of the binary data in a matrix (excluding the file-only header); useful for checking matrix integrity and testing exact equality before and after operations that should leave the target matrix unchanged.
- Added: Transformation function _Eigen_ClampValue (plus all matrix part variants), to replace all values within a defined range with a single constant.
- Added: Transformation function _Eigen_Rescale (plus all matrix part variants), to replace a given linear range of values with a newly-defined range.
- Added: CwiseUnaryOp* operators "rad2deg" (operator ID: 29) and "deg2rad" (operator ID: 30, to convert between radians and degrees.
- Added: CwiseScalarOp* new bitwise operators (operator IDs10-17) for integer matrices: shift-left/right ("shl", "shr"), rotate-left/right int ("rol", "ror") , rotate-left/right byte ("rol8", "ror8") , and rotate-left/right word ("rol16", "ror16"); these operators are unavailable for ConditScalarOp*, but are accessible in CwiseScalarMasked* for selective application using a bitmask matrix.
- Added: advanced Matrix Management function _Eigen_Remap_MatrixRows, to remap a contiguous sequence of cells in a (col)vector as a separate vector.
- Changed: Eigen includes for dlls upgraded to stable release version 3.4.0.
- Changed: Transformation functions _Eigen_Transpose_InPlace and _Eigen_Reverse_Cols no longer support complex part variants, due to an incompatibility with Eigen's revised template function. This is a script-breaking change.
- Changed: functions _Eigen_FindAll variants no longer throw an error if nothing is found, matching _Eigen_Find in behaviour.
- Changed: most dimensional checks have been relaxed from "exact" to "sufficient," in particular when parsing an existing matrix to store new results.
- Fixed: functions _Eigen_CwiseLogicalOp_Diag/InPlace dll support for integer matrices was missing.
- Fixed: functions _Eigen_CreateMatrix_Random_Integer wrapper support for integer matrices was disabled.
- Fixed: functions _Eigen_FindAll subsidary variants did not provide the option of parsing an existing matrix to collect results (to enable control over the number of results returned).
- Fixed: under x86, _Eigen_RemapCols remapped the entire matrix instead of the selected column range only.
- Fixed: potential memory leak affecting call stack in _Eigen_SortUnique*, _Eigen_Copy_Acol_toAcol, and _Eigen_Copy_Arow_toArow.
- Fixed: internal auxiliary function _HighMem_ReleaseAll allocation array bounds were not updated.