![]() |
Configuration of the thresholds for matrix/vector and matrix/matrix multiplications. More...
Go to the source code of this file.
Namespaces | |
blaze | |
Namespace of the Blaze C++ math library. | |
Variables | |
const size_t | blaze::DMATDVECMULT_USER_THRESHOLD = 4000000UL |
Row-major dense matrix/dense vector multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the row-major dense matrix/dense vector multiplication. In case the number of elements in the dense matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the dense matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::TDMATDVECMULT_USER_THRESHOLD = 62500UL |
Column-major dense matrix/dense vector multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the column-major dense matrix/dense vector multiplication. In case the number of elements in the dense matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the dense matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::TDVECDMATMULT_USER_THRESHOLD = 62500UL |
Dense Vector/row-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the dense vector/row-major dense matrix multiplication. In case the number of elements in the dense matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the dense matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::TDVECTDMATMULT_USER_THRESHOLD = 4000000UL |
Dense Vector/column-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the dense vector/column-major dense matrix multiplication. In case the number of elements in the dense matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the dense matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::DMATDMATMULT_USER_THRESHOLD = 10000UL |
Row-major dense matrix/row-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the row-major dense matrix/row-major dense matrix multiplication. In case the number of elements of the target matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the target matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::DMATTDMATMULT_USER_THRESHOLD = 10000UL |
Row-major dense matrix/column-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the row-major dense matrix/column-major dense matrix multiplication. In case the number of elements of the target matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the target matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::TDMATDMATMULT_USER_THRESHOLD = 10000UL |
Column-major dense matrix/row-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the column-major dense matrix/row-major dense matrix multiplication. In case the number of elements of the target matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the target matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::TDMATTDMATMULT_USER_THRESHOLD = 10000UL |
Column-major dense matrix/column-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the custom Blaze kernels and the BLAS kernels for the column-major dense matrix/column-major dense matrix multiplication. In case the number of elements of the target matrix is equal or higher than this value, the BLAS kernels are preferred over the custom Blaze kernels. In case the number of elements in the target matrix is smaller, the Blaze kernels are used. More... | |
const size_t | blaze::DMATSMATMULT_USER_THRESHOLD = 2500UL |
Row-major dense matrix/row-major sparse matrix multiplication threshold.This setting specifies the threshold between the application of the Blaze kernels for small and for large row-major dense matrix/row-major sparse matrix multiplications. In case the number of elements of the target matrix is equal or higher than this value, the kernel for large matrices is preferred over the kernel for small matrices. In case the number of elements in the target matrix is smaller, the kernel for small matrices is used. More... | |
const size_t | blaze::TDMATSMATMULT_USER_THRESHOLD = 2500UL |
Column-major dense matrix/row-major sparse matrix multiplication threshold.This setting specifies the threshold between the application of the Blaze kernels for small and for large column-major dense matrix/row-major sparse matrix multiplications. In case the number of elements of the target matrix is equal or higher than this value, the kernel for large matrices is preferred over the kernel for small matrices. In case the number of elements in the target matrix is smaller, the kernel for small matrices is used. More... | |
const size_t | blaze::TSMATDMATMULT_USER_THRESHOLD = 10000UL |
Column-major sparse matrix/row-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the Blaze kernels for small and for large column-major sparse matrix/row-major dense matrix multiplications. In case the number of elements of the target matrix is equal or higher than this value, the kernel for large matrices is preferred over the kernel for small matrices. In case the number of elements in the target matrix is smaller, the kernel for small matrices is used. More... | |
const size_t | blaze::TSMATTDMATMULT_USER_THRESHOLD = 22500UL |
Column-major sparse matrix/column-major dense matrix multiplication threshold.This setting specifies the threshold between the application of the Blaze kernels for small and for large column-major sparse matrix/column-major dense matrix multiplications. In case the number of elements of the target matrix is equal or higher than this value, the kernel for large matrices is preferred over the kernel for small matrices. In case the number of elements in the target matrix is smaller, the kernel for small matrices is used. More... | |
const size_t | blaze::SMP_DVECASSIGN_USER_THRESHOLD = 38000UL |
SMP dense vector assignment threshold.This threshold specifies when an assignment of a simple dense vector can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DVECDVECADD_USER_THRESHOLD = 38000UL |
SMP dense vector/dense vector addition threshold.This threshold specifies when a dense vector/dense vector addition can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DVECDVECSUB_USER_THRESHOLD = 38000UL |
SMP dense vector/dense vector subtraction threshold.This threshold specifies when a dense vector/dense vector subtraction can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DVECDVECMULT_USER_THRESHOLD = 38000UL |
SMP dense vector/dense vector multiplication threshold.This threshold specifies when a dense vector/dense vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DVECSCALARMULT_USER_THRESHOLD = 51000UL |
SMP dense vector/scalar multiplication/division threshold.This threshold specifies when a dense vector/scalar multiplication/division can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATDVECMULT_USER_THRESHOLD = 330UL |
SMP row-major dense matrix/dense vector multiplication threshold.This threshold specifies when a row-major dense matrix/dense vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATDVECMULT_USER_THRESHOLD = 360UL |
SMP column-major dense matrix/dense vector multiplication threshold.This threshold specifies when a column-major dense matrix/dense vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDVECDMATMULT_USER_THRESHOLD = 370UL |
SMP dense vector/row-major dense matrix multiplication threshold.This threshold specifies when a dense vector/row-major dense matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDVECTDMATMULT_USER_THRESHOLD = 340UL |
SMP dense vector/column-major dense matrix multiplication threshold.This threshold specifies when a dense vector/column-major dense matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATSVECMULT_USER_THRESHOLD = 480UL |
SMP row-major dense matrix/sparse vector multiplication threshold.This threshold specifies when a row-major dense matrix/sparse vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATSVECMULT_USER_THRESHOLD = 910UL |
SMP column-major dense matrix/sparse vector multiplication threshold.This threshold specifies when a column-major dense matrix/sparse vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSVECDMATMULT_USER_THRESHOLD = 910UL |
SMP sparse vector/row-major dense matrix multiplication threshold.This threshold specifies when a sparse vector/row-major dense matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSVECTDMATMULT_USER_THRESHOLD = 480UL |
SMP sparse vector/column-major dense matrix multiplication threshold.This threshold specifies when a sparse vector/column-major dense matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATDVECMULT_USER_THRESHOLD = 600UL |
SMP row-major sparse matrix/dense vector multiplication threshold.This threshold specifies when a row-major sparse matrix/dense vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATDVECMULT_USER_THRESHOLD = 1250UL |
SMP column-major sparse matrix/dense vector multiplication threshold.This threshold specifies when a column-major sparse matrix/dense vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDVECSMATMULT_USER_THRESHOLD = 1190UL |
SMP dense vector/row-major sparse matrix multiplication threshold.This threshold specifies when a dense vector/row-major sparse matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDVECTSMATMULT_USER_THRESHOLD = 530UL |
SMP dense vector/column-major sparse matrix multiplication threshold.This threshold specifies when a dense vector/column-major sparse matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATSVECMULT_USER_THRESHOLD = 260UL |
SMP row-major sparse matrix/sparse vector multiplication threshold.This threshold specifies when a row-major sparse matrix/sparse vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATSVECMULT_USER_THRESHOLD = 2160UL |
SMP column-major sparse matrix/sparse vector multiplication threshold.This threshold specifies when a column-major sparse matrix/sparse vector multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSVECSMATMULT_USER_THRESHOLD = 2160UL |
SMP sparse vector/row-major sparse matrix multiplication threshold.This threshold specifies when a sparse vector/row-major sparse matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSVECTSMATMULT_USER_THRESHOLD = 260UL |
SMP sparse vector/column-major sparse matrix multiplication threshold.This threshold specifies when a sparse vector/column-major sparse matrix multiplication can be executed in parallel. In case the number of elements of the target vector is larger or equal to this threshold, the operation is executed in parallel. If the number of elements is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATASSIGN_USER_THRESHOLD = 220UL |
SMP dense matrix assignment threshold.This threshold specifies when an assignment with a simple dense matrix can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATDMATADD_USER_THRESHOLD = 190UL |
SMP row-major dense matrix/row-major dense matrix addition threshold.This threshold specifies when a row-major dense matrix/row-major dense matrix addition can be executed in parallel. This threshold affects both additions between two row-major matrices or two column-major dense matrices. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATTDMATADD_USER_THRESHOLD = 175UL |
SMP row-major dense matrix/column-major dense matrix addition threshold.This threshold specifies when a row-major dense matrix/column-major dense matrix addition can be executed in parallel. This threshold affects both additions between a row-major matrix and a column-major matrix and a column-major matrix and a row-major matrix. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATDMATSUB_USER_THRESHOLD = 190UL |
SMP row-major dense matrix/row-major dense matrix subtraction threshold.This threshold specifies when a row-major dense matrix/row-major dense matrix subtraction can be executed in parallel. This threshold affects both subtractions between two row-major matrices or two column-major dense matrices. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATTDMATSUB_USER_THRESHOLD = 175UL |
SMP row-major dense matrix/column-major dense matrix subtraction threshold.This threshold specifies when a row-major dense matrix/column-major dense matrix subtraction can be executed in parallel. This threshold affects both subtractions between a row-major matrix and a column-major matrix and a column-major matrix and a row-major matrix. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATSCALARMULT_USER_THRESHOLD = 220UL |
SMP dense matrix/scalar multiplication/division threshold.This threshold specifies when a dense matrix/scalar multiplication or division can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATDMATMULT_USER_THRESHOLD = 55UL |
SMP row-major dense matrix/row-major dense matrix multiplication threshold.This threshold specifies when a row-major dense matrix/row-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATTDMATMULT_USER_THRESHOLD = 55UL |
SMP row-major dense matrix/column-major dense matrix multiplication threshold.This threshold specifies when a row-major dense matrix/column-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATDMATMULT_USER_THRESHOLD = 55UL |
SMP column-major dense matrix/row-major dense matrix multiplication threshold.This threshold specifies when a column-major dense matrix/row-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATTDMATMULT_USER_THRESHOLD = 55UL |
SMP column-major dense matrix/column-major dense matrix multiplication threshold.This threshold specifies when a column-major dense matrix/column-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATSMATMULT_USER_THRESHOLD = 64UL |
SMP row-major dense matrix/row-major sparse matrix multiplication threshold.This threshold specifies when a row-major dense matrix/row-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DMATTSMATMULT_USER_THRESHOLD = 68UL |
SMP row-major dense matrix/column-major sparse matrix multiplication threshold.This threshold specifies when a row-major dense matrix/column-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATSMATMULT_USER_THRESHOLD = 90UL |
SMP column-major dense matrix/row-major sparse matrix multiplication threshold.This threshold specifies when a column-major dense matrix/row-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TDMATTSMATMULT_USER_THRESHOLD = 90UL |
SMP column-major dense matrix/column-major sparse matrix multiplication threshold.This threshold specifies when a column-major dense matrix/column-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATDMATMULT_USER_THRESHOLD = 88UL |
SMP row-major sparse matrix/row-major dense matrix multiplication threshold.This threshold specifies when a row-major sparse matrix/row-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATTDMATMULT_USER_THRESHOLD = 72UL |
SMP row-major sparse matrix/column-major dense matrix multiplication threshold.This threshold specifies when a row-major sparse matrix/column-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATDMATMULT_USER_THRESHOLD = 66UL |
SMP column-major sparse matrix/row-major dense matrix multiplication threshold.This threshold specifies when a column-major sparse matrix/row-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATTDMATMULT_USER_THRESHOLD = 66UL |
SMP column-major sparse matrix/column-major dense matrix multiplication threshold.This threshold specifies when a column-major sparse matrix/column-major dense matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATSMATMULT_USER_THRESHOLD = 150UL |
SMP row-major sparse matrix/row-major sparse matrix multiplication threshold.This threshold specifies when a row-major sparse matrix/row-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_SMATTSMATMULT_USER_THRESHOLD = 140UL |
SMP row-major sparse matrix/column-major sparse matrix multiplication threshold.This threshold specifies when a row-major sparse matrix/column-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATSMATMULT_USER_THRESHOLD = 140UL |
SMP column-major sparse matrix/row-major sparse matrix multiplication threshold.This threshold specifies when a column-major sparse matrix/row-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_TSMATTSMATMULT_USER_THRESHOLD = 150UL |
SMP column-major sparse matrix/column-major sparse matrix multiplication threshold.This threshold specifies when a column-major sparse matrix/column-major sparse matrix multiplication can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
const size_t | blaze::SMP_DVECTDVECMULT_USER_THRESHOLD = 290UL |
SMP dense vector/dense vector outer product threshold.This threshold specifies when a dense vector/dense vector outer product can be executed in parallel. In case the number of rows/columns of the target matrix is larger or equal to this threshold, the operation is executed in parallel. If the number of rows/columns is below this threshold the operation is executed single-threaded. More... | |
Configuration of the thresholds for matrix/vector and matrix/matrix multiplications.
Copyright (C) 2013 Klaus Iglberger - All Rights Reserved
This file is part of the Blaze library. You can redistribute it and/or modify it under the terms of 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:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.