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.
		
		
		
		
			
				
					79 lines
				
				3.0 KiB
			
		
		
			
		
	
	
					79 lines
				
				3.0 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								// 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
							 |