1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//===================================================== 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// File : blas_interface.hh 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Author : L. Plagne <laurent.plagne@edf.fr)> 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright (C) EDF R&D, lun sep 30 14:23:28 CEST 2002 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//===================================================== 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This program is free software; you can redistribute it and/or 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// modify it under the terms of the GNU General Public License 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// as published by the Free Software Foundation; either version 2 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// of the License, or (at your option) any later version. 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This program is distributed in the hope that it will be useful, 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// but WITHOUT ANY WARRANTY; without even the implied warranty of 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// GNU General Public License for more details. 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// You should have received a copy of the GNU General Public License 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// along with this program; if not, write to the Free Software 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef blas_PRODUIT_MATRICE_VECTEUR_HH 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define blas_PRODUIT_MATRICE_VECTEUR_HH 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <c_interface_base.h> 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <complex> 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathextern "C" 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include "blas.h" 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // Cholesky Factorization 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// void spotrf_(const char* uplo, const int* n, float *a, const int* ld, int* info); 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// void dpotrf_(const char* uplo, const int* n, double *a, const int* ld, int* info); 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void ssytrd_(char *uplo, const int *n, float *a, const int *lda, float *d, float *e, float *tau, float *work, int *lwork, int *info ); 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void dsytrd_(char *uplo, const int *n, double *a, const int *lda, double *d, double *e, double *tau, double *work, int *lwork, int *info ); 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void sgehrd_( const int *n, int *ilo, int *ihi, float *a, const int *lda, float *tau, float *work, int *lwork, int *info ); 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void dgehrd_( const int *n, int *ilo, int *ihi, double *a, const int *lda, double *tau, double *work, int *lwork, int *info ); 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // LU row pivoting 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// void dgetrf_( int *m, int *n, double *a, int *lda, int *ipiv, int *info ); 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// void sgetrf_(const int* m, const int* n, float *a, const int* ld, int* ipivot, int* info); 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // LU full pivoting 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void sgetc2_(const int* n, float *a, const int *lda, int *ipiv, int *jpiv, int*info ); 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void dgetc2_(const int* n, double *a, const int *lda, int *ipiv, int *jpiv, int*info ); 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifdef HAS_LAPACK 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define MAKE_STRING2(S) #S 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define MAKE_STRING(S) MAKE_STRING2(S) 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define CAT2(A,B) A##B 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define CAT(A,B) CAT2(A,B) 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathtemplate<class real> class blas_interface; 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char notrans = 'N'; 58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char trans = 'T'; 59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char nonunit = 'N'; 60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char lower = 'L'; 61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char right = 'R'; 62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic char left = 'L'; 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathstatic int intone = 1; 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR float 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR_PREFIX s 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include "blas_interface_impl.hh" 70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#undef SCALAR 71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#undef SCALAR_PREFIX 72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR double 75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR_PREFIX d 76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include "blas_interface_impl.hh" 77c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#undef SCALAR 78c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#undef SCALAR_PREFIX 79c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 80c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 81c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 82c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 83c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 84