1 Star 0 Fork 0

吉祥水/armadillo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MPL-2.0
Armadillo C++ Linear Algebra Library
http://arma.sourceforge.net



=== Contents ===

 1: Introduction

 2: Citation Details

 3: Installation
    3.0: Preliminaries
    3.1: Installation on Linux and Mac OS X
    3.2: Manual Installation / Installation on Windows

 4: Compiling Programs and Linking
    4.0: Examples
    4.1: Compiling & Linking on Linux and Mac OS X
    4.2: Compiling & Linking on Windows

 5: Support for high-speed BLAS & LAPACK replacements
    5.0: Support for OpenBLAS, Intel MKL and AMD ACML
    5.1: Support for ATLAS

 6: Documentation / API Reference Manual
 
 7: MEX Interface to Octave & Matlab

 8: Bug Reports and Frequently Asked Questions

 9: Developers and Contributors

10: License

11: Related Software



=== 1: Introduction ===

Armadillo is a C++ linear algebra library (matrix maths)
aiming towards a good balance between speed and ease of use.
The syntax is deliberately similar to Matlab.

Integer, floating point and complex numbers are supported,
as well as a subset of trigonometric and statistics functions.
Various matrix decompositions are provided through optional
integration with LAPACK or high-performance LAPACK-compatible
libraries (such as Intel MKL or AMD ACML).

A delayed evaluation approach is employed (during compile time)
to combine several operations into one and reduce (or eliminate)
the need for temporaries. This is accomplished through recursive
templates and template meta-programming.

This library is useful for conversion of research code into
production environments, or if C++ has been decided as the
language of choice, due to speed and/or integration capabilities.

The library is open-source software, and is distributed under a license
that is useful in both open-source and commercial/proprietary contexts.

Armadillo is primarily developed at NICTA (Australia),
with contributions from around the world.  More information
about NICTA can be obtained from http://nicta.com.au



=== 2: Citation Details ===

Please cite the following tech report if you use Armadillo in your
research and/or software. Citations are useful for the continued
development and maintenance of the library.

  Conrad Sanderson.
  Armadillo: An Open Source C++ Linear Algebra Library for
  Fast Prototyping and Computationally Intensive Experiments.
  Technical Report, NICTA, 2010.



=== 3.0: Installation: Preliminaries ===

Armadillo makes extensive use of template meta-programming,
recursive templates and template based function overloading.
As such, C++ compilers which do not fully implement the C++
standard may not work correctly.

The functionality of Armadillo is partly dependent on other libraries:
LAPACK, BLAS and ARPACK. The LAPACK and BLAS libraries are used for
dense matrices, while the ARPACK library is used for sparse matrices.
Armadillo can work without these libraries, but its functionality
will be reduced. In particular, basic functionality will be available
(eg. matrix addition and multiplication), but things like eigen
decomposition or matrix inversion will not be.  Matrix multiplication
(mainly for big matrices) may not be as fast.

* For automatic installation on Linux and Mac OS X systems,
  see section 3.1. This installation is also likely to work on
  other Unix-like systems, such as FreeBSD, NetBSD, OpenBSD,
  Solaris, CygWin, etc.
  
* For manual installation and/or installation on Windows,
  see section 3.2.
  
* If you have a previous version of Armadillo already installed,
  we recommend removing it before installing a newer version.



=== 3.1: Installation on Linux and Mac OS X ===

You can use the manual installation process as described in
section 3.2, or the following CMake based automatic installation.

* Step 1:
  If CMake is not already be present on your system, download
  it from http://www.cmake.org
  
  On major Linux systems (such as Fedora, Ubuntu, Debian, etc),
  cmake is available as a pre-built package, though it may need
  to be explicitly installed (using a tool such as PackageKit,
  yum, rpm, apt, aptitude).
  
* Step 2:
  If you have LAPACK or BLAS, install them before installing Armadillo.
  Under Mac OS X this is not necessary.
  
  If you have ARPACK, install it before installing Armadillo.
  
  On Linux systems it is recommended that the following libraries
  are present: LAPACK, BLAS, ARPACK and ATLAS.
  LAPACK and BLAS are the most important.  It is also necessary to
  install the corresponding development files for each library.
  For example, when installing the "lapack" package, also install
  the "lapack-devel" or "lapack-dev" package.
  
  For best performance, we recommend using the multi-threaded
  OpenBLAS library instead of standard BLAS.
  See http://xianyi.github.com/OpenBLAS/
  
