qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
include/qpOASES/LapackBlasReplacement.hpp
Go to the documentation of this file.
00001 /*
00002  *  This file is part of qpOASES.
00003  *
00004  *  qpOASES -- An Implementation of the Online Active Set Strategy.
00005  *  Copyright (C) 2007-2017 by Hans Joachim Ferreau, Andreas Potschka,
00006  *  Christian Kirches et al. All rights reserved.
00007  *
00008  *  qpOASES is free software; you can redistribute it and/or
00009  *  modify it under the terms of the GNU Lesser General Public
00010  *  License as published by the Free Software Foundation; either
00011  *  version 2.1 of the License, or (at your option) any later version.
00012  *
00013  *  qpOASES is distributed in the hope that it will be useful,
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016  *  See the GNU Lesser General Public License for more details.
00017  *
00018  *  You should have received a copy of the GNU Lesser General Public
00019  *  License along with qpOASES; if not, write to the Free Software
00020  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021  *
00022  */
00023 
00024 
00036 #ifndef QPOASES_LAPACKBLASREPLACEMENT_HPP
00037 #define QPOASES_LAPACKBLASREPLACEMENT_HPP
00038 
00039 
00040 #ifdef __USE_SINGLE_PRECISION__
00041 
00043     #define GEMM sgemm_
00044 
00045     #define SYR ssyr_
00046 
00047     #define SYR2 ssyr2_
00048 
00049     #define POTRF spotrf_
00050 
00052     /* #define GEQRF sgeqrf_ */
00054     /* #define ORMQR sormqr_ */
00056     #define TRTRS strtrs_
00057 
00058     #define TRCON strcon_
00059 
00060 #else
00061 
00063     #define GEMM dgemm_
00064 
00065     #define SYR  dsyr_
00066 
00067     #define SYR2 dsyr2_
00068 
00069     #define POTRF dpotrf_
00070 
00072     /* #define GEQRF dgeqrf_ */
00074     /* #define ORMQR dormqr_ */
00076     #define TRTRS dtrtrs_
00077 
00078     #define TRCON dtrcon_
00079 
00080 #endif /* __USE_SINGLE_PRECISION__ */
00081 
00082 
00083 extern "C"
00084 {
00086     void dgemm_(    const char*, const char*, const la_uint_t*, const la_uint_t*, const la_uint_t*,
00087                     const double*, const double*, const la_uint_t*, const double*, const la_uint_t*,
00088                     const double*, double*, const la_uint_t* );
00090     void sgemm_(    const char*, const char*, const la_uint_t*, const la_uint_t*, const la_uint_t*,
00091                     const float*, const float*, const la_uint_t*, const float*, const la_uint_t*,
00092                     const float*, float*, const la_uint_t* );
00093 
00095     void dsyr_(     const char*, const la_uint_t*, const double*, const double*,
00096                     const la_uint_t*, double*, const la_uint_t* );
00098     void ssyr_(     const char*, const la_uint_t*, const float*, const float*,
00099                     const la_uint_t*, float*, const la_uint_t* );
00100 
00102     void dsyr2_(    const char*, const la_uint_t*, const double*, const double*,
00103                     const la_uint_t*, const double*, const la_uint_t*, double*, const la_uint_t*);
00105     void ssyr2_(    const char*, const la_uint_t*, const float*, const float*,
00106                     const la_uint_t*, const float*, const la_uint_t*, float*, const la_uint_t*);
00107 
00109     void dpotrf_(   const char*, const la_uint_t*, double*, const la_uint_t*, la_int_t* );
00111     void spotrf_(   const char*, const la_uint_t*, float*, const la_uint_t*, la_int_t* );
00112 
00113 
00115     /* void dgeqrf_(    const la_uint_t* M, const la_uint_t* N, double* A, const la_uint_t* LDA,
00116                         double* TAU, double* WORK, const la_uint_t* LWORK, int *INFO );*/
00118     /* void sgeqrf_(    const la_uint_t* M, const la_uint_t* N, float* A, const la_uint_t* LDA,
00119                         float* TAU, float* WORK, const la_uint_t* LWORK, int *INFO );*/
00120 
00122     /* void dormqr_(    const char* SIDE, const char* TRANS, const la_uint_t* M, const la_uint_t* N, const la_uint_t* K,
00123                         double* A, const la_uint_t* LDA, double* TAU, double* C, const la_uint_t* LDC,
00124                         double* WORK, const la_uint_t* LWORK, int *INFO );*/
00126     /* void sormqr_(    const char* SIDE, const char* TRANS, const la_uint_t* M, const la_uint_t* N, const la_uint_t* K,
00127                         float* A, const la_uint_t* LDA, float* TAU, float* C, const la_uint_t* LDC,
00128                         float* WORK, const la_uint_t* LWORK, int *INFO );*/
00129 
00131     void dtrtrs_(   const char* UPLO, const char* TRANS, const char* DIAG, const la_uint_t* N, const la_uint_t* NRHS,
00132                     double* A, const la_uint_t* LDA, double* B, const la_uint_t* LDB, la_int_t* INFO );
00134     void strtrs_(   const char* UPLO, const char* TRANS, const char* DIAG, const la_uint_t* N, const la_uint_t* NRHS,
00135                     float* A, const la_uint_t* LDA, float* B, const la_uint_t* LDB, la_int_t* INFO );
00136 
00138     void dtrcon_(   const char* NORM, const char* UPLO, const char* DIAG, const la_uint_t* N, double* A, const la_uint_t* LDA,
00139                     double* RCOND, double* WORK, const la_uint_t* IWORK, la_int_t* INFO );
00141     void strcon_(   const char* NORM, const char* UPLO, const char* DIAG, const la_uint_t* N, float* A, const la_uint_t* LDA,
00142                     float* RCOND, float* WORK, const la_uint_t* IWORK, la_int_t* INFO );
00143 }
00144 
00145 #endif  /* QPOASES_LAPACKBLASREPLACEMENT_HPP */