openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
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

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