| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // 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
|