Changeset 2875 in Sophya for trunk/SophyaExt/LinAlg


Ignore:
Timestamp:
Jan 3, 2006, 3:34:15 PM (20 years ago)
Author:
ansari
Message:

Portage/compilation sur AIX-XlC (regatta): Pas de _ (underscore) pour les fonctions fortran - Reza 3 Jan 2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/LinAlg/intflapack.cc

    r2646 r2875  
    8080*/
    8181
     82/*
     83  Decembre 2005 : Suite portage AIX xlC
     84  On declare des noms en majuscule pour les routines fortran -
     85  avec ou sans underscore _ , suivant les systemes
     86*/
     87#ifdef AIX
     88
     89#define sgesv    sgesv
     90#define dgesv    dgesv
     91#define cgesv    cgesv
     92#define zgesv    zgesv
     93
     94#define ssysv    ssysv
     95#define dsysv    dsysv
     96#define csysv    csysv
     97#define zsysv    zsysv
     98
     99#define sgels    sgels
     100#define dgels    dgels
     101#define cgels    cgels
     102#define zgels    zgels
     103
     104#define sgelsd    sgelsd
     105#define dgelsd    dgelsd
     106#define cgelsd    cgelsd
     107#define zgelsd    zgelsd
     108
     109#define sgesvd    sgesvd
     110#define dgesvd    dgesvd
     111#define cgesvd    cgesvd
     112#define zgesvd    zgesvd
     113
     114#define sgesdd    sgesdd
     115#define dgesdd    dgesdd
     116#define cgesdd    cgesdd
     117#define zgesdd    zgesdd
     118
     119#define ssyev     ssyev
     120#define dsyev     dsyev
     121#define cheev     cheev
     122#define zheev     zheev
     123
     124#define sgeev     sgeev
     125#define dgeev     dgeev
     126#define cgeev     cgeev
     127#define zgeev     zgeev
     128
     129#else
     130
     131#define sgesv    sgesv_
     132#define dgesv    dgesv_
     133#define cgesv    cgesv_
     134#define zgesv    zgesv_
     135
     136#define ssysv    ssysv_
     137#define dsysv    dsysv_
     138#define csysv    csysv_
     139#define zsysv    zsysv_
     140
     141#define sgels    sgels_
     142#define dgels    dgels_
     143#define cgels    cgels_
     144#define zgels    zgels_
     145
     146#define sgelsd    sgelsd_
     147#define dgelsd    dgelsd_
     148#define cgelsd    cgelsd_
     149#define zgelsd    zgelsd_
     150
     151#define sgesvd    sgesvd_
     152#define dgesvd    dgesvd_
     153#define cgesvd    cgesvd_
     154#define zgesvd    zgesvd_
     155
     156#define sgesdd    sgesdd_
     157#define dgesdd    dgesdd_
     158#define cgesdd    cgesdd_
     159#define zgesdd    zgesdd_
     160
     161#define ssyev     ssyev_
     162#define dsyev     dsyev_
     163#define cheev     cheev_
     164#define zheev     zheev_
     165
     166#define sgeev     sgeev_
     167#define dgeev     dgeev_
     168#define cgeev     cgeev_
     169#define zgeev     zgeev_
     170
     171#endif
    82172////////////////////////////////////////////////////////////////////////////////////
    83173extern "C" {
    84174// Le calculateur de workingspace
    85   int_4 ilaenv_(int_4 *ispec,char *name,char *opts,int_4 *n1,int_4 *n2,int_4 *n3,int_4 *n4,
     175  int_4 ilaenv(int_4 *ispec,char *name,char *opts,int_4 *n1,int_4 *n2,int_4 *n3,int_4 *n4,
    86176                int_4 nc1,int_4 nc2);
    87177
    88178// Drivers pour resolution de systemes lineaires
    89   void sgesv_(int_4* n, int_4* nrhs, r_4* a, int_4* lda,
     179  void sgesv(int_4* n, int_4* nrhs, r_4* a, int_4* lda,
    90180              int_4* ipiv, r_4* b, int_4* ldb, int_4* info);
    91   void dgesv_(int_4* n, int_4* nrhs, r_8* a, int_4* lda,
     181  void dgesv(int_4* n, int_4* nrhs, r_8* a, int_4* lda,
    92182              int_4* ipiv, r_8* b, int_4* ldb, int_4* info);
    93   void cgesv_(int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
     183  void cgesv(int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
    94184              int_4* ipiv, complex<r_4>* b, int_4* ldb, int_4* info);
    95   void zgesv_(int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
     185  void zgesv(int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
    96186              int_4* ipiv, complex<r_8>* b, int_4* ldb, int_4* info);
    97187
    98188// Drivers pour resolution de systemes lineaires symetriques
    99   void ssysv_(char* uplo, int_4* n, int_4* nrhs, r_4* a, int_4* lda,
     189  void ssysv(char* uplo, int_4* n, int_4* nrhs, r_4* a, int_4* lda,
    100190              int_4* ipiv, r_4* b, int_4* ldb,
    101191              r_4* work, int_4* lwork, int_4* info);
    102   void dsysv_(char* uplo, int_4* n, int_4* nrhs, r_8* a, int_4* lda,
     192  void dsysv(char* uplo, int_4* n, int_4* nrhs, r_8* a, int_4* lda,
    103193              int_4* ipiv, r_8* b, int_4* ldb,
    104194              r_8* work, int_4* lwork, int_4* info);
    105   void csysv_(char* uplo, int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
     195  void csysv(char* uplo, int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
    106196              int_4* ipiv, complex<r_4>* b, int_4* ldb,
    107197              complex<r_4>* work, int_4* lwork, int_4* info);
    108   void zsysv_(char* uplo, int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
     198  void zsysv(char* uplo, int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
    109199              int_4* ipiv, complex<r_8>* b, int_4* ldb,
    110200              complex<r_8>* work, int_4* lwork, int_4* info);
    111201
    112202// Driver pour resolution de systemes au sens de Xi2
    113   void sgels_(char * trans, int_4* m, int_4* n, int_4* nrhs, r_4* a, int_4* lda,
     203  void sgels(char * trans, int_4* m, int_4* n, int_4* nrhs, r_4* a, int_4* lda,
    114204              r_4* b, int_4* ldb, r_4* work, int_4* lwork, int_4* info);
    115   void dgels_(char * trans, int_4* m, int_4* n, int_4* nrhs, r_8* a, int_4* lda,
     205  void dgels(char * trans, int_4* m, int_4* n, int_4* nrhs, r_8* a, int_4* lda,
    116206              r_8* b, int_4* ldb, r_8* work, int_4* lwork, int_4* info);
    117   void cgels_(char * trans, int_4* m, int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
     207  void cgels(char * trans, int_4* m, int_4* n, int_4* nrhs, complex<r_4>* a, int_4* lda,
    118208              complex<r_4>* b, int_4* ldb, complex<r_4>* work, int_4* lwork, int_4* info);
    119   void zgels_(char * trans, int_4* m, int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
     209  void zgels(char * trans, int_4* m, int_4* n, int_4* nrhs, complex<r_8>* a, int_4* lda,
    120210              complex<r_8>* b, int_4* ldb, complex<r_8>* work, int_4* lwork, int_4* info);
    121211
    122212// Driver pour resolution de systemes au sens de Xi2 par SVD Divide & Conquer
    123   void sgelsd_(int_4* m,int_4* n,int_4* nrhs,r_4* a,int_4* lda,
     213  void sgelsd(int_4* m,int_4* n,int_4* nrhs,r_4* a,int_4* lda,
    124214              r_4* b,int_4* ldb,r_4* s,r_4* rcond,int_4* rank,
    125215              r_4* work,int_4* lwork,int_4* iwork,int_4* info);
    126   void dgelsd_(int_4* m,int_4* n,int_4* nrhs,r_8* a,int_4* lda,
     216  void dgelsd(int_4* m,int_4* n,int_4* nrhs,r_8* a,int_4* lda,
    127217              r_8* b,int_4* ldb,r_8* s,r_8* rcond,int_4* rank,
    128218              r_8* work,int_4* lwork,int_4* iwork,int_4* info);
    129   void cgelsd_(int_4* m,int_4* n,int_4* nrhs,complex<r_4>* a,int_4* lda,
     219  void cgelsd(int_4* m,int_4* n,int_4* nrhs,complex<r_4>* a,int_4* lda,
    130220              complex<r_4>* b,int_4* ldb,r_4* s,r_4* rcond,int_4* rank,
    131221              complex<r_4>* work,int_4* lwork,r_4* rwork,int_4* iwork,int_4* info);
    132   void zgelsd_(int_4* m,int_4* n,int_4* nrhs,complex<r_8>* a,int_4* lda,
     222  void zgelsd(int_4* m,int_4* n,int_4* nrhs,complex<r_8>* a,int_4* lda,
    133223              complex<r_8>* b,int_4* ldb,r_8* s,r_8* rcond,int_4* rank,
    134224              complex<r_8>* work,int_4* lwork,r_8* rwork,int_4* iwork,int_4* info);
    135225
    136226// Driver pour decomposition SVD
    137   void sgesvd_(char* jobu, char* jobvt, int_4* m, int_4* n, r_4* a, int_4* lda,
     227  void sgesvd(char* jobu, char* jobvt, int_4* m, int_4* n, r_4* a, int_4* lda,
    138228               r_4* s, r_4* u, int_4* ldu, r_4* vt, int_4* ldvt,
    139229               r_4* work, int_4* lwork, int_4* info);
    140   void dgesvd_(char* jobu, char* jobvt, int_4* m, int_4* n, r_8* a, int_4* lda,
     230  void dgesvd(char* jobu, char* jobvt, int_4* m, int_4* n, r_8* a, int_4* lda,
    141231               r_8* s, r_8* u, int_4* ldu, r_8* vt, int_4* ldvt,
    142232               r_8* work, int_4* lwork, int_4* info);
    143   void cgesvd_(char* jobu, char* jobvt, int_4* m, int_4* n, complex<r_4>* a, int_4* lda,
     233  void cgesvd(char* jobu, char* jobvt, int_4* m, int_4* n, complex<r_4>* a, int_4* lda,
    144234               r_4* s, complex<r_4>* u, int_4* ldu, complex<r_4>* vt, int_4* ldvt,
    145235               complex<r_4>* work, int_4* lwork, r_4* rwork, int_4* info);
    146   void zgesvd_(char* jobu, char* jobvt, int_4* m, int_4* n, complex<r_8>* a, int_4* lda,
     236  void zgesvd(char* jobu, char* jobvt, int_4* m, int_4* n, complex<r_8>* a, int_4* lda,
    147237               r_8* s, complex<r_8>* u, int_4* ldu, complex<r_8>* vt, int_4* ldvt,
    148238               complex<r_8>* work, int_4* lwork, r_8* rwork, int_4* info);
    149239
    150240// Driver pour decomposition SVD Divide and Conquer
    151   void sgesdd_(char* jobz, int_4* m, int_4* n, r_4* a, int_4* lda,
     241  void sgesdd(char* jobz, int_4* m, int_4* n, r_4* a, int_4* lda,
    152242               r_4* s, r_4* u, int_4* ldu, r_4* vt, int_4* ldvt,
    153243               r_4* work, int_4* lwork, int_4* iwork, int_4* info);
    154   void dgesdd_(char* jobz, int_4* m, int_4* n, r_8* a, int_4* lda,
     244  void dgesdd(char* jobz, int_4* m, int_4* n, r_8* a, int_4* lda,
    155245               r_8* s, r_8* u, int_4* ldu, r_8* vt, int_4* ldvt,
    156246               r_8* work, int_4* lwork, int_4* iwork, int_4* info);
    157   void cgesdd_(char* jobz, int_4* m, int_4* n, complex<r_4>* a, int_4* lda,
     247  void cgesdd(char* jobz, int_4* m, int_4* n, complex<r_4>* a, int_4* lda,
    158248               r_4* s, complex<r_4>* u, int_4* ldu, complex<r_4>* vt, int_4* ldvt,
    159249               complex<r_4>* work, int_4* lwork, r_4* rwork, int_4* iwork, int_4* info);
    160   void zgesdd_(char* jobz, int_4* m, int_4* n, complex<r_8>* a, int_4* lda,
     250  void zgesdd(char* jobz, int_4* m, int_4* n, complex<r_8>* a, int_4* lda,
    161251               r_8* s, complex<r_8>* u, int_4* ldu, complex<r_8>* vt, int_4* ldvt,
    162252               complex<r_8>* work, int_4* lwork, r_8* rwork, int_4* iwork, int_4* info);
    163253
    164254// Driver pour eigen decomposition for symetric/hermitian matrices
    165   void ssyev_(char* jobz, char* uplo, int_4* n, r_4* a, int_4* lda, r_4* w,
     255  void ssyev(char* jobz, char* uplo, int_4* n, r_4* a, int_4* lda, r_4* w,
    166256              r_4* work, int_4 *lwork, int_4* info);
    167   void dsyev_(char* jobz, char* uplo, int_4* n, r_8* a, int_4* lda, r_8* w,
     257  void dsyev(char* jobz, char* uplo, int_4* n, r_8* a, int_4* lda, r_8* w,
    168258              r_8* work, int_4 *lwork, int_4* info);
    169   void cheev_(char* jobz, char* uplo, int_4* n, complex<r_4>* a, int_4* lda, r_4* w,
     259  void cheev(char* jobz, char* uplo, int_4* n, complex<r_4>* a, int_4* lda, r_4* w,
    170260              complex<r_4>* work, int_4 *lwork, r_4* rwork, int_4* info);
    171   void zheev_(char* jobz, char* uplo, int_4* n, complex<r_8>* a, int_4* lda, r_8* w,
     261  void zheev(char* jobz, char* uplo, int_4* n, complex<r_8>* a, int_4* lda, r_8* w,
    172262              complex<r_8>* work, int_4 *lwork, r_8* rwork, int_4* info);
    173263
    174264// Driver pour eigen decomposition for general squared matrices
    175   void sgeev_(char* jobl, char* jobvr, int_4* n, r_4* a, int_4* lda, r_4* wr, r_4* wi,
     265  void sgeev(char* jobl, char* jobvr, int_4* n, r_4* a, int_4* lda, r_4* wr, r_4* wi,
    176266              r_4* vl, int_4* ldvl, r_4* vr, int_4* ldvr,
    177267              r_4* work, int_4 *lwork, int_4* info);
    178   void dgeev_(char* jobl, char* jobvr, int_4* n, r_8* a, int_4* lda, r_8* wr, r_8* wi,
     268  void dgeev(char* jobl, char* jobvr, int_4* n, r_8* a, int_4* lda, r_8* wr, r_8* wi,
    179269              r_8* vl, int_4* ldvl, r_8* vr, int_4* ldvr,
    180270              r_8* work, int_4 *lwork, int_4* info);
    181   void cgeev_(char* jobl, char* jobvr, int_4* n,  complex<r_4>* a, int_4* lda, complex<r_4>* w,
     271  void cgeev(char* jobl, char* jobvr, int_4* n,  complex<r_4>* a, int_4* lda, complex<r_4>* w,
    182272              complex<r_4>* vl, int_4* ldvl, complex<r_4>* vr, int_4* ldvr,
    183273              complex<r_4>* work, int_4 *lwork, r_4* rwork, int_4* info);
    184   void zgeev_(char* jobl, char* jobvr, int_4* n,  complex<r_8>* a, int_4* lda, complex<r_8>* w,
     274  void zgeev(char* jobl, char* jobvr, int_4* n,  complex<r_8>* a, int_4* lda, complex<r_8>* w,
    185275              complex<r_8>* vl, int_4* ldvl, complex<r_8>* vr, int_4* ldvr,
    186276              complex<r_8>* work, int_4 *lwork, r_8* rwork, int_4* info);
     
    207297{
    208298 int_4 nc1 = strlen(name), nc2 = strlen(opts), rc=0;
    209  rc = ilaenv_(&ispec,name,opts,&n1,&n2,&n3,&n4,nc1,nc2);
     299 rc = ilaenv(&ispec,name,opts,&n1,&n2,&n3,&n4,nc1,nc2);
    210300 //cout<<"ilaenv_en_C("<<ispec<<","<<name<<"("<<nc1<<"),"<<opts<<"("<<nc2<<"),"
    211301 //    <<n1<<","<<n2<<","<<n3<<","<<n4<<") = "<<rc<<endl;
     
    262352
    263353  if (typeid(T) == typeid(r_4) )
    264     sgesv_(&n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb, &info);
     354    sgesv(&n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb, &info);
    265355  else if (typeid(T) == typeid(r_8) )
    266     dgesv_(&n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb, &info);
     356    dgesv(&n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb, &info);
    267357  else if (typeid(T) == typeid(complex<r_4>) )
    268     cgesv_(&n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
     358    cgesv(&n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
    269359           (complex<r_4> *)b.Data(), &ldb, &info);
    270360  else if (typeid(T) == typeid(complex<r_8>) )
    271     zgesv_(&n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
     361    zgesv(&n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
    272362           (complex<r_8> *)b.Data(), &ldb, &info);
    273363  else {
     
    326416
    327417  if (typeid(T) == typeid(r_4) ) {
    328     ssysv_(&uplo, &n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb,
     418    ssysv(&uplo, &n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb,
    329419          (r_4 *)wkget, &lwork, &info);
    330420    lwork = type2i4(&wkget[0],4); work = new T[lwork  +GARDMEM];
    331     ssysv_(&uplo, &n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb,
     421    ssysv(&uplo, &n, &nrhs, (r_4 *)a.Data(), &lda, ipiv, (r_4 *)b.Data(), &ldb,
    332422          (r_4 *)work, &lwork, &info);
    333423  } else if (typeid(T) == typeid(r_8) )  {
    334     dsysv_(&uplo, &n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb,
     424    dsysv(&uplo, &n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb,
    335425          (r_8 *)wkget, &lwork, &info);
    336426    lwork = type2i4(&wkget[0],8); work = new T[lwork  +GARDMEM];
    337     dsysv_(&uplo, &n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb,
     427    dsysv(&uplo, &n, &nrhs, (r_8 *)a.Data(), &lda, ipiv, (r_8 *)b.Data(), &ldb,
    338428          (r_8 *)work, &lwork, &info);
    339429  } else if (typeid(T) == typeid(complex<r_4>) )  {
    340     csysv_(&uplo, &n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
     430    csysv(&uplo, &n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
    341431          (complex<r_4> *)b.Data(), &ldb,
    342432          (complex<r_4> *)wkget, &lwork, &info);
    343433    lwork = type2i4(&wkget[0],4); work = new T[lwork  +GARDMEM];
    344     csysv_(&uplo, &n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
     434    csysv(&uplo, &n, &nrhs, (complex<r_4> *)a.Data(), &lda, ipiv,
    345435          (complex<r_4> *)b.Data(), &ldb,
    346436          (complex<r_4> *)work, &lwork, &info);
    347437  } else if (typeid(T) == typeid(complex<r_8>) )  {
    348     zsysv_(&uplo, &n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
     438    zsysv(&uplo, &n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
    349439          (complex<r_8> *)b.Data(), &ldb,
    350440          (complex<r_8> *)wkget, &lwork, &info);
    351441    lwork = type2i4(&wkget[0],8); work = new T[lwork  +GARDMEM];
    352     zsysv_(&uplo, &n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
     442    zsysv(&uplo, &n, &nrhs, (complex<r_8> *)a.Data(), &lda, ipiv,
    353443          (complex<r_8> *)b.Data(), &ldb,
    354444          (complex<r_8> *)work, &lwork, &info);
     
    427517 
    428518  if (typeid(T) == typeid(r_4) ) {
    429     sgels_(&trans, &m, &n, &nrhs, (r_4 *)a.Data(), &lda,
     519    sgels(&trans, &m, &n, &nrhs, (r_4 *)a.Data(), &lda,
    430520           (r_4 *)b.Data(), &ldb, (r_4 *)wkget, &lwork, &info);
    431521    lwork = type2i4(&wkget[0],4); work = new T[lwork  +GARDMEM];
    432     sgels_(&trans, &m, &n, &nrhs, (r_4 *)a.Data(), &lda,
     522    sgels(&trans, &m, &n, &nrhs, (r_4 *)a.Data(), &lda,
    433523           (r_4 *)b.Data(), &ldb, (r_4 *)work, &lwork, &info);
    434524  } else if (typeid(T) == typeid(r_8) )  {
    435     dgels_(&trans, &m, &n, &nrhs, (r_8 *)a.Data(), &lda,
     525    dgels(&trans, &m, &n, &nrhs, (r_8 *)a.Data(), &lda,
    436526           (r_8 *)b.Data(), &ldb, (r_8 *)wkget, &lwork, &info);
    437527    lwork = type2i4(&wkget[0],8); work = new T[lwork  +GARDMEM];
    438     dgels_(&trans, &m, &n, &nrhs, (r_8 *)a.Data(), &lda,
     528    dgels(&trans, &m, &n, &nrhs, (r_8 *)a.Data(), &lda,
    439529           (r_8 *)b.Data(), &ldb, (r_8 *)work, &lwork, &info);
    440530  } else if (typeid(T) == typeid(complex<r_4>) )  {
    441     cgels_(&trans, &m, &n, &nrhs, (complex<r_4> *)a.Data(), &lda,
     531    cgels(&trans, &m, &n, &nrhs, (complex<r_4> *)a.Data(), &lda,
    442532           (complex<r_4> *)b.Data(), &ldb, (complex<r_4> *)wkget, &lwork, &info);
    443533    lwork = type2i4(&wkget[0],4); work = new T[lwork  +GARDMEM];
    444     cgels_(&trans, &m, &n, &nrhs, (complex<r_4> *)a.Data(), &lda,
     534    cgels(&trans, &m, &n, &nrhs, (complex<r_4> *)a.Data(), &lda,
    445535           (complex<r_4> *)b.Data(), &ldb, (complex<r_4> *)work, &lwork, &info);
    446536  } else if (typeid(T) == typeid(complex<r_8>) )  {
    447     zgels_(&trans, &m, &n, &nrhs, (complex<r_8> *)a.Data(), &lda,
     537    zgels(&trans, &m, &n, &nrhs, (complex<r_8> *)a.Data(), &lda,
    448538           (complex<r_8> *)b.Data(), &ldb, (complex<r_8> *)wkget, &lwork, &info);
    449539    lwork = type2i4(&wkget[0],8); work = new T[lwork  +GARDMEM];
    450     zgels_(&trans, &m, &n, &nrhs, (complex<r_8> *)a.Data(), &lda,
     540    zgels(&trans, &m, &n, &nrhs, (complex<r_8> *)a.Data(), &lda,
    451541           (complex<r_8> *)b.Data(), &ldb, (complex<r_8> *)work, &lwork, &info);
    452542  } else {
     
    554644    r_4 srcond = rcond;
    555645    iwork = new int_4[3*minmn*nlvl+11*minmn  +GARDMEM];
    556     sgelsd_(&m,&n,&nrhs,(r_4*)a.Data(),&lda,
     646    sgelsd(&m,&n,&nrhs,(r_4*)a.Data(),&lda,
    557647           (r_4*)b.Data(),&ldb,(r_4*)sloc,&srcond,&rank,
    558648           (r_4*)wkget,&lwork,(int_4*)iwork,&info);
    559649    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    560     sgelsd_(&m,&n,&nrhs,(r_4*)a.Data(),&lda,
     650    sgelsd(&m,&n,&nrhs,(r_4*)a.Data(),&lda,
    561651           (r_4*)b.Data(),&ldb,(r_4*)sloc,&srcond,&rank,
    562652           (r_4*)work,&lwork,(int_4*)iwork,&info);
     
    565655  } else if(typeid(T) == typeid(r_8) )  {
    566656    iwork = new int_4[3*minmn*nlvl+11*minmn  +GARDMEM];
    567     dgelsd_(&m,&n,&nrhs,(r_8*)a.Data(),&lda,
     657    dgelsd(&m,&n,&nrhs,(r_8*)a.Data(),&lda,
    568658           (r_8*)b.Data(),&ldb,(r_8*)s.Data(),&rcond,&rank,
    569659           (r_8*)wkget,&lwork,(int_4*)iwork,&info);
    570660    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    571     dgelsd_(&m,&n,&nrhs,(r_8*)a.Data(),&lda,
     661    dgelsd(&m,&n,&nrhs,(r_8*)a.Data(),&lda,
    572662           (r_8*)b.Data(),&ldb,(r_8*)s.Data(),&rcond,&rank,
    573663           (r_8*)work,&lwork,(int_4*)iwork,&info);
     
    581671    r_4* sloc = new r_4[minmn];
    582672    r_4 srcond = rcond;
    583     cgelsd_(&m,&n,&nrhs,(complex<r_4>*)a.Data(),&lda,
     673    cgelsd(&m,&n,&nrhs,(complex<r_4>*)a.Data(),&lda,
    584674           (complex<r_4>*)b.Data(),&ldb,(r_4*)sloc,&srcond,&rank,
    585675           (complex<r_4>*)wkget,&lwork,(r_4*)rwork,(int_4*)iwork,&info);
    586676    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    587     cgelsd_(&m,&n,&nrhs,(complex<r_4>*)a.Data(),&lda,
     677    cgelsd(&m,&n,&nrhs,(complex<r_4>*)a.Data(),&lda,
    588678           (complex<r_4>*)b.Data(),&ldb,(r_4*)sloc,&srcond,&rank,
    589679           (complex<r_4>*)work,&lwork,(r_4*)rwork,(int_4*)iwork,&info);
     
    598688    r_8* rwork = new r_8[lrwork +GARDMEM];
    599689    iwork = new int_4[3*minmn*nlvl+11*minmn  +GARDMEM];
    600     zgelsd_(&m,&n,&nrhs,(complex<r_8>*)a.Data(),&lda,
     690    zgelsd(&m,&n,&nrhs,(complex<r_8>*)a.Data(),&lda,
    601691           (complex<r_8>*)b.Data(),&ldb,(r_8*)s.Data(),&rcond,&rank,
    602692           (complex<r_8>*)wkget,&lwork,(r_8*)rwork,(int_4*)iwork,&info);
    603693    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    604     zgelsd_(&m,&n,&nrhs,(complex<r_8>*)a.Data(),&lda,
     694    zgelsd(&m,&n,&nrhs,(complex<r_8>*)a.Data(),&lda,
    605695           (complex<r_8>*)b.Data(),&ldb,(r_8*)s.Data(),&rcond,&rank,
    606696           (complex<r_8>*)work,&lwork,(r_8*)rwork,(int_4*)iwork,&info);
     
    726816
    727817  if (typeid(T) == typeid(r_4) ) {
    728     sgesvd_(&jobu, &jobvt, &m, &n, (r_4 *)a.Data(), &lda,
     818    sgesvd(&jobu, &jobvt, &m, &n, (r_4 *)a.Data(), &lda,
    729819            (r_4 *)s.Data(), (r_4 *) up->Data(), &ldu, (r_4 *)vtp->Data(), &ldvt,
    730820            (r_4 *)wkget, &lwork, &info);
    731821    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    732     sgesvd_(&jobu, &jobvt, &m, &n, (r_4 *)a.Data(), &lda,
     822    sgesvd(&jobu, &jobvt, &m, &n, (r_4 *)a.Data(), &lda,
    733823            (r_4 *)s.Data(), (r_4 *) up->Data(), &ldu, (r_4 *)vtp->Data(), &ldvt,
    734824            (r_4 *)work, &lwork, &info);
    735825  } else if (typeid(T) == typeid(r_8) ) {
    736     dgesvd_(&jobu, &jobvt, &m, &n, (r_8 *)a.Data(), &lda,
     826    dgesvd(&jobu, &jobvt, &m, &n, (r_8 *)a.Data(), &lda,
    737827            (r_8 *)s.Data(), (r_8 *) up->Data(), &ldu, (r_8 *)vtp->Data(), &ldvt,
    738828            (r_8 *)wkget, &lwork, &info);
    739829    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    740     dgesvd_(&jobu, &jobvt, &m, &n, (r_8 *)a.Data(), &lda,
     830    dgesvd(&jobu, &jobvt, &m, &n, (r_8 *)a.Data(), &lda,
    741831            (r_8 *)s.Data(), (r_8 *) up->Data(), &ldu, (r_8 *)vtp->Data(), &ldvt,
    742832            (r_8 *)work, &lwork, &info);
     
    744834    r_4 * rwork = new r_4[5*minmn +GARDMEM];
    745835    r_4 * sloc  = new r_4[minmn];
    746     cgesvd_(&jobu, &jobvt, &m, &n, (complex<r_4> *)a.Data(), &lda,
     836    cgesvd(&jobu, &jobvt, &m, &n, (complex<r_4> *)a.Data(), &lda,
    747837            (r_4 *)sloc, (complex<r_4> *) up->Data(), &ldu,
    748838            (complex<r_4> *)vtp->Data(), &ldvt,
    749839            (complex<r_4> *)wkget, &lwork, (r_4 *)rwork, &info);
    750840    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    751     cgesvd_(&jobu, &jobvt, &m, &n, (complex<r_4> *)a.Data(), &lda,
     841    cgesvd(&jobu, &jobvt, &m, &n, (complex<r_4> *)a.Data(), &lda,
    752842            (r_4 *)sloc, (complex<r_4> *) up->Data(), &ldu,
    753843            (complex<r_4> *)vtp->Data(), &ldvt,
     
    758848    r_8 * rwork = new r_8[5*minmn +GARDMEM];
    759849    r_8 * sloc  = new r_8[minmn];
    760     zgesvd_(&jobu, &jobvt, &m, &n, (complex<r_8> *)a.Data(), &lda,
     850    zgesvd(&jobu, &jobvt, &m, &n, (complex<r_8> *)a.Data(), &lda,
    761851            (r_8 *)sloc, (complex<r_8> *) up->Data(), &ldu,
    762852            (complex<r_8> *)vtp->Data(), &ldvt,
    763853            (complex<r_8> *)wkget, &lwork, (r_8 *)rwork, &info);
    764854    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    765     zgesvd_(&jobu, &jobvt, &m, &n, (complex<r_8> *)a.Data(), &lda,
     855    zgesvd(&jobu, &jobvt, &m, &n, (complex<r_8> *)a.Data(), &lda,
    766856            (r_8 *)sloc, (complex<r_8> *) up->Data(), &ldu,
    767857            (complex<r_8> *)vtp->Data(), &ldvt,
     
    818908    r_4* sloc = new r_4[minmn];
    819909    iwork = new int_4[8*minmn +GARDMEM];
    820     sgesdd_(&jobz,&m,&n,(r_4*)a.Data(),&lda,
     910    sgesdd(&jobz,&m,&n,(r_4*)a.Data(),&lda,
    821911           (r_4*)sloc,(r_4*)u.Data(),&ldu,(r_4*)vt.Data(),&ldvt,
    822912           (r_4*)wkget,&lwork,(int_4*)iwork,&info);
    823913    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    824     sgesdd_(&jobz,&m,&n,(r_4*)a.Data(),&lda,
     914    sgesdd(&jobz,&m,&n,(r_4*)a.Data(),&lda,
    825915           (r_4*)sloc,(r_4*)u.Data(),&ldu,(r_4*)vt.Data(),&ldvt,
    826916           (r_4*)work,&lwork,(int_4*)iwork,&info);
     
    829919  } else if(typeid(T) == typeid(r_8) ) {
    830920    iwork = new int_4[8*minmn +GARDMEM];
    831     dgesdd_(&jobz,&m,&n,(r_8*)a.Data(),&lda,
     921    dgesdd(&jobz,&m,&n,(r_8*)a.Data(),&lda,
    832922           (r_8*)s.Data(),(r_8*)u.Data(),&ldu,(r_8*)vt.Data(),&ldvt,
    833923           (r_8*)wkget,&lwork,(int_4*)iwork,&info);
    834924    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    835     dgesdd_(&jobz,&m,&n,(r_8*)a.Data(),&lda,
     925    dgesdd(&jobz,&m,&n,(r_8*)a.Data(),&lda,
    836926           (r_8*)s.Data(),(r_8*)u.Data(),&ldu,(r_8*)vt.Data(),&ldvt,
    837927           (r_8*)work,&lwork,(int_4*)iwork,&info);
     
    840930    r_4* rwork = new r_4[5*minmn*minmn+5*minmn +GARDMEM];
    841931    iwork = new int_4[8*minmn +GARDMEM];
    842     cgesdd_(&jobz,&m,&n,(complex<r_4>*)a.Data(),&lda,
     932    cgesdd(&jobz,&m,&n,(complex<r_4>*)a.Data(),&lda,
    843933           (r_4*)sloc,(complex<r_4>*)u.Data(),&ldu,(complex<r_4>*)vt.Data(),&ldvt,
    844934           (complex<r_4>*)wkget,&lwork,(r_4*)rwork,(int_4*)iwork,&info);
    845935    lwork = type2i4(&wkget[0],4); work = new T[lwork +GARDMEM];
    846     cgesdd_(&jobz,&m,&n,(complex<r_4>*)a.Data(),&lda,
     936    cgesdd(&jobz,&m,&n,(complex<r_4>*)a.Data(),&lda,
    847937           (r_4*)sloc,(complex<r_4>*)u.Data(),&ldu,(complex<r_4>*)vt.Data(),&ldvt,
    848938           (complex<r_4>*)work,&lwork,(r_4*)rwork,(int_4*)iwork,&info);
     
    852942    r_8* rwork = new r_8[5*minmn*minmn+5*minmn +GARDMEM];
    853943    iwork = new int_4[8*minmn +GARDMEM];
    854     zgesdd_(&jobz,&m,&n,(complex<r_8>*)a.Data(),&lda,
     944    zgesdd(&jobz,&m,&n,(complex<r_8>*)a.Data(),&lda,
    855945           (r_8*)s.Data(),(complex<r_8>*)u.Data(),&ldu,(complex<r_8>*)vt.Data(),&ldvt,
    856946           (complex<r_8>*)wkget,&lwork,(r_8*)rwork,(int_4*)iwork,&info);
    857947    lwork = type2i4(&wkget[0],8); work = new T[lwork +GARDMEM];
    858     zgesdd_(&jobz,&m,&n,(complex<r_8>*)a.Data(),&lda,
     948    zgesdd(&jobz,&m,&n,(complex<r_8>*)a.Data(),&lda,
    859949           (r_8*)s.Data(),(complex<r_8>*)u.Data(),&ldu,(complex<r_8>*)vt.Data(),&ldvt,
    860950           (complex<r_8>*)work,&lwork,(r_8*)rwork,(int_4*)iwork,&info);
     
    909999  if (typeid(T) == typeid(r_4) ) {
    9101000    r_4* w = new r_4[n];
    911     ssyev_(&jobz,&uplo,&n,(r_4 *)a.Data(),&lda,(r_4 *)w,(r_4 *)wkget,&lwork,&info);
     1001    ssyev(&jobz,&uplo,&n,(r_4 *)a.Data(),&lda,(r_4 *)w,(r_4 *)wkget,&lwork,&info);
    9121002    lwork = type2i4(&wkget[0],4); /* 3*n-1;*/ work = new T[lwork  +GARDMEM];
    913     ssyev_(&jobz,&uplo,&n,(r_4 *)a.Data(),&lda,(r_4 *)w,(r_4 *)work,&lwork,&info);
     1003    ssyev(&jobz,&uplo,&n,(r_4 *)a.Data(),&lda,(r_4 *)w,(r_4 *)work,&lwork,&info);
    9141004    if(info==0) for(int i=0;i<n;i++) b(i) = w[i];
    9151005    delete [] w;
    9161006  } else if (typeid(T) == typeid(r_8) )  {
    9171007    r_8* w = new r_8[n];
    918     dsyev_(&jobz,&uplo,&n,(r_8 *)a.Data(),&lda,(r_8 *)w,(r_8 *)wkget,&lwork,&info);
     1008    dsyev(&jobz,&uplo,&n,(r_8 *)a.Data(),&lda,(r_8 *)w,(r_8 *)wkget,&lwork,&info);
    9191009    lwork = type2i4(&wkget[0],8); /* 3*n-1;*/ work = new T[lwork  +GARDMEM];
    920     dsyev_(&jobz,&uplo,&n,(r_8 *)a.Data(),&lda,(r_8 *)w,(r_8 *)work,&lwork,&info);
     1010    dsyev(&jobz,&uplo,&n,(r_8 *)a.Data(),&lda,(r_8 *)w,(r_8 *)work,&lwork,&info);
    9211011    if(info==0) for(int i=0;i<n;i++) b(i) = w[i];
    9221012    delete [] w;
    9231013  } else if (typeid(T) == typeid(complex<r_4>) )  {
    9241014    r_4* rwork = new r_4[3*n-2  +GARDMEM]; r_4* w = new r_4[n];
    925     cheev_(&jobz,&uplo,&n,(complex<r_4> *)a.Data(),&lda,(r_4 *)w
     1015    cheev(&jobz,&uplo,&n,(complex<r_4> *)a.Data(),&lda,(r_4 *)w
    9261016          ,(complex<r_4> *)wkget,&lwork,(r_4 *)rwork,&info);
    9271017    lwork = type2i4(&wkget[0],4); /* 2*n-1;*/ work = new T[lwork  +GARDMEM];
    928     cheev_(&jobz,&uplo,&n,(complex<r_4> *)a.Data(),&lda,(r_4 *)w
     1018    cheev(&jobz,&uplo,&n,(complex<r_4> *)a.Data(),&lda,(r_4 *)w
    9291019          ,(complex<r_4> *)work,&lwork,(r_4 *)rwork,&info);
    9301020    if(info==0) for(int i=0;i<n;i++) b(i) = w[i];
     
    9321022  } else if (typeid(T) == typeid(complex<r_8>) )  {
    9331023    r_8* rwork = new r_8[3*n-2  +GARDMEM]; r_8* w = new r_8[n];
    934     zheev_(&jobz,&uplo,&n,(complex<r_8> *)a.Data(),&lda,(r_8 *)w
     1024    zheev(&jobz,&uplo,&n,(complex<r_8> *)a.Data(),&lda,(r_8 *)w
    9351025          ,(complex<r_8> *)wkget,&lwork,(r_8 *)rwork,&info);
    9361026    lwork = type2i4(&wkget[0],8); /* 2*n-1;*/ work = new T[lwork  +GARDMEM];
    937     zheev_(&jobz,&uplo,&n,(complex<r_8> *)a.Data(),&lda,(r_8 *)w
     1027    zheev(&jobz,&uplo,&n,(complex<r_8> *)a.Data(),&lda,(r_8 *)w
    9381028          ,(complex<r_8> *)work,&lwork,(r_8 *)rwork,&info);
    9391029    if(info==0) for(int i=0;i<n;i++) b(i) = w[i];
     
    10041094  if (typeid(T) == typeid(r_4) ) {
    10051095    r_4* wr = new r_4[n]; r_4* wi = new r_4[n]; r_4* vl = NULL;
    1006     sgeev_(&jobvl,&jobvr,&n,(r_4 *)a.Data(),&lda,(r_4 *)wr,(r_4 *)wi,
     1096    sgeev(&jobvl,&jobvr,&n,(r_4 *)a.Data(),&lda,(r_4 *)wr,(r_4 *)wi,
    10071097           (r_4 *)vl,&ldvl,(r_4 *)evec.Data(),&ldvr,
    10081098           (r_4 *)wkget,&lwork,&info);
    10091099    lwork = type2i4(&wkget[0],4); /* 4*n;*/ work = new T[lwork  +GARDMEM];
    1010     sgeev_(&jobvl,&jobvr,&n,(r_4 *)a.Data(),&lda,(r_4 *)wr,(r_4 *)wi,
     1100    sgeev(&jobvl,&jobvr,&n,(r_4 *)a.Data(),&lda,(r_4 *)wr,(r_4 *)wi,
    10111101           (r_4 *)vl,&ldvl,(r_4 *)evec.Data(),&ldvr,
    10121102           (r_4 *)work,&lwork,&info);
     
    10151105  } else if (typeid(T) == typeid(r_8) )  {
    10161106    r_8* wr = new r_8[n]; r_8* wi = new r_8[n]; r_8* vl = NULL;
    1017     dgeev_(&jobvl,&jobvr,&n,(r_8 *)a.Data(),&lda,(r_8 *)wr,(r_8 *)wi,
     1107    dgeev(&jobvl,&jobvr,&n,(r_8 *)a.Data(),&lda,(r_8 *)wr,(r_8 *)wi,
    10181108           (r_8 *)vl,&ldvl,(r_8 *)evec.Data(),&ldvr,
    10191109           (r_8 *)wkget,&lwork,&info);
    10201110    lwork = type2i4(&wkget[0],8); /* 4*n;*/ work = new T[lwork  +GARDMEM];
    1021     dgeev_(&jobvl,&jobvr,&n,(r_8 *)a.Data(),&lda,(r_8 *)wr,(r_8 *)wi,
     1111    dgeev(&jobvl,&jobvr,&n,(r_8 *)a.Data(),&lda,(r_8 *)wr,(r_8 *)wi,
    10221112           (r_8 *)vl,&ldvl,(r_8 *)evec.Data(),&ldvr,
    10231113           (r_8 *)work,&lwork,&info);
     
    10261116  } else if (typeid(T) == typeid(complex<r_4>) )  {
    10271117    r_4* rwork = new r_4[2*n  +GARDMEM]; r_4* vl = NULL; TVector< complex<r_4> > w(n);
    1028     cgeev_(&jobvl,&jobvr,&n,(complex<r_4> *)a.Data(),&lda,(complex<r_4> *)w.Data(),
     1118    cgeev(&jobvl,&jobvr,&n,(complex<r_4> *)a.Data(),&lda,(complex<r_4> *)w.Data(),
    10291119           (complex<r_4> *)vl,&ldvl,(complex<r_4> *)evec.Data(),&ldvr,
    10301120           (complex<r_4> *)wkget,&lwork,(r_4 *)rwork,&info);
    10311121    lwork = type2i4(&wkget[0],4); /* 2*n;*/ work = new T[lwork  +GARDMEM];
    1032     cgeev_(&jobvl,&jobvr,&n,(complex<r_4> *)a.Data(),&lda,(complex<r_4> *)w.Data(),
     1122    cgeev(&jobvl,&jobvr,&n,(complex<r_4> *)a.Data(),&lda,(complex<r_4> *)w.Data(),
    10331123           (complex<r_4> *)vl,&ldvl,(complex<r_4> *)evec.Data(),&ldvr,
    10341124           (complex<r_4> *)work,&lwork,(r_4 *)rwork,&info);
     
    10371127  } else if (typeid(T) == typeid(complex<r_8>) )  {
    10381128    r_8* rwork = new r_8[2*n  +GARDMEM]; r_8* vl = NULL;
    1039     zgeev_(&jobvl,&jobvr,&n,(complex<r_8> *)a.Data(),&lda,(complex<r_8> *)eval.Data(),
     1129    zgeev(&jobvl,&jobvr,&n,(complex<r_8> *)a.Data(),&lda,(complex<r_8> *)eval.Data(),
    10401130           (complex<r_8> *)vl,&ldvl,(complex<r_8> *)evec.Data(),&ldvr,
    10411131           (complex<r_8> *)wkget,&lwork,(r_8 *)rwork,&info);
    10421132    lwork = type2i4(&wkget[0],8); /* 2*n;*/ work = new T[lwork  +GARDMEM];
    1043     zgeev_(&jobvl,&jobvr,&n,(complex<r_8> *)a.Data(),&lda,(complex<r_8> *)eval.Data(),
     1133    zgeev(&jobvl,&jobvr,&n,(complex<r_8> *)a.Data(),&lda,(complex<r_8> *)eval.Data(),
    10441134           (complex<r_8> *)vl,&ldvl,(complex<r_8> *)evec.Data(),&ldvr,
    10451135           (complex<r_8> *)work,&lwork,(r_8 *)rwork,&info);
     
    10681158
    10691159#if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
     1160namespace SOPHYA {
    10701161template class LapackServer<r_4>;
    10711162template class LapackServer<r_8>;
    10721163template class LapackServer< complex<r_4> >;
    10731164template class LapackServer< complex<r_8> >;
     1165}
    10741166#endif
    10751167
Note: See TracChangeset for help on using the changeset viewer.