<commit_before>![blaze300x150.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze300x150.jpg)

**Blaze** is an open-source, high-performance C++ math library for dense and sparse arithmetic. With its state-of-the-art *Smart Expression Template* implementation **Blaze** combines the elegance and ease of use of a domain-specific language with HPC-grade performance, making it one of the most intuitive and fastest C++ math libraries available.

The **Blaze** library offers ...

  * ... **high performance** through the integration of BLAS libraries and manually tuned HPC math kernels
  * ... **parallel execution** by OpenMP, C++11 threads and Boost threads
  * ... the **intuitive** and **easy to use** API of a domain specific language
  * ... **unified arithmetic** with dense and sparse vectors and matrices
  * ... **thoroughly tested** matrix and vector arithmetic
  * ... completely **portable**, **high quality** C++ source code

Get an impression of the clear but powerful syntax of **Blaze** in the [Getting Started](https://bitbucket.org/blaze-lib/blaze/wiki/Getting_Started) tutorial and of the impressive performance in the [Benchmarks](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks) section.

----

## Download ##

![white20x120.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white20x120.jpg)
[![blaze-2.4.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze-2.4.jpg)](https://bitbucket.org/blaze-lib/blaze/downloads/blaze-2.4.tar.gz)
![white40x120.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white40x120.jpg)
[![blaze-docu-2.4.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze-docu-2.4.jpg)](https://bitbucket.org/blaze-lib/blaze/downloads/blaze-docu-2.4.tar.gz)

Older releases of **Blaze** can be found in the [downloads](https://bitbucket.org/blaze-lib/blaze/downloads) section or in our [release archive](https://bitbucket.org/blaze-lib/blaze/wiki/Release Archive).

----

## News ##

**4.7.2015**: We are proud to announce the release of **Blaze** 2.4! With this release, we say goodbye to the [GoogleCode](http://code.google.com/p/blaze-lib) platform and move to our new home:

![white250x100.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white250x100.jpg)
[![bitbucket300x100.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/bitbucket300x100.jpg)](http://bitbucket.org/blaze-lib/blaze)

Since GoogleCode is shutting down, **Blaze** 2.4 will be the last release on [GoogleCode](http://code.google.com/p/blaze-lib). From now on we will focus entirely on our [Bitbucket](http://bitbucket.org/blaze-lib/blaze) repositories. Please update your bookmarks accordingly!

In **Blaze** 2.2 we introduced the first adaptor, `SymmetricMatrix. In **Blaze** 2.3 we continued in this direction and introduced adaptors for lower and upper triangular matrices. Now, **Blaze** 2.4 concludes this line of development with unitriangular, strictly triangular and diagonal matrices. This now enables a total of 36 different matrix types, which provide the unique possibility to adapt the type of matrices exactly to the problem at hand and to achieve maximum performance due to specifically optimized kernels.

Additionally, in **Blaze** 2.4 we have removed a couple of hidden, unofficial features that caused trouble due to negligence and lack of proper testing: All solvers, `RotationMatrix` and `Quaternion` are not part of the release anymore. However, we plan to reintroduce both `RotationMatrix` and `Quaternion` in an upcoming release.

----

**24.3.2015**: You might have heard already: Google has officially announced to shut down the Google Code platform. This is of course bad news for us since this means that we have to move the **Blaze** website and repository to a new platform. However, since there have been several requests from the **Blaze** community to move **Blaze** to a different platform we have been thinking and working in this direction for some time anyway. Given the current situation we have decided to officially move our repository with the next release of **Blaze**: Version 2.4 will be the last release on Google Code and the first release on our new home. We are currently wrapping up the 2.4 release and at the same time preparing our move to the new platform. Stay tuned, we will inform you as soon as possible about the location of our new home.

----

**11.3.2015**: You were asking for them, here they are! The new big feature of **Blaze** 2.3 are lower and upper triangular matrices. And they come with full support within the **Blaze** library: Specifically adapted and optimized compute kernels and full support for parallelization via OpenMP, C++11 and Boost threads. Also noteworthy: The implementation is thoroughly checked by 748 new test cases. See the **Blaze** [tutorial](https://bitbucket.org/blaze-lib/blaze/wiki/Triangular_Matrices) for how the new `LowerMatrix` and `UpperMatrix` adaptors work!

----

**3.12.2014**: After a total of five and a half months, a little late for [SC'14](http://sc14.supercomputing.org), but right on time for [Meeting C++](http://meetingcpp.com), we finally release **Blaze** 2.2! But the waiting time was worthwhile! This release comes with several bug fixes and hundreds of improvements, many based on your hints, suggestions and ideas. Thank you very much for your support and help to make the **Blaze** library even better!

The big new feature of **Blaze** 2.2 is symmetric matrices. And this is not just any implementation of symmetric matrices, but one of the most complete and powerful implementations available. See the **Blaze** [tutorial](https://bitbucket.org/blaze-lib/blaze/wiki/Symmetric_Matrices) to get an idea of how symmetric matrices work and how they can help you prevent some inadvertent pessimizations of your code.

----

**20.6.2014**: After three month, just in time for [ISC'14](http://www.isc-events.com/isc14/), **Blaze** 2.1 has finally been released! The focus of this release is the improvement and extension of the shared memory parallelization capabilities. In addition to the OpenMP parallelization, **Blaze** 2.1 now also enables shared memory parallelization based on C++11 and Boost threads. With that, shared memory parallel execution is now available for virtually every platform and compiler. Additionally, the underlying architecture for the parallel execution and automatic, context-depending optimization has been significantly improved. Therefore **Blaze** 2.1 should prove to be the fastest and most flexible **Blaze** release yet.

----

**23.3.2014**: **Blaze** 2.0 goes parallel!

One of the main motivations of the **Blaze** 1.x releases was to provide maximum performance on a single CPU core for all possible operations. However, the [free lunch is over](http://www.gotw.ca/publications/concurrency-ddj.htm) and today's CPUs are not single core anymore. In order to fully utilize the performance potential of a multicore CPU, computations have to be parallelized across all available cores of a CPU. Therefore, starting with **Blaze** 2.0, the **Blaze** library provides automated shared memory parallelization. Get an impression of the possible performance boost in the [Benchmarks](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks) section.

----

## Wiki: Table of Contents ##

* [Configuration and Installation](https://bitbucket.org/blaze-lib/blaze/wiki/Configuration and Installation)
* [Getting Started](https://bitbucket.org/blaze-lib/blaze/wiki/Getting Started)
* Tutorial
    * Vectors
        * [Vector Types](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Types)
        * [Vector Operations](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Operations)
    * Matrices
        * [Matrix Types](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Types)
        * [Matrix Operations](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Operations)
    * Adaptors
        * [Symmetric Matrices](https://bitbucket.org/blaze-lib/blaze/wiki/Symmetric Matrices)
        * [Triangular Matrices](https://bitbucket.org/blaze-lib/blaze/wiki/Triangular Matrices)
    * Views
        * [Subvectors](https://bitbucket.org/blaze-lib/blaze/wiki/Subvectors)
        * [Submatrices](https://bitbucket.org/blaze-lib/blaze/wiki/Submatrices)
        * [Rows](https://bitbucket.org/blaze-lib/blaze/wiki/Rows)
        * [Columns](https://bitbucket.org/blaze-lib/blaze/wiki/Columns)
    * Arithmetic Operations
        * [Addition](https://bitbucket.org/blaze-lib/blaze/wiki/Addition)
        * [Subtraction](https://bitbucket.org/blaze-lib/blaze/wiki/Subtraction)
        * [Scalar Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Scalar Multiplication)
        * [Vector/Vector Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication)
            * [Componentwise Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!componentwise-multiplication)
            * [Inner Product / Scalar Product / Dot Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!inner-product-scalar-product-dot-product)
            * [Outer Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!outer-product)
            * [Cross Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!cross-product)
        * [Matrix/Vector Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix-Vector Multiplication)
        * [Matrix/Matrix Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix-Matrix Multiplication)
    * Shared-Memory Parallelization
        * [OpenMP Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/OpenMP Parallelization)
        * [C++11 Thread Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/Cpp Thread Parallelization)
        * [Boost Thread Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/Boost Thread Parallelization)
        * [Serial Execution](https://bitbucket.org/blaze-lib/blaze/wiki/Serial Execution)
    * Serialization
        * [Vector Serialization](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Serialization)
        * [Matrix Serialization](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Serialization)
* [Intra-Statement Optimization](https://bitbucket.org/blaze-lib/blaze/wiki/Intra-Statement Optimization)
* [Configuration Files](https://bitbucket.org/blaze-lib/blaze/wiki/Configuration Files)
* [Blazemark: The Blaze Benchmark Suite](https://bitbucket.org/blaze-lib/blaze/wiki/Blazemark)
* [Benchmarks/Performance Results](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks)

----

## License ##

The **Blaze** library is licensed under the New (Revised) BSD license. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.<commit_msg>Adapt the 'README.md' for the Blaze 2.5 release<commit_after>![blaze300x150.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze300x150.jpg)

**Blaze** is an open-source, high-performance C++ math library for dense and sparse arithmetic. With its state-of-the-art *Smart Expression Template* implementation **Blaze** combines the elegance and ease of use of a domain-specific language with HPC-grade performance, making it one of the most intuitive and fastest C++ math libraries available.

The **Blaze** library offers ...

  * ... **high performance** through the integration of BLAS libraries and manually tuned HPC math kernels
  * ... **parallel execution** by OpenMP, C++11 threads and Boost threads
  * ... the **intuitive** and **easy to use** API of a domain specific language
  * ... **unified arithmetic** with dense and sparse vectors and matrices
  * ... **thoroughly tested** matrix and vector arithmetic
  * ... completely **portable**, **high quality** C++ source code

Get an impression of the clear but powerful syntax of **Blaze** in the [Getting Started](https://bitbucket.org/blaze-lib/blaze/wiki/Getting_Started) tutorial and of the impressive performance in the [Benchmarks](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks) section.

----

## Download ##

![white20x120.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white20x120.jpg)
[![blaze-2.5.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze-2.5.jpg)](https://bitbucket.org/blaze-lib/blaze/downloads/blaze-2.5.tar.gz)
![white40x120.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white40x120.jpg)
[![blaze-docu-2.5.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/blaze-docu-2.5.jpg)](https://bitbucket.org/blaze-lib/blaze/downloads/blaze-docu-2.5.tar.gz)

Older releases of **Blaze** can be found in the [downloads](https://bitbucket.org/blaze-lib/blaze/downloads) section or in our [release archive](https://bitbucket.org/blaze-lib/blaze/wiki/Release Archive).

----

## News ##

**1.10.2015**: After some month of hard work we finally release **Blaze** 2.5! This version comes with a fair amount of new features, many of them focused on computations with complex numbers: [Hermitian matrices](https://bitbucket.org/blaze-lib/blaze/issues/15/introduce-hermitian-matrices-into-blaze), the [```conj()```](https://bitbucket.org/blaze-lib/blaze/issues/7/provide-support-for-conjugate-complex), [```ctrans()```](https://bitbucket.org/blaze-lib/blaze/issues/8/provide-support-for-conjugate-transpose), [```real()```](https://bitbucket.org/blaze-lib/blaze/issues/17/provide-a-real-function-for-vectors-and), and [```imag()```](https://bitbucket.org/blaze-lib/blaze/issues/18/provide-an-imag-function-for-vectors-and) operations, and the [vectorization of integral complex numbers](https://bitbucket.org/blaze-lib/blaze/issues/21/support-the-vectorization-of-integral).

In addition, we are particularly proud about the performance improvements of several [dense matrix/sparse matrix multiplication](https://bitbucket.org/blaze-lib/blaze/issues/9/improve-the-performance-of-dense-matrix) and [sparse matrix/dense matrix multiplication](https://bitbucket.org/blaze-lib/blaze/issues/11/improve-the-performance-of-sparse-matrix) kernels. Furthermore, to extend the support for special environments, we have enabled the [customization of the error reporting mechanism](https://bitbucket.org/blaze-lib/blaze/issues/19/provide-means-to-adapt-the-error-reporting). Enjoy!

**4.7.2015**: We are proud to announce the release of **Blaze** 2.4! With this release, we say goodbye to the [GoogleCode](http://code.google.com/p/blaze-lib) platform and move to our new home:

![white250x100.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/white250x100.jpg)
[![bitbucket300x100.jpg](https://bitbucket.org/blaze-lib/blaze/wiki/images/bitbucket300x100.jpg)](http://bitbucket.org/blaze-lib/blaze)

Since GoogleCode is shutting down, **Blaze** 2.4 will be the last release on [GoogleCode](http://code.google.com/p/blaze-lib). From now on we will focus entirely on our [Bitbucket](http://bitbucket.org/blaze-lib/blaze) repositories. Please update your bookmarks accordingly!

In **Blaze** 2.2 we introduced the first adaptor, {{{SymmetricMatrix}}}. In **Blaze** 2.3 we continued in this direction and introduced adaptors for lower and upper triangular matrices. Now, **Blaze** 2.4 concludes this line of development with unitriangular, strictly triangular and diagonal matrices. This now enables a total of 36 different matrix types, which provide the unique possibility to adapt the type of matrices exactly to the problem at hand and to achieve maximum performance due to specifically optimized kernels.

Additionally, in **Blaze** 2.4 we have removed a couple of hidden, unofficial features that caused trouble due to negligence and lack of proper testing: All solvers, `RotationMatrix` and `Quaternion` are not part of the release anymore. However, we plan to reintroduce both `RotationMatrix` and `Quaternion` in an upcoming release.

----

**24.3.2015**: You might have heard already: Google has officially announced to shut down the Google Code platform. This is of course bad news for us since this means that we have to move the **Blaze** website and repository to a new platform. However, since there have been several requests from the **Blaze** community to move **Blaze** to a different platform we have been thinking and working in this direction for some time anyway. Given the current situation we have decided to officially move our repository with the next release of **Blaze**: Version 2.4 will be the last release on Google Code and the first release on our new home. We are currently wrapping up the 2.4 release and at the same time preparing our move to the new platform. Stay tuned, we will inform you as soon as possible about the location of our new home.

----

**11.3.2015**: You were asking for them, here they are! The new big feature of **Blaze** 2.3 are lower and upper triangular matrices. And they come with full support within the **Blaze** library: Specifically adapted and optimized compute kernels and full support for parallelization via OpenMP, C++11 and Boost threads. Also noteworthy: The implementation is thoroughly checked by 748 new test cases. See the **Blaze** [tutorial](https://bitbucket.org/blaze-lib/blaze/wiki/Triangular_Matrices) for how the new `LowerMatrix` and `UpperMatrix` adaptors work!

----

**3.12.2014**: After a total of five and a half months, a little late for [SC'14](http://sc14.supercomputing.org), but right on time for [Meeting C++](http://meetingcpp.com), we finally release **Blaze** 2.2! But the waiting time was worthwhile! This release comes with several bug fixes and hundreds of improvements, many based on your hints, suggestions and ideas. Thank you very much for your support and help to make the **Blaze** library even better!

The big new feature of **Blaze** 2.2 is symmetric matrices. And this is not just any implementation of symmetric matrices, but one of the most complete and powerful implementations available. See the **Blaze** [tutorial](https://bitbucket.org/blaze-lib/blaze/wiki/Symmetric_Matrices) to get an idea of how symmetric matrices work and how they can help you prevent some inadvertent pessimizations of your code.

----

**20.6.2014**: After three month, just in time for [ISC'14](http://www.isc-events.com/isc14/), **Blaze** 2.1 has finally been released! The focus of this release is the improvement and extension of the shared memory parallelization capabilities. In addition to the OpenMP parallelization, **Blaze** 2.1 now also enables shared memory parallelization based on C++11 and Boost threads. With that, shared memory parallel execution is now available for virtually every platform and compiler. Additionally, the underlying architecture for the parallel execution and automatic, context-depending optimization has been significantly improved. Therefore **Blaze** 2.1 should prove to be the fastest and most flexible **Blaze** release yet.

----

**23.3.2014**: **Blaze** 2.0 goes parallel!

One of the main motivations of the **Blaze** 1.x releases was to provide maximum performance on a single CPU core for all possible operations. However, the [free lunch is over](http://www.gotw.ca/publications/concurrency-ddj.htm) and today's CPUs are not single core anymore. In order to fully utilize the performance potential of a multicore CPU, computations have to be parallelized across all available cores of a CPU. Therefore, starting with **Blaze** 2.0, the **Blaze** library provides automated shared memory parallelization. Get an impression of the possible performance boost in the [Benchmarks](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks) section.

----

## Wiki: Table of Contents ##

* [Configuration and Installation](https://bitbucket.org/blaze-lib/blaze/wiki/Configuration and Installation)
* [Getting Started](https://bitbucket.org/blaze-lib/blaze/wiki/Getting Started)
* [Vectors](https://bitbucket.org/blaze-lib/blaze/wiki/Vectors)
    * [Vector Types](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Types)
    * [Vector Operations](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Operations)
* [Matrices](https://bitbucket.org/blaze-lib/blaze/wiki/Matrices)
    * [Matrix Types](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Types)
    * [Matrix Operations](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Operations)
* [Adaptors](https://bitbucket.org/blaze-lib/blaze/wiki/Adaptors)
    * [Symmetric Matrices](https://bitbucket.org/blaze-lib/blaze/wiki/Symmetric Matrices)
    * [Triangular Matrices](https://bitbucket.org/blaze-lib/blaze/wiki/Triangular Matrices)
* [Views](https://bitbucket.org/blaze-lib/blaze/wiki/Views)
    * [Subvectors](https://bitbucket.org/blaze-lib/blaze/wiki/Subvectors)
    * [Submatrices](https://bitbucket.org/blaze-lib/blaze/wiki/Submatrices)
    * [Rows](https://bitbucket.org/blaze-lib/blaze/wiki/Rows)
    * [Columns](https://bitbucket.org/blaze-lib/blaze/wiki/Columns)
* [Arithmetic Operations](https://bitbucket.org/blaze-lib/blaze/wiki/Arithmetic Operations)
    * [Addition](https://bitbucket.org/blaze-lib/blaze/wiki/Addition)
    * [Subtraction](https://bitbucket.org/blaze-lib/blaze/wiki/Subtraction)
    * [Scalar Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Scalar Multiplication)
    * [Vector/Vector Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication)
        * [Componentwise Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!componentwise-multiplication)
        * [Inner Product / Scalar Product / Dot Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!inner-product-scalar-product-dot-product)
        * [Outer Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!outer-product)
        * [Cross Product](https://bitbucket.org/blaze-lib/blaze/wiki/Vector-Vector Multiplication#!cross-product)
    * [Matrix/Vector Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix-Vector Multiplication)
    * [Matrix/Matrix Multiplication](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix-Matrix Multiplication)
* [Shared-Memory Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/Shared Memory Parallelization)
    * [OpenMP Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/OpenMP Parallelization)
    * [C++11 Thread Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/Cpp Thread Parallelization)
    * [Boost Thread Parallelization](https://bitbucket.org/blaze-lib/blaze/wiki/Boost Thread Parallelization)
    * [Serial Execution](https://bitbucket.org/blaze-lib/blaze/wiki/Serial Execution)
* [Serialization](https://bitbucket.org/blaze-lib/blaze/wiki/Serialization)
    * [Vector Serialization](https://bitbucket.org/blaze-lib/blaze/wiki/Vector Serialization)
    * [Matrix Serialization](https://bitbucket.org/blaze-lib/blaze/wiki/Matrix Serialization)
* [Intra-Statement Optimization](https://bitbucket.org/blaze-lib/blaze/wiki/Intra-Statement Optimization)
* [Configuration Files](https://bitbucket.org/blaze-lib/blaze/wiki/Configuration Files)
* [Blazemark: The Blaze Benchmark Suite](https://bitbucket.org/blaze-lib/blaze/wiki/Blazemark)
* [Benchmarks/Performance Results](https://bitbucket.org/blaze-lib/blaze/wiki/Benchmarks)

----

## License ##

The **Blaze** library is licensed under the New (Revised) BSD license. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
{'fraction_non_alphanumeric': 0.12015471285630203, 'fraction_numerical': 0.014798621037585134, 'mean_word_length': 4.626064333017975, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 112, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '545425', 'n_tokens_mistral': 7125, 'n_tokens_neox': 6733, 'n_words': 2170}