Project details for Armadillo library

Screenshot Armadillo library 0.4.0

by cu24gjf - January 28, 2009, 14:23:50 CET [ Project Homepage BibTeX Download ]

view (4 today), download ( 0 today ), 3 subscriptions

OverallWhole StarWhole StarWhole StarWhole StarEmpty Star
FeaturesWhole StarWhole StarWhole StarWhole StarEmpty Star
UsabilityWhole StarWhole StarWhole StarWhole Star1/2 Star
DocumentationWhole StarWhole StarWhole Star1/2 StarEmpty Star
(based on 2 votes)
Description:

C++ linear algebra library aiming towards a good balance between speed and ease of use. Optional interfaces to LAPACK and ATLAS. Uses recursive templates and template meta-programming to combine several operations into one and reduce the need for temporaries.

Changes to previous version:

Initial Announcement on mloss.org.

BibTeX Entry: Download
URL: Project Homepage
Supported Operating Systems: Linux, Macosx
Data Formats: None
Tags: Atlas, Lapack, Linear Algebra
Archive: download here

Other available revisons

Version Changelog Date
4.320
  • expanded sparse eigen-decomposition functions eigs_sym() and eigs_gen() to use an optional tolerance parameter
  • expanded dense eigen-decomposition function eig_sym() to automatically fall back to standard decomposition method if divide-and-conquer fails
  • expanded interactions between cube tubes and vectors
  • fix for saving cubes in HDF5 format
July 12, 2014, 06:03:01
4.300
  • faster find()
  • faster transpose of sparse matrices
  • faster inverse of matrices marked as diagonal
  • more efficient handling of aliasing during matrix multiplication
  • added find_finite() and find_nonfinite() for finding indices of finite and non-finite elements
  • expressions X=inv(A) * B * C and X=A.i() * B * C are automatically converted to X=solve(A,B * C)
  • cmake-based installer enables use of C++11 random number generator when using gcc 4.9+ in C++11 mode
May 5, 2014, 02:43:05
4.100
  • added normalise() for normalising vectors to unit p-norm
  • extended the field class to handle 3D layout
  • extended eigs_sym() and eigs_gen() to obtain eigenvalues of various forms (eg. largest or smallest magnitude)
  • automatic SIMD vectorisation of elementary expressions (eg. matrix addition) when using Clang 3.4+ with -O3 optimisation
  • faster handling of sparse submatrix views
  • workaround for a bug in LAPACK 3.4
February 28, 2014, 07:53:24
4.000
  • added MEX connector for interfacing Octave/Matlab with Armadillo matrices (contributed by George Yammine)
  • faster divide-and-conquer decompositions are now used by default for svd(), svd_econ(), pinv(), eig_sym(), princomp(), rank()
  • added eigen decomposition for pair of matrices: eig_pair()
  • added simpler forms of eig_gen()
  • added condition number of matrices: cond()
  • expanded find() to handle cubes (3rd order tensors)
  • expanded subcube views to access elements specified in a vector
  • template argument for running_stat_vec expanded to accept vector types
  • more robust fast inverse of 4x4 matrices
  • added eigen decompositions of sparse matrices: eigs_sym() and eigs_gen()
January 6, 2014, 03:59:23
3.930
  • added divide-and-conquer variant of svd_econ(), for faster SVD
  • added divide-and-conquer variant of pinv(), for faster pseudo-inverse
  • added element-wise variants of min() and max()
  • added size() based specifications of submatrix view sizes
  • added randi() for generating matrices with random integer values
  • added inplace_trans() for memory efficient in-place transposes (contributed by Alexandre Drouin)
  • added more intuitive specification of sort direction in sort() and sort_index()
  • added more intuitive specification of method in det(), .i(), inv() and solve()
  • added more precise timer for the wall_clock class when using C++11
December 10, 2013, 05:12:39
3.920
  • faster multiplication of a matrix with a transpose of itself
  • faster round(), exp2() and log2() when using C++11
  • added signum function: sign()
  • added move constructors when using C++11
  • added 2D fast Fourier transform: fft2()
  • added .tube() for easier extraction of vectors and subcubes from cubes
  • added vectorise() for reshaping matrices into vectors
  • added all() and any() for indicating presence of elements satisfying a relational condition
  • minor fix for inplace reshape()
  • minor corrections for compilation issues under GCC 4.8+ and MSVC
November 1, 2013, 03:19:07
3.900
  • added automatic SSE2 vectorisation of elementary expressions (eg. matrix addition) when using GCC 4.7+ with -O3 optimisation
  • added detection of the OpenBLAS library during installation, which provides multi-threaded (parallelised) matrix multiplication
  • added support for saving & loading of cubes in HDF5 format
  • much faster median()
  • faster handling of compound expressions with transposes of complex vectors or submatrix rows
  • faster as_scalar() for compound expressions
  • minor fix for linking with MKL on Ubuntu systems