* Step 3:
  Open a shell (command line), change into the directory that was
  created by unpacking the armadillo archive, and type the following
  commands:
  
  cmake .
  make 
  
  The full stop separated from "cmake" by a space is important.
  CMake will figure out what other libraries are currently installed
  and will modify Armadillo's configuration correspondingly.
  CMake will also generate a run-time armadillo library, which is a 
  combined alias for all the relevant libraries present on your system
  (eg. LAPACK, BLAS, ARPACK, ATLAS).
  
  If you need to re-run cmake, it's a good idea to first delete the
  "CMakeCache.txt" file (not "CMakeLists.txt").
  
  Caveat: out-of-tree builds are currently not supported; for example,
  creating a sub-directory called "build" and running cmake .. from 
  within "build" is currently not supported.
  
* Step 4:
  If you have access to root/administrator/superuser privileges,
  first enable the privileges (eg. through "su" or "sudo")
  and then type the following command:
  
  make install
  
  If you don't have root/administrator/superuser privileges, 
  type the following command:
  
  make install DESTDIR=my_usr_dir
  
  where "my_usr_dir" is for storing C++ headers and library files.
  Make sure your C++ compiler is configured to use the sub-directories
  present within this directory.



=== 3.2: Manual Installation / Installation on Windows ===

The manual installation is comprised of 3 steps:

* Step 1:
  Copy the entire "include" folder to a convenient location
  and tell your compiler to use that location for header files
  (in addition to the locations it uses already).
  Alternatively, you can use the "include" folder directly.
  
* Step 2:
  Modify "include/armadillo_bits/config.hpp" to indicate which
  libraries are currently available on your system. For example,
  if you have LAPACK, BLAS (or OpenBLAS) and ARPACK present,
  uncomment the following lines:
  
  #define ARMA_USE_LAPACK
  #define ARMA_USE_BLAS
  #define ARMA_USE_ARPACK
  
  If you're not going to use sparse matrices, don't worry about ARPACK.
  
* Step 3:
  If you have LAPACK and BLAS present, configure your 
  compiler to link with these libraries. 
  
  If using Linux, link using -llapack -lblas
  If using Mac OS X, link using -framework Accelerate
  If using Windows, see section 4.2.
  
  You can also link with high-speed replacements for LAPACK and BLAS,
  such as OpenBLAS, or Intel MKL, or AMD ACML. See section 5 for more info.
  
  If you have ARPACK present, also link with it.  For example,
  under Linux link using -llapack -lblas -larpack



=== 4.0: Compiling Programs and Linking: Examples ===

The "examples" directory contains several quick example programs
that use the Armadillo library. If Armadillo was installed manually
(ie. according to section 3.2), you will also need to explicitly
link your programs with the libraries that were specified in
"include/armadillo_bits/config.hpp".

"example1.cpp" may require the BLAS library or its equivalent.
"example2.cpp" requires the LAPACK library or its equivalent
(eg. the Accelerate framework on Mac OS X).

You may get errors at compile or run time if BLAS and/or LAPACK
functions are not available.

NOTE: As Armadillo is a template library, we recommended that
      optimisation is enabled during compilation. For example,
      for the GCC compiler use -O1 or -O2



=== 4.1: Compiling & Linking on Linux and Mac OS X ===

Please see "examples/Makefile", which may may need to be configured
for your system. If Armadillo header files were installed in a
non-standard location, you will need to modify "examples/Makefile"
to tell the compiler where they are.

In general, programs which use Armadillo are compiled along these lines:
  g++ example1.cpp -o example1 -O2 -larmadillo

(you may also need to specify the include directory via the -I switch)

If you get linking errors, or if Armadillo was installed manually
and you specified that LAPACK and BLAS are available, you will
need to explicitly link with LAPACK and BLAS (or their equivalents),
for example:
  g++ example1.cpp -o example1 -O2 -llapack -lblas

(you may also need to specify the library directory via the -L switch)

If you have specified that ARPACK (or its equivalent) is available,
add -larpack to the compiler command line.  For example:
  g++ example1.cpp -o example1 -O2 -llapack -lblas -larpack


Notes:

  * under most Linux systems, using "-llapack -lblas" should be enough;
    however, on Ubuntu and Debian you may need to add "-lgfortran"
    
  * under Mac OS X, try "-framework Accelerate" or "-llapack -lblas"
    (the Accelerate option is usually the fastest)
    
  * under the Sun Studio compiler, try "-library=sunperf"



=== 4.2: Compiling & Linking on Windows ===

Within the "examples" folder, we have included an MSVC project named "example1_win64"
which can be used to compile "example1.cpp".  The project needs to be compiled as a
64 bit program: the active solution platform must be set to x64, instead of win32.

