/usr/include/coin/IpBlas.hpp is in coinor-libipopt-dev 3.11.9-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 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
|