June 4, 2013, 15:59:18
3.810
  • added fast Fourier transform
  • added handling of .imbue() and .transform() by submatrices and subcubes
  • added batch insertion constructors for sparse matrices
  • minor fix for multiplication of complex sparse matrices
  • better detection of recent Intel MKL versions during installation
April 22, 2013, 05:24:18
3.800
  • Armadillo is now licensed using the Mozilla Public License 2.0
  • added .imbue() for filling a matrix/cube with values provided by a functor or C++11 lambda expression
  • added .swap() for quickly swapping contents with another matrix
  • added .transform() for transforming a matrix/cube using a functor or C++11 lambda expression
  • added round() for rounding matrix elements towards nearest integer
  • faster find(), for finding indices of elements according to a relational expression
  • fixes for handling non-square matrices by qr() and qr_econ()
  • minor fixes for handling empty matrices
  • reduction of pedantic compiler warnings under gcc 4.8
March 5, 2013, 04:41:51
3.6.2
  • faster determinant for diagonal and triangular matrices
  • faster trace()
  • fix for handling sparse matrices by dot()
  • fixes for interactions between sparse and dense matrices
  • more fine-grained handling of 64 bit integers
February 1, 2013, 08:36:22
3.6
  • faster handling of compound expressions with submatrices and subcubes
  • added support for loading matrices as text files with NaN and Inf elements
  • added stable_sort_index(), which preserves the relative order of elements with equivalent values
  • added handling of sparse matrices by mean(), var(), norm(), abs(), square(), sqrt()
  • added saving and loading of sparse matrices in arma_binary format
December 7, 2012, 06:13:25
3.4
  • added preliminary support for sparse matrices
  • added economical QR decomposition: qr_econ()
  • added .each_col() & .each_row(), for vector operations repeated on each column/row
  • faster randn()
  • faster singular value decomposition via divide-and-conquer algorithm
September 6, 2012, 10:33:19
3.2
  • faster eigen decomposition via "divide and conquer" algorithm
  • faster transpose of vectors and compound expressions
  • faster handling of diagonal views
  • faster handling of tiny fixed size vectors (≤ 4 elements)
  • added unique(), for finding unique elements of a matrix
May 21, 2012, 06:11:27
3.0.2
  • added shorthand for matrix inverse
  • faster repmat()
  • fixes for handling diagonal matrices
  • fixes for compilation errors
  • fixes for potential aliasing issues
April 25, 2012, 04:26:17
2.99.2
  • added non-contiguous submatrix views
  • faster handling of submatrix views with one column or row
  • faster generation of random numbers
  • faster element access in fixed size matrices
  • better detection of compound vector expressions by various functions
March 28, 2012, 18:02:57
2.3.91
  • added shorter forms of transposes
  • added optional use of 64 bit indices, allowing matrices to have more than 4 billion elements
  • added experimental support for C++11 initialiser lists
  • faster pinv()
  • faster inplace transpose
  • fix for speed issue in as_scalar()
  • bugfixes for handling expressions with aliasing and submatrices
  • refactored code to eliminate warnings when using the Clang C++ compiler
November 16, 2011, 09:29:31
1.99.5
  • added economical singular value decomposition
  • faster multiplication of small matrices
  • faster transpose
  • faster handling of submatrices by norm()
  • fixes for handling of complex numbers by cov(), cor(), running_stat_vec
  • fix for handling of conjugate transpose by as_scalar()
  • fix for handling of aliasing by diagmat()
  • fix for handling of empty matrices by symmatu()/symmatl()
June 26, 2011, 07:07:53
1.99.3
  • faster inverse of symmetric matrices
  • faster element access for fixed size matrices
  • faster multiplication of tiny matrices (eg. 4x4)
  • faster compound expressions containing submatrices
  • added handling of arbitrarily sized empty matrices (eg. 5x0)
  • added syl(), for solving Sylvester's equation
  • added submatrices of submatrices
  • added .count() to running_stat and running_stat_vec
  • most functions with matrix inputs no longer throw exceptions for empty matrices
May 28, 2011, 05:10:22
1.1.8
  • Added interpretation of arbitrary "flat" subcubes as matrices
  • Added floor() and ceil()
  • Faster min(), max(), mean(), sort(), prod()
  • Faster solve() for compound expressions
  • Fixed size matrices and vectors can use auxiliary (external) memory
  • Bugfix for compilation using GCC's C++0x mode
  • Bugfix for matrix handling by subcubes
  • Bugfix for a corner case with NaNs in min() and max()
  • Updated installation to detect recent versions of Intel's MKL
March 10, 2011, 15:29:43
1.1.0
  • Extended submatrix views, including access to elements whose indices are specified in a separate vector
  • Added handling of raw binary files by save/load functions
  • Added cumsum()
  • Added interpretation of matrices as triangular via trimatu()/trimatl()
  • Faster solve() and inv() via explicit handling of triangular matrices
  • The stream for logging of errors and warnings can now be changed
