You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.0 KiB
78 lines
3.0 KiB
// 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
|
|
|