About This File
- 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 4.7
- Added: _Eigen_SplitMatrix_FromAcell, quartering a source matrix into four destination matrices; the specified cell marks the top-left corner of the bottom-right destination matrix.
- Added: _Eigen_CreateVector_FromAcell_Mask, for producing a column vector of values from the masked cells of an input matrix; this complements _Eigen_ConditMask, with which to create bitmasks, _Eigen_CwiseLogicalOps, for manipulating bitmasks, and _Eigen_FindAll, which yields a list of cell locations (offset, row, col) that match a given value (unity in bitmasks).
- Added: all _Eigen_CwiseLogicalOp functions now support additional logical operation xcl, which returns the bits of input matrix A unless the corresponding bit in input matrix B is 1; in other words, matrix B is used as an exclusion bitmask.
- Added: all CwiseLogicalOp functions can now return either full bit width results (32 bits) or least significant bit only (bit 0; useful for processing bitmasks), depending on whether new global environment variable $EIGEN_CLO_BIT0_ONLY is set (default: True); the latter's default is controlled by work environment functions _Eigen_Re/SetLogicalBit0only, and can also be overridden in individual CwiseLogicalOp calls with an optional parameter.
- Added: _InPlace variants for all _Eigen_ConditMask functions.
- Added: _Eigen_CreateArray_FromMatrix_Col/Row, producing a 1D array.
- Added: work environment functions: _Eigen_AppendCols/Rows/_InPlace.
- Added: work environment functions: _Eigen_IsComplex, _Eigen_IsDouble, _Eigen_IsFloat, _Eigen_IsInteger, and _Eigen_IsReal, to quickly determine a matrix's (variable) type (returns a boolean). Note that _Eigen_IsDouble and _Eigen_IsFloat ignore the state of _Eigen_IsComplex and vice versa, that is, a single- c.q. double precision matrix can still be either real- or complex-valued, and a real c.q. complex matrix can still be either single- or double precision.
- Added: work environment functions: _Eigen_IsVector, _Eigen_IsRowVector, and _Eigen_IsColVector.
- Added: boolean matrix property functions (in section: Matrix Reduction): _Eigen_HasNan, _Eigen_Haslnfinity, _Eigen_IsDiagonal, _Eigen_IsIdentity, _Eigen_IsLowerTriangular, _Eigen_IsOnes, _Eigen_IsSquare, _Eigen_IsSymmetric, _Eigen_IsUnitary, _Eigen_IsUpperTriangular, and _Eigen_IsZero.
- Added: real matrix property functions (in section: Matrix Reduction): _Eigen_GetDeterminant, _Eigen_GetMean, _Eigen_GetNorm, _Eigen_GetProduct, _Eigen_GetSquaredNorm, _Eigen_GetSum, and _Eigen_GetTrace.
- Added: min/max-related matrix property functions (in section: Matrix Reduction): _Eigen_GetCol_MaxVal, _Eigen_GetCol_MinVal, _Eigen_GetMaxVal, _Eigen_GetMinVal, _Eigen_GetRow_MaxVal, _Eigen_GetRow_MinVal, _Eigen_GetOffset_MaxVal, and _Eigen_GetOffset_MinVal.
- Added: truth tables for all CwiseLogicalOp functions, on its main topic page.
- Added: default header text for _Eigen_Show_Matrix, if not provided by user.
- Changed: _Eigen_FindAll (and subsiduaries) and _Eigen_Sort_Unique (and subsiduaries) return the number of results in macro @extended (i.e., the number of rows of the output matrix c.q. colvector).
- Changed: the following functions now return the changed dimension of the output matrix (with respect to the input matrix) in macro @extended: _Eigen_CreateMatrix_FromAdiag, _Eigen_CreateMatrix_FromAcols/rows, _Eigen_CreateMatrix_FromAcols/rows_Mask, _Eigen_CreateMatrix_FromAcols_Index, _Eigen_CreateMatrix_FromABcols/rows, and _Eigen_CreateMatrix_FromABcols/rows_Transposed.
- Changed: _Eigen_MatrixSpecs_Colwise/Rowwise_Single output matrix dimensions check relaxed to any correctly-sized vector.
- Changed: _Eigen_FindAll (but not its subsidiaries) can be provided with a predefined (3-column) output matrix, whose number of rows then imposes an upper bound on the number of results to be returned (early-out). Note that retrieving a single result (the first one found) is more efficiently achieved by calling _Eigen_Find instead.
- Changed: all CwiseLogicalOp functions now support new logical operator nor instead of flip, as the latter has become redundant. This is a script-breaking change.
- Changed: all Cwise*Op and all Cwise Condit*Op functions have been standardised in output dimensions where possible, in that all non-InPlace variants acting on a single row, col, or block now produce a row vector, col vector, c.q. block-sized matrix as output (rather than filling the targeted part of an output matrix that has to match the full input matrix in dimensions). The result of double row/col interactions depends on the Cwise function type. This is a script-breaking change.
- Changed: matrix spec #17 renamed from "nonZero" to "nonEmpty" for clarity, as it returns the number of cells that ever held any value.
- Changed: multiplication function _Eigen_OuterProduct now accepts any two vectors as input, including the same vector parsed twice.
- Changed: matrix management function _Eigen_AddExistingMatrix size check relaxed from exact to sufficiently large.
- Changed: when enabled, statistics function _Eigen_LDA's optional damping parameter $lambda is applied to both the within-class data scatter inverse and the eigensolver input.
- Changed: compiler environment upgraded to MSVC 2017 release version 15.9.5.
- Changed: Windows Platform Toolset upgraded to release version 141.
- Changed: Windows SDK upgraded to release version 10.0.17763.0.
- Fixed: potential memory leak in various _Eigen_CreateMatrix_FromA* functions.
- Fixed: operator lookup in _Eigen_CwiseLogicalOp_RowRow_InPlace and _Eigen_CwiseBinaryOp_Block/_InPlace used the wrong reference table.
- Fixed: _Eigen_ConditMask_Diag internally parsed wrong output matrix activation string.
- Fixed: _Eigen_ConditMask_Row applied wrong dimensional checks.