January 7, 2011, 00:30:21
0.9.92
  • added matrix norms
  • added overview technical report
  • speedups and bugfixes in LU decomposition
  • fixes for compilation issues under the Intel C++ compiler
  • minimisation of pedantic compiler warnings
November 11, 2010, 11:56:53
0.9.80
  • Many speedups due to internal architecture improvements
  • Added template-based size specification of matrices
  • Added insertion/deletion of rows & columns
  • Added insertion/deletion of cube slices
  • Added set_imag() & set_real()
  • Added in-place operations on diagonals
  • Fixes for a few corner cases
September 22, 2010, 01:20:11
0.9.60
  • Added detection of MKL & ACML (high speed LAPACK) during installation
  • Added MSVC project files for compiling examples
  • Added conversions to/from std::vector
  • Added convolution operation
  • Added toeplitz()
  • Added matrix initialisation via the << operator
  • More flexible reshape()
  • More consistent success indication by decomposition functions
  • Faster compilation by omitting Boost where possible
  • Various speedups and bug fixes
August 5, 2010, 13:16:54
0.9.6
  • Added STL-style iterators
  • Added join_rows()/join_cols() for appending matrices
  • Added partial clone of Matlab/Octave's find()
  • Added cross product: cross()
  • Added PCA: princomp_cov()
  • Various bug fixes and speedups
April 29, 2010, 04:34:50
0.9.0
  • extended and overhauled expression evaluation framework, for faster handling of compound expressions
  • improvements in the documentation, including a conversion table between Matlab and Armadillo syntax
February 8, 2010, 04:06:17
0.8.0
  • Added pinv(), rank(), kron(), prod(), eps(), shuffle()
  • Added ‘running_stat_vec’ class, for on-the-fly statistics of vectors
  • Improvements and bugfixes in handling of submatrix views
  • Speedups for some compound expressions
  • Initial support for dodgy compilers
December 14, 2009, 09:07:38
0.7.0

Changes since version 0.6.12:

  • Added the Cube class (aka "3D matrix" or a set of matrices with contiguous memory)
  • Added creation of matrix instances using auxiliary memory
  • Added a clone of Matlab's repmat() function
  • Bugfixes for det() and lu()

Changes since version 0.6.11:

  • Code cleanup for better conformance to the C++ standard
  • Added raw_print()
  • Added a collection of physical constants
  • Miscellaneous documentation and installation improvements
October 7, 2009, 10:28:10
0.6.12

Changes since version 0.6.11:

  • Code cleanup for better conformance to the C++ standard
  • Added raw_print()
  • Added a collection of physical constants
  • Miscellaneous documentation and installation improvements

Changes since version 0.6.7:

  • Eigen decomposition of generic (non-symmetric) matrices
  • Bug fix for solve() when using complex numbers
  • More elaborate class destructors for better debugging of user code
  • Miscellaneous documentation and installation improvements
July 7, 2009, 03:59:34
0.6.11

Changes since version 0.6.11:

  • Code cleanup for better conformance to the C++ standard
  • Added raw_print()
  • Added a collection of physical constants
  • Miscellaneous documentation and installation improvements

Changes since version 0.6.7:

  • Eigen decomposition of generic (non-symmetric) matrices
  • Bug fix for solve() when using complex numbers
  • More elaborate class destructors for better debugging of user code
  • Miscellaneous documentation and installation improvements
May 20, 2009, 05:58:14
0.6.7

Changes since version 0.6.2:

Added functionality:

  • Performance tweaks, which can result in speedups of 30% for small matrices
  • Added running_stat class for on-the-fly statistics
  • Colour PPM images can now be loaded as fields of matrices
  • Renamed main classes for better code readability
  • Better installation on 64 bit systems

Bug fixes:

  • template detection of combined multiply and addition operations
April 16, 2009, 07:54:55
0.6.2

Changes since version 0.5.0:

Added functionality: - solve(), for solving systems of linear equations
- svd(), singular value decomposition
- expressions can now have mixed matrix types
- complex number versions of statistics functions
- reworked operators, providing more flexibility

Bug fixes:
- sign of scalar produced by det()
- handling of single row and column submats by statistics functions

March 29, 2009, 06:05:14
0.5.0

Added functionality: - Cholesky and QR decompositions - element-wise division - comparison operators - more elegant restriction of template parameters

Bug fixes: - handling of diagonal matrices created from vectors - compilation of examples under MacOS X

Other changes: - faster matrix inverse - license change to LGPL v3+ - updated and re-arranged documentation

March 9, 2009, 14:35:54
0.4.0

Initial Announcement on mloss.org.

January 28, 2009, 14:21:30

Comments

No one has posted any comments yet. Perhaps you'd like to be the first?

Leave a comment

You must be logged in to post comments.