If you're getting messages such as "use of LAPACK needs to be enabled",
you will need to manually modify "include/armadillo_bits/config.hpp"
to enable the use of LAPACK. See section 3.2 for more information.

The MSCV project was tested on 64 bit Windows 7 with Visual C++ 2012.
You may need to make adaptations for 32 bit systems, later versions of Windows
and/or the compiler.  For example, you may have to enable or disable
ARMA_BLAS_LONG and ARMA_BLAS_UNDERSCORE macros in "armadillo_bits/config.hpp".

The folder "examples/lib_win64" contains standard LAPACK and BLAS libraries compiled
for 64 bit Windows.  The compilation was done by a third party.  USE AT YOUR OWN RISK.
The compiled versions of LAPACK and BLAS were obtained from:
  http://ylzhao.blogspot.com.au/2013/10/blas-lapack-precompiled-binaries-for.html

You can find the original sources for standard BLAS and LAPACK at:
  http://www.netlib.org/blas/
  http://www.netlib.org/lapack/
  
Faster and/or alternative implementations of BLAS and LAPACK are available:
  http://software.intel.com/en-us/intel-mkl/
  http://developer.amd.com/tools-and-sdks/cpu-development/amd-core-math-library-acml/
  http://xianyi.github.com/OpenBLAS/
  http://www.stanford.edu/~vkl/code/libs.html
  http://icl.cs.utk.edu/lapack-for-windows/lapack/

The MKL, ACML and OpenBLAS libraries are generally the fastest.
See section 5 for more info on making Armadillo use these libraries.

For better performance, we recommend the following high-quality C++ compilers:
  GCC from MinGW:     http://www.mingw.org/
  GCC from CygWin:    http://www.cygwin.com/
  Intel C++ compiler: http://software.intel.com/en-us/intel-compilers/

For the GCC compiler, use version 4.2 or later.
For the Intel compiler, use version 11.0 or later.

For best results we also recommend using an operating system
that's more reliable and more suitable for heavy duty work,
such as Mac OS X, or various Linux-based systems:
  Ubuntu                    http://www.ubuntu.com/
  Debian                    http://www.debian.org/
  OpenSUSE                  http://www.opensuse.org/
  Fedora                    http://fedoraproject.org/
  Scientific Linux          http://www.scientificlinux.org/
  Red Hat Enterprise Linux  http://www.redhat.com/



=== 5.0: Support for OpenBLAS, Intel MKL and AMD ACML ===

Armadillo can use OpenBLAS, or Intel Math Kernel Library (MKL),
or the AMD Core Math Library (ACML) as high-speed replacements
for BLAS and LAPACK.  Generally this just involves linking with
the replacement libraries instead of BLAS and LAPACK.

You may need to make minor modifications to "include/armadillo_bits/config.hpp"
in order to make sure Armadillo uses the same style of function names
as used by MKL or ACML. For example, the function names might be in capitals.

On Linux systems, MKL and ACML might be installed in a non-standard
location, such as /opt, which can cause problems during linking.
Before installing Armadillo, the system should know where the MKL or ACML
libraries are located. For example, "/opt/intel/mkl/lib/intel64/".
This can be achieved by setting the LD_LIBRARY_PATH environment variable,
or for a more permanent solution, adding the directory locations
to "/etc/ld.so.conf". It may also be possible to store a text file 
with the locations in the "/etc/ld.so.conf.d" directory.
For example, "/etc/ld.so.conf.d/mkl.conf".
If you modify "/etc/ld.so.conf" or create "/etc/ld.so.conf.d/mkl.conf",
you will need to run "/sbin/ldconfig" afterwards.

Example of the contents of "/etc/ld.so.conf.d/mkl.conf" on a RHEL 6 system,
where Intel MKL version 11.0.3 is installed in "/opt/intel":

/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64

The default installations of ACML 4.4.0 and MKL 10.2.2.025 are known 
to have issues with SELinux, which is turned on by default in Fedora
(and possibly RHEL). The problem may manifest itself during run-time,
where the run-time linker reports permission problems.
It is possible to work around the problem by applying an appropriate
SELinux type to all ACML and MKL libraries.

If you have ACML or MKL installed and they are persistently giving
you problems during linking, you can disable the support for them
by editing the "CMakeLists.txt" file, deleting "CMakeCache.txt" and
re-running the CMake based installation. Specifically, comment out
the lines containing:
  INCLUDE(ARMA_FindMKL)
  INCLUDE(ARMA_FindACMLMP)
  INCLUDE(ARMA_FindACML)



