README.md (armadillo-10.8.2.tar.xz) | : | README.md (armadillo-11.0.0.tar.xz) | ||
---|---|---|---|---|
skipping to change at line 33 | skipping to change at line 33 | |||
4. [Prerequisites and Dependencies](#4-prerequisites-and-dependencies) | 4. [Prerequisites and Dependencies](#4-prerequisites-and-dependencies) | |||
5. [Linux and macOS: Installation](#5-linux-and-macos-installation) | 5. [Linux and macOS: Installation](#5-linux-and-macos-installation) | |||
6. [Linux and macOS: Compiling and Linking](#6-linux-and-macos-compiling-and-li nking) | 6. [Linux and macOS: Compiling and Linking](#6-linux-and-macos-compiling-and-li nking) | |||
7. [Windows: Installation](#7-windows-installation) | 7. [Windows: Installation](#7-windows-installation) | |||
8. [Windows: Compiling and Linking](#8-windows-compiling-and-linking) | 8. [Windows: Compiling and Linking](#8-windows-compiling-and-linking) | |||
9. [Support for OpenBLAS and Intel MKL](#9-support-for-openblas-and-intel-mkl) | 9. [Support for OpenBLAS and Intel MKL](#9-support-for-openblas-and-intel-mkl) | |||
10. [Support for ATLAS](#10-support-for-atlas) | 10. [Caveat on use of C++11 auto Keyword](#10-caveat-on-use-of-c11-auto-keyword) | |||
11. [Caveat on use of C++11 auto Keyword](#11-caveat-on-use-of-c11-auto-keyword) | 11. [Support for OpenMP](#11-support-for-openmp) | |||
12. [Support for OpenMP](#12-support-for-openmp) | ||||
13. [Documentation of Functions and Classes](#13-documentation-of-functions-and- | ||||
classes) | ||||
14. [API Stability and Versioning](#14-api-stability-and-versioning) | ||||
15. [Bug Reports and Frequently Asked Questions](#15-bug-reports-and-frequently- | ||||
asked-questions) | ||||
16. [MEX Interface to Octave/Matlab](#16-mex-interface-to-octavematlab) | 12. [Documentation of Functions and Classes](#12-documentation-of-functions-and- | |||
17. [Related Software Using Armadillo](#17-related-software-using-armadillo) | classes) | |||
13. [API Stability and Versioning](#13-api-stability-and-versioning) | ||||
14. [Bug Reports and Frequently Asked Questions](#14-bug-reports-and-frequently- | ||||
asked-questions) | ||||
15. [MEX Interface to Octave/Matlab](#15-mex-interface-to-octavematlab) | ||||
16. [Related Software Using Armadillo](#16-related-software-using-armadillo) | ||||
--- | --- | |||
### 1. Introduction | ### 1. Introduction | |||
Armadillo is a high quality C++ library for linear algebra and scientific comput ing, | Armadillo is a high quality C++ library for linear algebra and scientific comput ing, | |||
aiming towards a good balance between speed and ease of use. | aiming towards a good balance between speed and ease of use. | |||
It's useful for algorithm development directly in C++, | It's useful for algorithm development directly in C++, | |||
and/or quick conversion of research code into production environments. | and/or quick conversion of research code into production environments. | |||
skipping to change at line 86 | skipping to change at line 85 | |||
### 2: Citation Details | ### 2: Citation Details | |||
Please cite the following papers if you use Armadillo in your research and/or so ftware. | Please cite the following papers if you use Armadillo in your research and/or so ftware. | |||
Citations are useful for the continued development and maintenance of the librar y. | Citations are useful for the continued development and maintenance of the librar y. | |||
* Conrad Sanderson and Ryan Curtin. | * Conrad Sanderson and Ryan Curtin. | |||
Armadillo: a template-based C++ library for linear algebra. | Armadillo: a template-based C++ library for linear algebra. | |||
Journal of Open Source Software, Vol. 1, pp. 26, 2016. | Journal of Open Source Software, Vol. 1, pp. 26, 2016. | |||
* Conrad Sanderson and Ryan Curtin. | * Conrad Sanderson and Ryan Curtin. | |||
A User-Friendly Hybrid Sparse Matrix Class in C++. | An Adaptive Solver for Systems of Linear Equations. | |||
Lecture Notes in Computer Science (LNCS), Vol. 10931, pp. 422-430, 2018. | International Conference on Signal Processing and Communication Systems, pp. | |||
1-6, 2020. | ||||
--- | --- | |||
### 3: Distribution License | ### 3: Distribution License | |||
Armadillo can be used in both open-source and proprietary (closed-source) softwa re. | Armadillo can be used in both open-source and proprietary (closed-source) softwa re. | |||
Armadillo is licensed under the Apache License, Version 2.0 (the "License"). | Armadillo is licensed under the Apache License, Version 2.0 (the "License"). | |||
A copy of the License is included in the "LICENSE.txt" file. | A copy of the License is included in the "LICENSE.txt" file. | |||
skipping to change at line 359 | skipping to change at line 358 | |||
If MKL is installed and it is persistently giving problems during linking, | If MKL is installed and it is persistently giving problems during linking, | |||
Support for MKL can be disabled by editing the CMakeLists.txt file, | Support for MKL can be disabled by editing the CMakeLists.txt file, | |||
deleting CMakeCache.txt and re-running the cmake based installation. | deleting CMakeCache.txt and re-running the cmake based installation. | |||
Comment out the line containing: | Comment out the line containing: | |||
INCLUDE(ARMA_FindMKL) | INCLUDE(ARMA_FindMKL) | |||
--- | --- | |||
### 10: Support for ATLAS | ### 10: Caveat on use of C++11 auto Keyword | |||
If OpenBLAS is not available, Armadillo can use the ATLAS library for faster ver | ||||
sions | ||||
of a subset of LAPACK and BLAS functions. | ||||
LAPACK should still be installed to obtain full functionality. | ||||
The minimum recommended version of ATLAS is 3.10. | ||||
### 11: Caveat on use of C++11 auto Keyword | ||||
Use of the C++11 `auto` keyword is not recommended with Armadillo objects and ex pressions. | Use of the C++11 `auto` keyword is not recommended with Armadillo objects and ex pressions. | |||
Armadillo has a template meta-programming framework which creates lots of short lived temporaries | Armadillo has a template meta-programming framework which creates lots of short lived temporaries | |||
that are not properly handled by `auto`. | that are not properly handled by `auto`. | |||
--- | --- | |||
### 12: Support for OpenMP | ### 11: Support for OpenMP | |||
Armadillo can use OpenMP to automatically speed up computationally | Armadillo can use OpenMP to automatically speed up computationally | |||
expensive element-wise functions such as exp(), log(), cos(), etc. | expensive element-wise functions such as exp(), log(), cos(), etc. | |||
This requires a C++11/C++14 compiler with OpenMP 3.1+ support. | This requires a C++11/C++14 compiler with OpenMP 3.1+ support. | |||
For GCC and Clang compilers, use the following options to enable both C++11 and OpenMP: | For GCC and Clang compilers, use the following options to enable both C++11 and OpenMP: | |||
`-std=c++11 -fopenmp` | `-std=c++11 -fopenmp` | |||
--- | --- | |||
### 13: Documentation of Functions and Classes | ### 12: Documentation of Functions and Classes | |||
The documentation of Armadillo functions and classes is available at: | The documentation of Armadillo functions and classes is available at: | |||
http://arma.sourceforge.net/docs.html | http://arma.sourceforge.net/docs.html | |||
The documentation is also in the `docs.html` file distributed with Armadillo. | The documentation is also in the `docs.html` file distributed with Armadillo. | |||
Use a web browser to view it. | Use a web browser to view it. | |||
--- | --- | |||
### 14: API Stability and Versioning | ### 13: API Stability and Versioning | |||
Each release of Armadillo has its public API (functions, classes, constants) | Each release of Armadillo has its public API (functions, classes, constants) | |||
described in the accompanying API documentation (docs.html) specific | described in the accompanying API documentation (docs.html) specific | |||
to that release. | to that release. | |||
Each release of Armadillo has its full version specified as A.B.C, | Each release of Armadillo has its full version specified as A.B.C, | |||
where A is a major version number, B is a minor version number, | where A is a major version number, B is a minor version number, | |||
and C is a patch level (indicating bug fixes). | and C is a patch level (indicating bug fixes). | |||
Within a major version (eg. 7), each minor version has a public API that | Within a major version (eg. 7), each minor version has a public API that | |||
skipping to change at line 433 | skipping to change at line 423 | |||
backwards compatible in as many cases as possible (eg. major version 8 may | backwards compatible in as many cases as possible (eg. major version 8 may | |||
have slightly different public API than major version 7). | have slightly different public API than major version 7). | |||
**CAVEAT:** any function, class, constant or other code _not_ explicitly describ ed | **CAVEAT:** any function, class, constant or other code _not_ explicitly describ ed | |||
in the public API documentation is considered as part of the underlying internal | in the public API documentation is considered as part of the underlying internal | |||
implementation details, and may change or be removed without notice. | implementation details, and may change or be removed without notice. | |||
(In other words, don't use internal functionality). | (In other words, don't use internal functionality). | |||
--- | --- | |||
### 15: Bug Reports and Frequently Asked Questions | ### 14: Bug Reports and Frequently Asked Questions | |||
Armadillo has gone through extensive testing and has been successfully | Armadillo has gone through extensive testing and has been successfully | |||
used in production environments. However, as with almost all software, | used in production environments. However, as with almost all software, | |||
it's impossible to guarantee 100% correct functionality. | it's impossible to guarantee 100% correct functionality. | |||
If you find a bug in the library or the documentation, we are interested | If you find a bug in the library or the documentation, we are interested | |||
in hearing about it. Please make a _small_ and _self-contained_ program | in hearing about it. Please make a _small_ and _self-contained_ program | |||
which exposes the bug, and then send the program source and the bug description | which exposes the bug, and then send the program source and the bug description | |||
to the developers. The small program must have a main() function and use only | to the developers. The small program must have a main() function and use only | |||
functions/classes from Armadillo and the standard C++ library (no other librarie s). | functions/classes from Armadillo and the standard C++ library (no other librarie s). | |||
The contact details are at: | The contact details are at: | |||
http://arma.sourceforge.net/contact.html | http://arma.sourceforge.net/contact.html | |||
Further information about Armadillo is on the frequently asked questions page: | Further information about Armadillo is on the frequently asked questions page: | |||
http://arma.sourceforge.net/faq.html | http://arma.sourceforge.net/faq.html | |||
--- | --- | |||
### 16: MEX Interface to Octave/Matlab | ### 15: MEX Interface to Octave/Matlab | |||
The `mex_interface` folder contains examples of how to interface | The `mex_interface` folder contains examples of how to interface | |||
Octave/Matlab with C++ code that uses Armadillo matrices. | Octave/Matlab with C++ code that uses Armadillo matrices. | |||
--- | --- | |||
### 17: Related Software Using Armadillo | ### 16: Related Software Using Armadillo | |||
* ensmallen: fast non-linear numerical optimisation library | * ensmallen: fast non-linear numerical optimisation library | |||
http://ensmallen.org/ | http://ensmallen.org/ | |||
* MLPACK: extensive library of machine learning algorithms | * MLPACK: extensive library of machine learning algorithms | |||
http://mlpack.org | http://mlpack.org | |||
* CARMA: bidirectional interface between Python and Armadillo | * CARMA: bidirectional interface between Python and Armadillo | |||
https://github.com/RUrlus/carma | https://github.com/RUrlus/carma | |||
End of changes. 10 change blocks. | ||||
29 lines changed or deleted | 20 lines changed or added |