Changeset b859805f in OpenModelica


Ignore:
Timestamp:
2019-09-25T11:31:20+02:00 (5 years ago)
Author:
Julien Schueller <schueller@…>
Parents:
77fc13e9
git-author:
Julien Schueller <schueller@…> (09/25/19 11:31:17)
git-committer:
Julien Schueller <schueller@…> (09/25/19 11:31:20)
Message:

Drop deprecated LAPACK apis

dgelsx, dgegv, dgeqpf are deprecated since lapack 3.1.1 (2007), remove them

they were also dropped in MSL:
https://github.com/modelica/ModelicaStandardLibrary/pull/2857

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OMCompiler/Compiler/runtime/lapackimpl.c

    r83be5f2b rb859805f  
    356356    void **outWORK, int *INFO)
    357357{
    358 #ifndef NO_LAPACK
    359   integer n, lda, ldb, ldvl, ldvr, lwork, info = 0;
    360   double *a, *b, *work, *alphar, *alphai, *beta, *vl, *vr;
    361 
    362   n = N;
    363   lda = LDA;
    364   ldb = LDB;
    365   ldvl = LDVL;
    366   ldvr = LDVR;
    367   lwork = LWORK;
    368 
    369   a = alloc_real_matrix(lda, n, A);
    370   b = alloc_real_matrix(ldb, n, B);
    371   alphar = alloc_zeroed_real_vector(n);
    372   alphai = alloc_zeroed_real_vector(n);
    373   beta = alloc_zeroed_real_vector(n);
    374   vl = alloc_zeroed_real_matrix(ldvl, n);
    375   vr = alloc_zeroed_real_matrix(ldvl, n);
    376   work = alloc_real_vector(lwork, inWORK);
    377 
    378   dgegv_(&*jobvl, &*jobvr, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl,
    379     &ldvl, vr, &ldvr, work, &lwork, &info);
    380 
    381   *ALPHAR = mk_rml_real_vector(n, alphar);
    382   *ALPHAI = mk_rml_real_vector(n, alphai);
    383   *BETA = mk_rml_real_vector(n, beta);
    384   *VL = mk_rml_real_matrix(ldvl, n, vl);
    385   *VR = mk_rml_real_matrix(ldvl, n, vr);
    386   *outWORK = mk_rml_real_vector(lwork, work);
    387   *INFO = info;
    388 
    389   free(a);
    390   free(b);
    391   free(alphar);
    392   free(alphai);
    393   free(beta);
    394   free(vl);
    395   free(vr);
    396   free(work);
    397 #else
    398   MMC_THROW();
    399 #endif
     358  MMC_THROW();
    400359}
    401360
     
    438397    void **outA, void **outB, void **outJPVT, int *RANK, int *INFO)
    439398{
    440 #ifndef NO_LAPACK
    441   integer m, n, nrhs, lda, ldb, rank = 0, info = 0, lwork;
    442   double *a, *b, *work;
    443   integer *jpvt;
    444 
    445   m = M;
    446   n = N;
    447   nrhs = NRHS;
    448   lda = LDA;
    449   ldb = LDB;
    450   lwork = (integer)fmax(fmin(M, N) + 3*N, 2*fmin(M, N) + nrhs);
    451 
    452   a = alloc_real_matrix(lda, n, inA);
    453   b = alloc_real_matrix(ldb, nrhs, inB);
    454   work = alloc_real_vector(lwork, WORK);
    455   jpvt = alloc_int_vector(n, inJPVT);
    456 
    457   dgelsx_(&m, &n, &nrhs, a, &lda, b, &ldb, jpvt, &rcond, &rank, work, &info);
    458 
    459   *outA = mk_rml_real_matrix(lda, n, a);
    460   *outB = mk_rml_real_matrix(lda, nrhs, b);
    461   *outJPVT = mk_rml_int_vector(n, jpvt);
    462   *RANK = rank;
    463   *INFO = info;
    464 
    465   free(a);
    466   free(b);
    467   free(work);
    468   free(jpvt);
    469 #else
    470   MMC_THROW();
    471 #endif
     399  MMC_THROW();
    472400}
    473401
     
    793721    void *WORK, void **outA, void **outJPVT, void **TAU, int *INFO)
    794722{
    795 #ifndef NO_LAPACK
    796   integer m, n, lda, lwork, ldtau, info = 0;
    797   double *a, *tau, *work;
    798   integer *jpvt;
    799 
    800   m = M;
    801   n = N;
    802   lda = LDA;
    803   lwork = 3 * n;
    804   ldtau = (m < n ? m : n);
    805 
    806   a = alloc_real_matrix(lda, n, inA);
    807   jpvt = alloc_int_vector(n, inJPVT);
    808   tau = alloc_zeroed_real_vector(ldtau);
    809   work = alloc_real_vector(lwork, WORK);
    810 
    811   dgeqpf_(&m, &n, a, &lda, jpvt, tau, work, &info);
    812 
    813   *outA = mk_rml_real_matrix(lda, n, a);
    814   *outJPVT = mk_rml_int_vector(n, jpvt);
    815   *TAU = mk_rml_real_vector(ldtau, tau);
    816   *INFO = info;
    817 
    818   free(a);
    819   free(jpvt);
    820   free(tau);
    821   free(work);
    822 #else
    823   MMC_THROW();
    824 #endif
     723  MMC_THROW();
    825724}
    826725
Note: See TracChangeset for help on using the changeset viewer.