=== 5.1: Support for ATLAS ===

Armadillo can use the ATLAS library for faster versions of
certain LAPACK and BLAS functions. Not all ATLAS functions are
currently used, and as such LAPACK should still be installed.

The minimum recommended version of ATLAS is 3.8.
Old versions (eg. 3.6) can produce incorrect results
as well as corrupting memory, leading to random crashes.

Users of older Ubuntu and Debian based systems should explicitly
check that ATLAS 3.6 is not installed.  It's better to
remove the old version and use the standard LAPACK library.



=== 6: Documentation / API Reference Manual ===

A reference manual (documentation of APIs) is available at

  http://arma.sourceforge.net/docs.html

and in the "docs.html" file in this archive,
which can be viewed with a web browser.

The documentation explains how to use Armadillo's
classes and functions, with snippets of example code.



=== 7: MEX Interface to Octave & Matlab ===

The "mex_interface" folder contains examples of how to interface
Octave and Matlab with C++ code that uses Armadillo matrices.



=== 8: Bug Reports and Frequently Asked Questions ===

Answers to frequently asked questions can be found at:

  http://arma.sourceforge.net/faq.html

This library has gone through extensive testing and
has been successfully used in production environments.
However, as with almost all software, it's impossible
to guarantee 100% correct functionality.

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 which exposes the bug,
and then send the program source (as well as the bug description)
to the developers.  The developers' contact details are at:

  http://arma.sourceforge.net/contact.html



=== 9: Developers and Contributors ===

Main sponsoring organisation:
- NICTA
  http://nicta.com.au

Main developers:
- Conrad Sanderson - http://conradsanderson.id.au
- Ryan Curtin      - http://www.ratml.org
- Ian Cullinan
- Dimitrios Bouzas
- Stanislav Funiak

Contributors:
- Matthew Amidon
- Eric R. Anderson
- Benoît Bayol
- Salim Bcoin
- Justin Bedo
- Evan Bollig
- Darius Braziunas
- Filip Bruman
- Ted Campbell
- James Cline
- Chris Cooper
- Clement Creusot
- Chris Davey
- Alexandre Drouin
- Dirk Eddelbuettel
- Carles Fernandez
- Romain Francois
- Michael McNeil Forbes
- Piotr Gawron
- Charles Gretton
- Benjamin Herzog
- Edmund Highcock
- Szabolcs Horvat
- Friedrich Hust
- Yaron Keren
- Kshitij Kulshreshtha
- Oka Kurniawan
- Simen Kvaal
- David Lawrence
- Jussi Lehtola
- Jeremy Mason
- Nikolay Mayorov
- Carlos Mendes
- Sergey Nenakhov
- Artem Novikov
- Martin Orlob
- Ken Panici
- Adam Piątyszek
- Jayden Platell
- Vikas Reddy
- Ola Rinta-Koski
- Boris Sabanin
- James Sanders
- Alexander Scherbatey
- Gerhard Schreiber
- Ruslan Shestopalyuk
- Shane Stainsby
- Petter Strandmark
- Eric Jon Sundstrom
- Paul Torfs
- Martin Uhrin
- Simon Urbanek
- Unai Uribarri
- Juergen Wiest
- Arnold Wiliem
- Yong Kang Wong
- Buote Xu
- George Yammine
- Sean Young



=== 10: License ===

Unless specified otherwise, the Mozilla Public License v2.0 is used.
See the "LICENSE.txt" file for license details.

The file "include/armadillo_bits/fft_engine.hpp" is licensed under
both the Mozilla Public License v2.0 and a 3-clause BSD license.
See "include/armadillo_bits/fft_engine.hpp" for license details.



=== 11: Related Software ===

* MLPACK: C++ library for machine learning
  and pattern recognition, built on top of Armadillo.
  http://mlpack.org
  
* libpca: C++ library for principal component analysis
  http://sourceforge.net/projects/libpca/
  
* KL1p: C++ library for sparse recovery of underdetermined linear systems,
  such as compressed sensing.
  http://kl1p.sourceforge.net  
  
* ArmaNpy: interfaces Armadillo matrices with Python
  http://sourceforge.net/projects/armanpy/
Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.

简介

A personal fork of the armadillo C++ linear algebra library (http://arma.sourceforge.net/) 展开 收起
C++ 等 3 种语言
MPL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jixiangshui/armadillo.git
git@gitee.com:jixiangshui/armadillo.git
jixiangshui
armadillo
armadillo
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385