diff options
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/IpBlas.hpp')
-rw-r--r-- | newstructure/thirdparty/linux/include/coin/IpBlas.hpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/IpBlas.hpp b/newstructure/thirdparty/linux/include/coin/IpBlas.hpp new file mode 100644 index 0000000..517057b --- /dev/null +++ b/newstructure/thirdparty/linux/include/coin/IpBlas.hpp @@ -0,0 +1,78 @@ +// Copyright (C) 2004, 2006 International Business Machines and others. +// All Rights Reserved. +// This code is published under the Eclipse Public License. +// +// $Id: IpBlas.hpp 1861 2010-12-21 21:34:47Z andreasw $ +// +// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 + +#ifndef __IPBLAS_HPP__ +#define __IPBLAS_HPP__ + +#include "IpUtils.hpp" + +namespace Ipopt +{ + // If CBLAS is not available, this is our own interface to the Fortran + // implementation + + /** Wrapper for BLAS function DDOT. Compute dot product of vector x + and vector y */ + Number IpBlasDdot(Index size, const Number *x, Index incX, const Number *y, + Index incY); + + /** Wrapper for BLAS function DNRM2. Compute 2-norm of vector x*/ + Number IpBlasDnrm2(Index size, const Number *x, Index incX); + + /** Wrapper for BLAS function DASUM. Compute 1-norm of vector x*/ + Number IpBlasDasum(Index size, const Number *x, Index incX); + + /** Wrapper for BLAS function IDAMAX. Compute index for largest + absolute element of vector x */ + Index IpBlasIdamax(Index size, const Number *x, Index incX); + + /** Wrapper for BLAS subroutine DCOPY. Copying vector x into vector + y */ + void IpBlasDcopy(Index size, const Number *x, Index incX, Number *y, + Index incY); + + /** Wrapper for BLAS subroutine DAXPY. Adding the alpha multiple of + vector x to vector y */ + void IpBlasDaxpy(Index size, Number alpha, const Number *x, Index incX, + Number *y, Index incY); + + /** Wrapper for BLAS subroutine DSCAL. Scaling vector x by scalar + alpha */ + void IpBlasDscal(Index size, Number alpha, Number *x, Index incX); + + /** Wrapper for BLAS subroutine DGEMV. Multiplying a matrix with a + vector. */ + void IpBlasDgemv(bool trans, Index nRows, Index nCols, Number alpha, + const Number* A, Index ldA, const Number* x, + Index incX, Number beta, Number* y, Index incY); + + /** Wrapper for BLAS subroutine DSYMV. Multiplying a symmetric + matrix with a vector. */ + void IpBlasDsymv(Index n, Number alpha, const Number* A, Index ldA, + const Number* x, Index incX, Number beta, Number* y, + Index incY); + + /** Wrapper for BLAS subroutine DGEMM. Multiplying two matrices */ + void IpBlasDgemm(bool transa, bool transb, Index m, Index n, Index k, + Number alpha, const Number* A, Index ldA, const Number* B, + Index ldB, Number beta, Number* C, Index ldC); + + /** Wrapper for BLAS subroutine DSYRK. Adding a high-rank update to + * a matrix */ + void IpBlasDsyrk(bool trans, Index ndim, Index nrank, + Number alpha, const Number* A, Index ldA, + Number beta, Number* C, Index ldC); + + /** Wrapper for BLAS subroutine DTRSM. Backsolve for a lower triangular + * matrix. */ + void IpBlasDtrsm(bool trans, Index ndim, Index nrhs, Number alpha, + const Number* A, Index ldA, Number* B, Index ldB); + +} // namespace Ipopt + +#endif |