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.2a
Released
E4A v5.2 (16 Jan 2021) (the 2020 HindSight Release); 5.2a adds two minor patches (affecting x64 when redefining workspace, and matrixfileconverter utility).
- Added: matrix transformation functions _Eigen_Rotate/_InPlace, for rotating an entire matrix in 90-degree steps, clockwise or counter-clockwise.
- Added: cellwise functions _Eigen_CwiseBinary/Logical/Scalar/UnaryOp_Diag/_InPlace, acting on the diagonal.
- Added: transformation functions _Eigen_Translate_Diag_InPlace and _Eigen_Translate_Block_InPlace.
- Added: transformation functions _Eigen_Clamp_Block/Col/Diag/Row and _Eigen_Translate_Block/Col/Diag/Row.
- Added: work environment function: _Eigen_IsScalar, to detect matrices with a single row and a single column.
- Added: CwiseUnaryOp operators "inc"(rement) (operator ID: 27) and "dec"(rement) (operator ID: 28).
- Added: internal function _Eigen_Check_MatrixType, conditionally called in internal function _Eigen_GetPtr.
- Added: optional $overwrite parameter for all _Eigen_ConvertMatrixFile* functions, relevant when a single filename is parsed.
- Added: work environment functions _Eigen_Re/SetIgnoreNoSwap, to control whether an error is signalled when parsing the same matrix part twice to a Swap function.
- Added: explicit support for _Eigen_Swap_ALower_AUpper and _Eigen_Swap_ALower_BUpper.
- Added: work environment x64 function: _Eigen_DefineWorkSpace, to change shared memory allocation for subsequent _Eigen_StartUp calls from within a current session; latter function amended to support this.
- Added: globals $EIGEN_LASTERROR and $EIGEN_LASTERRORMSG to facilitate debugging.
- Changed: Eigen includes for dlls upgraded to stable release version 3.3.9.
- Changed: _Eigen_Copy_A*_ToB*, _Eigen_CopyMasked_A*_ToB*, and _Eigen_CloneMatrix now return $matB instead of $matA to facilitate chained calling. This is a script-breaking change.
- Changed: transformation functions _Eigen_Sort_Block/Col/Row and _Eigen_Reverse_Block/Col/Row now produce output dimensions that match the specified matrix part (matching Cwise functions' output). This is a script-breaking change.
- Changed: all dll calls returning uint64 or int64 have been standardised to return the latter (signed) type only.
- Changed: internal global array $EIGEN_ActiveMatrices renamed to $EIGEN_ACTIVE_MATRIX_IDS, to reduce confusion with global bitflag container $EIGEN_ACTIVE_MATRICES.
- Changed: internal global variable $EIGEN_VARTYPE renamed to $EIGEN_MATRIXTYPEID; internal global variables $VARTYPE_* renamed to $EIGEN_MATRIXTYPEID_*.
- Changed: _Eigen_ResetActiveMatrix (which affects all active matrices) renamed to _Eigen_ResetActiveMatrices for clarity; original function name reassigned (see below). This is a script-breaking change.
- Changed: _Eigen_ResetActiveMatrix_Single renamed to _Eigen_ResetActiveMatrix for clarity; original name remains supported through alias wrapper.
- Changed: _Eigen_Copy_AStrictlyLower_ToBLower renamed to _Eigen_Copy_AStrictlyLower_ToBStrictlyLower for consistency; original name remains supported through alias wrapper.
- Changed: _Eigen_Copy_AStrictlyUpper_ToBUpper renamed to _Eigen_Copy_AStrictlyUpper_ToBStrictlyUpper for consistency; original name remains supported through alias wrapper.
- Changed: dimension checks in _Eigen_Multiply moved up to prevent memory leak upon mismatch error.
- Changed: _Eigen_IsActiveMatrix now also accepts multiple matrix letters in a single input string, returning False unless all parsed matrix references are currently active.
- Changed: _Eigen_ReleaseFromMarker now also prunes global arrays $EIGEN_ACTIVE_MATRICES and $EIGEN_ACTIVEMATRIX_IDS.
- Changed: _Eigen_CwiseBinaryOp_Block/_InPlace and _Eigen_ConditBinaryOp_Block/_InPlace block parameters renamed for clarity.
- Changed: _Eigen_CwiseBinaryOp_ColwiseCol/RowwwiseRow/_InPlace col/row parameter renamed for clarity.
- Changed: if $EIGEN_VERBOSE is set, _Eigen_Show_MatrixProfile now also outputs to console.
- Changed: Help documentation _Eigen_Cwise*Op double matrix part-referencing functions _ColCol/ColRow/RowCol/RowRow hidden for consistency; UDF/dll support unaffected.
- Changed: various discrepancies resolved between UDF and dll parameter names.
- Fixed: _Eigen_ReleaseMatrix_All did not return any status upon completion.
- Fixed: _Eigen_Cwise*Op_RowCol_InPlace and _Eigen_Cwise*Op_RowCol_InPlace dll functions only partially implemented intermediate evaluation.
- Fixed: _Eigen_CwiseUnaryOp_ColRow returned the wrong matrix ID.
- Fixed: various issues in _Eigen_CreateMatrix_LinSpaced_* alias preprocessing.
- Fixed: _Eigen_Transpose's refactored UDF code was mangled.
- Fixed: _Eigen_CopyAvector_To*Vector optional size parameter check did not handle the default case correctly.
- Fixed: flawed/incomplete application of bitnor binary expression in dll part of _EIgen_CwiseLogicalOp.
- Fixed: _Eigen_Reverse_Block had wrong output dimensions specified.
- Fixed: _Eigen_Sort_Block allocated block-sized output, but dll expected a full-sized output matrix (dll fixed).
- Fixed: _Eigen_Sort_EigenVectors did not filter for input matrix U (eigenvectors) being square.
- Fixed: _Eigen_Sort_Unique* did not check validity of final output container.
- Fixed: _Eigen_Translate* used wrong dll return type.
- Fixed: _Eigen_ConditMask_Diag had wrong output dimensions.
- Fixed: _Eigen_Find_Col/Diag/Row dll function returned relative instead of absolute offset.
- Fixed: removed redundant parameter $epsilon in _Eigen_HasNaN and _Eigen_HasInfinity.
- Fixed: Help description lacked optional parameter $epsilon in several _Eigen_Is* functions.
- Fixed: Help description lacked second (optional) row/column parameter for _Eigen_IsCwiseEqual_AB_Col/Row.
- Fixed: removed redundant parameter $matZ in _Eigen_Decomp_HouseholderQR definition.
- Fixed: _Eigen_Decomp_RealQZ test for real input matrix would always pass.
- Fixed: application of optional damping parameter $lambda in dll part of _EIgen_LDA.