#!/usr/bin/env perl

# Changelog
# 2017/09/03 staticfloat
# Added zsymv and csymv into @lapackobjs2 so they are properly renamed
#
# 2017/07/01 Saar
# removed zsymv_ and csymv_ from @blasobs, because these functions
# are now in lapack-3.7.0
# added blas_thread_shutdown_
# added Cblas_cgemm3m and Cblas_zgemm3m
# added somatcopy_, simatcopy_ ...
# added new functions from lapack-3.7.0
# added LAPACKE deprecated objs from lapack-3.7.0
#
# 2017/08/01 Saar
# removed blas_thread_shutdown_
#
@blasobjsc = (
    caxpy,caxpby,ccopy,cdotc,cdotu,cgbmv,cgemm,cgemv,cgerc,cgeru,
    chbmv,chemm,chemv,cher2,cher2k,cher,cherk,scabs1,scamax,
    chpmv,chpr2,chpr,crotg,cscal,csrot,csscal,cswap,scamin,scasum,scnrm2,
    csymm,csyr2k,csyrk,ctbmv,ctbsv,ctpmv,ctpsv,ctrmm,ctrmv,ctrsm,
    ctrsv,icamax,icamin,cimatcopy,comatcopy,cgeadd,scsum,cgemmt);
    
@blasobjsd = (
    damax,damin,dasum,daxpy,daxpby,dcabs1,dcopy,ddot,dgbmv,dgemm,
    dgemv,dger,dmax,dmin,dnrm2,drot,drotg,drotm,drotmg,dsbmv,
    dscal,dsdot,dspmv,dspr2,dimatcopy,domatcopy,
    dspr,dswap,dsymm,dsymv,dsyr2,dsyr2k,dsyr,dsyrk,dtbmv,dtbsv,
    dtpmv,dtpsv,dtrmm,dtrmv,dtrsm,dtrsv,
        idamax,idamin,idmax,idmin,dgeadd,dsum,dgemmt);
    
@blasobjss = (
    isamax,isamin,ismax,ismin,
    samax,samin,sasum,saxpy, saxpby, 
    scopy,sdot,sdsdot,sgbmv,sgemm,sgemv,sger,
    smax,smin,snrm2,simatcopy,somatcopy,
    srot,srotg,srotm,srotmg,ssbmv,sscal,sspmv,sspr2,sspr,sswap,
    ssymm,ssymv,ssyr2,ssyr2k,ssyr,ssyrk,stbmv,stbsv,stpmv,stpsv,
    strmm,strmv,strsm,strsv, sgeadd,ssum,sgemmt);
     
@blasobjsz = (
    izamax,izamin,,
    zaxpy,zaxpby,zcopy,zdotc,zdotu,zdrot,
    zdscal,zgbmv,zgemm,zgemv,zgerc,zgeru,
    zhbmv,zhemm,zhemv,zher2,zher2k,zher,zherk,zhpmv,zhpr2,
    zhpr,zrotg,zscal,zswap,zsymm,zsyr2k,zsyrk,ztbmv,
    ztbsv,ztpmv,ztpsv,ztrmm,ztrmv,ztrsm,ztrsv,
    zomatcopy, zimatcopy,dzamax,dzamin,dzasum,dznrm2,
    zgeadd, dzsum, zgemmt);

@blasobjs = (lsame, xerbla);
@bfblasobjs = (sbgemm, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod);
@cblasobjsc = (
    cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv,
    cblas_cgerc, cblas_cgeru, cblas_chbmv, cblas_chemm, cblas_chemv, cblas_cher2, cblas_cher2k,
    cblas_cher, cblas_cherk,  cblas_chpmv, cblas_chpr2, cblas_chpr, cblas_cscal, cblas_caxpby,
    cblas_csscal, cblas_cswap, cblas_csymm, cblas_csyr2k, cblas_csyrk, cblas_ctbmv, cblas_cgeadd,
    cblas_ctbsv, cblas_ctpmv, cblas_ctpsv, cblas_ctrmm, cblas_ctrmv, cblas_ctrsm, cblas_ctrsv, 
    cblas_scnrm2, cblas_scasum,
    cblas_icamax, cblas_icamin, cblas_icmin, cblas_icmax, cblas_scsum,cblas_cimatcopy,cblas_comatcopy
    cblas_cgemmt);
@cblasobjsd = (
    cblas_dasum, cblas_daxpy, cblas_dcopy, cblas_ddot,
    cblas_dgbmv, cblas_dgemm, cblas_dgemv, cblas_dger, cblas_dnrm2,
    cblas_drot, cblas_drotg, cblas_drotm, cblas_drotmg, cblas_dsbmv, cblas_dscal, cblas_dsdot,
    cblas_dspmv, cblas_dspr2, cblas_dspr, cblas_dswap, cblas_dsymm, cblas_dsymv, cblas_dsyr2,
    cblas_dsyr2k, cblas_dsyr, cblas_dsyrk, cblas_dtbmv, cblas_dtbsv, cblas_dtpmv, cblas_dtpsv,
    cblas_dtrmm, cblas_dtrmv, cblas_dtrsm, cblas_dtrsv, cblas_daxpby, cblas_dgeadd,
    cblas_idamax, cblas_idamin, cblas_idmin, cblas_idmax, cblas_dsum,cblas_dimatcopy,cblas_domatcopy
    cblas_dgemmt);
    
@cblasobjss = (
    cblas_sasum, cblas_saxpy, cblas_saxpby,
    cblas_scopy, cblas_sdot, cblas_sdsdot, cblas_sgbmv, cblas_sgemm,
    cblas_sgemv, cblas_sger, cblas_snrm2, cblas_srot, cblas_srotg,
    cblas_srotm, cblas_srotmg, cblas_ssbmv, cblas_sscal, cblas_sspmv, cblas_sspr2, cblas_sspr,
    cblas_sswap, cblas_ssymm, cblas_ssymv, cblas_ssyr2, cblas_ssyr2k, cblas_ssyr, cblas_ssyrk,
    cblas_stbmv, cblas_stbsv, cblas_stpmv, cblas_stpsv, cblas_strmm, cblas_strmv, cblas_strsm,
    cblas_strsv, cblas_sgeadd,
    cblas_isamax, cblas_isamin, cblas_ismin, cblas_ismax, cblas_ssum,cblas_simatcopy,cblas_somatcopy
    cblas_sgemmt);
@cblasobjsz = (
    cblas_dzasum, cblas_dznrm2, cblas_zaxpy, cblas_zcopy, cblas_zdotc, cblas_zdotu, cblas_zdscal,
    cblas_zgbmv, cblas_zgemm, cblas_zgemv, cblas_zgerc, cblas_zgeru, cblas_zhbmv, cblas_zhemm,
    cblas_zhemv, cblas_zher2, cblas_zher2k, cblas_zher, cblas_zherk, cblas_zhpmv, cblas_zhpr2,
    cblas_zhpr, cblas_zscal, cblas_zswap, cblas_zsymm, cblas_zsyr2k, cblas_zsyrk,
    cblas_ztbmv, cblas_ztbsv, cblas_ztpmv, cblas_ztpsv, cblas_ztrmm, cblas_ztrmv, cblas_ztrsm,
    cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub,
    cblas_zaxpby, cblas_zgeadd,
    cblas_izamax, cblas_izamin, cblas_izmin, cblas_izmax, cblas_dzsum,cblas_zimatcopy,cblas_zomatcopy
    cblas_zgemmt);

@cblasobjs = (  cblas_xerbla );

@bfcblasobjs = (cblas_sbgemm, cblas_sbgemv, cblas_sbdot, cblas_sbstobf16, cblas_sbdtobf16, cblas_sbf16tos, cblas_dbf16tod);

@exblasobjs = (
    qamax,qamin,qasum,qaxpy,qcabs1,qcopy,qdot,qgbmv,qgemm,
    qgemv,qger,qmax,qmin,
    qnrm2,
    qsbmv,qscal,qspmv,qspr2,
    qspr,qswap,qsymm,qsymv,qsyr2,qsyr2k,qsyr,qsyrk,qtbmv,qtbsv,
    qtpmv,qtpsv,qtrmm,qtrmv,qtrsm,qtrsv,
    qxamax,qxamin,qxasum,qxnrm2,
    xaxpy,xcopy,xdotc,xdotu,
    xqscal,xgbmv,xgemm,xgemv,xgerc,xgeru,
    xhbmv,xhemm,xhemv,xher2,xher2k,xher,xherk,xhpmv,xhpr2,
    xhpr,xscal,xswap,xsymm,xsyr2k,xsyrk,xtbmv,
    xtbsv,xtpmv,xtpsv,xtrmm,xtrmv,xtrsm,xtrsv,
#	     qrot,qrotg,qrotm,qrotmg,
#	     xdrot,xrotg,
);

    @gemm3mobjs=();

    @cblasgemm3mobjs=();

@gemm3mobjsc = (
    cgemm3m,
);
@gemm3mobjsz = (    
    zgemm3m
);

@cblasgemm3mobjsc = (
    cblas_cgemm3m
);
@cblasgemm3mobjsz = (
    cblas_zgemm3m
);




#both underscore and no underscore
@misc_common_objs = (
    openblas_get_parallel,
    openblas_get_num_procs,
    openblas_set_num_threads,
    openblas_get_num_threads,
);

@misc_no_underscore_objs = (
    goto_set_num_threads,
    openblas_get_config,
    openblas_get_corename,
);

@misc_underscore_objs = (
);

@lapackobjss = (
    # These routines are provided by OpenBLAS.
    sgesv, 
    sgetf2,
    sgetrf,
    slaswp,
    sgetrs,
    slauu2,
    slauum,
    spotf2,
    spotrf,
    strti2,
    strtri,
    spotri,
);

@lapackobjsd = (
 dgesv,  
 dgetf2, 
 dgetrf, 
 dlaswp, 
 dgetrs, 
 dlauu2, 
 dlauum, 
 dpotf2, 
 dpotrf, 
 dtrti2, 
 dtrtri, 
 dpotri, 
);

@lapackobjsc = (
cgesv,  
cgetf2, 
cgetrf, 
claswp, 
cgetrs, 
clauu2, 
clauum, 
cpotf2, 
cpotrf, 
ctrti2, 
ctrtri, 
cpotri, 
);

@lapackobjsz = (
zgesv,
zgetf2,
zgetrf,
zlaswp,
zgetrs,
zlauu2,
zlauum,
zpotf2,
zpotrf,
ztrti2,
ztrtri,
zpotri,
);


@lapackobjs2 = (
    # These routines are provided by LAPACK (reference implementation).
    #
    # This list is prepared by copying all routines listed in
    # `lapack-3.4.1/SRC/Makefile` and replacing the '.o' suffix with a comma.
    # Thereafter the following routines should be removed:
    # - those provided by OpenBLAS (see @lapackobjs)
    # - extra precision routines (see @lapack_extendedprecision_objs)
    # Each of these have been marked individually with "already provided" or "excluded".

    # ALLAUX  -- Auxiliary routines called from all precisions
    # already provided by @blasobjs: xerbla, lsame
    ilaenv, ieeeck, lsamen,  iparmq,
    ilaprec, ilatrans, ilauplo, iladiag,
    ilaver, slamch, slamc3,
);

@lapackobjs2sc = (    
    # SCLAUX  -- Auxiliary routines called from both REAL and COMPLEX.
    # excluded: second_$(TIMER)
    sbdsdc,
    sbdsqr, sdisna, slabad, slacpy, sladiv, slae2,  slaebz,
    slaed0, slaed1, slaed2, slaed3, slaed4, slaed5, slaed6,
    slaed7, slaed8, slaed9, slaeda, slaev2, slagtf,
    slagts, slamrg, slanst,
    slapy2, slapy3, slarnv,
    slarra, slarrb, slarrc, slarrd, slarre, slarrf, slarrj,
    slarrk, slarrr, slaneg,
    slartg, slaruv, slas2,  slascl,
    slasd0, slasd1, slasd2, slasd3, slasd4, slasd5, slasd6,
    slasd7, slasd8, slasda, slasdq, slasdt,
    slaset, slasq1, slasq2, slasq3, slasq4, slasq5, slasq6,
    slasr,  slasrt, slassq, slasv2, spttrf, sstebz, sstedc,
    ssteqr, ssterf, slaisnan, sisnan,
    slartgp, slartgs,
);

@lapackobjs2dz = (
    # DZLAUX  -- Auxiliary routines called from both DOUBLE and COMPLEX*16.
    # excluded: dsecnd_$(TIMER)
    dbdsdc,
    dbdsqr, ddisna, dlabad, dlacpy, dladiv, dlae2,  dlaebz,
    dlaed0, dlaed1, dlaed2, dlaed3, dlaed4, dlaed5, dlaed6,
    dlaed7, dlaed8, dlaed9, dlaeda, dlaev2, dlagtf,
    dlagts, dlamrg, dlanst,
    dlapy2, dlapy3, dlarnv,
    dlarra, dlarrb, dlarrc, dlarrd, dlarre, dlarrf, dlarrj,
    dlarrk, dlarrr, dlaneg,
    dlartg, dlaruv, dlas2,  dlascl,
    dlasd0, dlasd1, dlasd2, dlasd3, dlasd4, dlasd5, dlasd6,
    dlasd7, dlasd8, dlasda, dlasdq, dlasdt,
    dlaset, dlasq1, dlasq2, dlasq3, dlasq4, dlasq5, dlasq6,
    dlasr,  dlasrt, dlassq, dlasv2, dpttrf, dstebz, dstedc,
    dsteqr, dsterf, dlaisnan, disnan,
    dlartgp, dlartgs,
    dlamch, dlamc3,
);

@lapackobjs2s = (
    # SLASRC  -- Single precision real LAPACK routines
    # already provided by @lapackobjs:
    #     sgesv, sgetf2, slaswp, slauu2, slauum, spotf2, spotri, strti2, strtri
    sgbbrd, sgbcon, sgbequ, sgbrfs, sgbsv,
    sgbsvx, sgbtf2, sgbtrf, sgbtrs, sgebak, sgebal, sgebd2,
    sgebrd, sgecon, sgeequ, sgees,  sgeesx, sgeev,  sgeevx,
    sgehd2, sgehrd, sgelq2, sgelqf,
    sgels,  sgelsd, sgelss, sgelsy, sgeql2, sgeqlf,
    sgeqp3, sgeqr2, sgeqr2p, sgeqrf, sgeqrfp, sgerfs,
    sgerq2, sgerqf, sgesc2, sgesdd, sgesvd, sgesvx,
    sgetc2, sgetri,
    sggbak, sggbal, sgges,  sggesx, sggev,  sggevx,
    sggglm, sgghrd, sgglse, sggqrf,
    sggrqf, sgtcon, sgtrfs, sgtsv,
    sgtsvx, sgttrf, sgttrs, sgtts2, shgeqz,
    shsein, shseqr, slabrd, slacon, slacn2,
    slaein, slaexc, slag2,  slags2, slagtm, slagv2, slahqr,
    slahr2, slaic1, slaln2, slals0, slalsa, slalsd,
    slangb, slange, slangt, slanhs, slansb, slansp,
    slansy, slantb, slantp, slantr, slanv2,
    slapll, slapmt,
    slaqgb, slaqge, slaqp2, slaqps, slaqsb, slaqsp, slaqsy,
    slaqr0, slaqr1, slaqr2, slaqr3, slaqr4, slaqr5,
    slaqtr, slar1v, slar2v, ilaslr, ilaslc,
    slarf,  slarfb, slarfg, slarfgp, slarft, slarfx, slargv,
    slarrv, slartv,
    slarz,  slarzb, slarzt, slasy2, slasyf,
    slatbs, slatdf, slatps, slatrd, slatrs, slatrz,
    sopgtr, sopmtr, sorg2l, sorg2r,
    sorgbr, sorghr, sorgl2, sorglq, sorgql, sorgqr, sorgr2,
    sorgrq, sorgtr, sorm2l, sorm2r,
    sormbr, sormhr, sorml2, sormlq, sormql, sormqr, sormr2,
    sormr3, sormrq, sormrz, sormtr, spbcon, spbequ, spbrfs,
    spbstf, spbsv,  spbsvx,
    spbtf2, spbtrf, spbtrs, spocon, spoequ, sporfs, sposv,
    sposvx, spstrf, spstf2,
    sppcon, sppequ,
    spprfs, sppsv,  sppsvx, spptrf, spptri, spptrs, sptcon,
    spteqr, sptrfs, sptsv,  sptsvx, spttrs, sptts2, srscl,
    ssbev,  ssbevd, ssbevx, ssbgst, ssbgv,  ssbgvd, ssbgvx,
    ssbtrd, sspcon, sspev,  sspevd, sspevx, sspgst,
    sspgv,  sspgvd, sspgvx, ssprfs, sspsv,  sspsvx, ssptrd,
    ssptrf, ssptri, ssptrs, sstegr, sstein, sstev,  sstevd, sstevr,
    sstevx,
    ssycon, ssyev,  ssyevd, ssyevr, ssyevx, ssygs2,
    ssygst, ssygv,  ssygvd, ssygvx, ssyrfs, ssysv,  ssysvx,
    ssytd2, ssytf2, ssytrd, ssytrf, ssytri, ssytri2, ssytri2x,
    ssyswapr, ssytrs, ssytrs2, ssyconv,
    stbcon,
    stbrfs, stbtrs, stgevc, stgex2, stgexc, stgsen,
    stgsja, stgsna, stgsy2, stgsyl, stpcon, stprfs, stptri,
    stptrs,
    strcon, strevc, strexc, strrfs, strsen, strsna, strsyl,
    strtrs, stzrzf, sstemr,
    slansf, spftrf, spftri, spftrs, ssfrk, stfsm, stftri, stfttp,
    stfttr, stpttf, stpttr, strttf, strttp,
    sgejsv,  sgesvj,  sgsvj0,  sgsvj1,
    sgeequb, ssyequb, spoequb, sgbequb,
    sbbcsd, slapmr, sorbdb, sorbdb1, sorbdb2, sorbdb3, sorbdb4,
    sorbdb5, sorbdb6, sorcsd, sorcsd2by1,
    sgeqrt, sgeqrt2, sgeqrt3, sgemqrt,
    stpqrt, stpqrt2, stpmqrt, stprfb,
);

@lapackobjs2ds = (
    # DSLASRC -- Double-single mixed precision real routines called from
    # single, single-extra and double precision real LAPACK
    # routines (i.e. from SLASRC, SXLASRC, DLASRC).
    #
    # already provided by @lapackobjs:
    #     sgetrs, spotrf, sgetrf
    spotrs,
);

@lapackobjs2c = (
    # CLASRC  -- Single precision complex LAPACK routines
    # already provided by @blasobjs:
    # already provided by @lapackobjs:
    #     cgesv, cgetf2, claswp, clauu2, clauum, cpotf2, cpotri, ctrti2, ctrtri
    cbdsqr, cgbbrd, cgbcon, cgbequ, cgbrfs, cgbsv,  cgbsvx,
    cgbtf2, cgbtrf, cgbtrs, cgebak, cgebal, cgebd2, cgebrd,
    cgecon, cgeequ, cgees,  cgeesx, cgeev,  cgeevx,
    cgehd2, cgehrd, cgelq2, cgelqf,
    cgels,  cgelsd, cgelss, cgelsy, cgeql2, cgeqlf, cgeqp3,
    cgeqr2, cgeqr2p, cgeqrf, cgeqrfp, cgerfs,
    cgerq2, cgerqf, cgesc2, cgesdd, cgesvd,
    cgesvx, cgetc2, cgetri,
    cggbak, cggbal, cgges,  cggesx, cggev,  cggevx, cggglm,
    cgghrd, cgglse, cggqrf, cggrqf,
    cgtcon, cgtrfs, cgtsv,  cgtsvx, cgttrf, cgttrs, cgtts2, chbev,
    chbevd, chbevx, chbgst, chbgv,  chbgvd, chbgvx, chbtrd,
    checon, cheev,  cheevd, cheevr, cheevx, chegs2, chegst,
    chegv,  chegvd, chegvx, cherfs, chesv,  chesvx, chetd2,
    chetf2, chetrd,
    chetrf, chetri, chetri2, chetri2x, cheswapr,
    chetrs, chetrs2, chgeqz, chpcon, chpev,  chpevd,
    chpevx, chpgst, chpgv,  chpgvd, chpgvx, chprfs, chpsv,
    chpsvx,
    chptrd, chptrf, chptri, chptrs, chsein, chseqr, clabrd,
    clacgv, clacon, clacn2, clacp2, clacpy, clacrm, clacrt, cladiv,
    claed0, claed7, claed8,
    claein, claesy, claev2, clags2, clagtm,
    clahef, clahqr,
    clahr2, claic1, clals0, clalsa, clalsd, clangb, clange, clangt,
    clanhb, clanhe,
    clanhp, clanhs, clanht, clansb, clansp, clansy, clantb,
    clantp, clantr, clapll, clapmt, clarcm, claqgb, claqge,
    claqhb, claqhe, claqhp, claqp2, claqps, claqsb,
    claqr0, claqr1, claqr2, claqr3, claqr4, claqr5,
    claqsp, claqsy, clar1v, clar2v, ilaclr, ilaclc,
    clarf,  clarfb, clarfg, clarft, clarfgp,
    clarfx, clargv, clarnv, clarrv, clartg, clartv,
    clarz,  clarzb, clarzt, clascl, claset, clasr,  classq,
    clasyf, clatbs, clatdf, clatps, clatrd, clatrs, clatrz,
    cpbcon, cpbequ, cpbrfs, cpbstf, cpbsv,
    cpbsvx, cpbtf2, cpbtrf, cpbtrs, cpocon, cpoequ, cporfs,
    cposv,  cposvx, cpstrf, cpstf2,
    cppcon, cppequ, cpprfs, cppsv,  cppsvx, cpptrf, cpptri, cpptrs,
    cptcon, cpteqr, cptrfs, cptsv,  cptsvx, cpttrf, cpttrs, cptts2,
    crot,   cspcon, cspmv,  cspr,   csprfs, cspsv,
    cspsvx, csptrf, csptri, csptrs, csrscl, cstedc,
    cstegr, cstein, csteqr,
    csycon,
    csymv,
    csyr, csyrfs, csysv,  csysvx, csytf2, csytrf, csytri, csytri2, csytri2x,
    csyswapr, csytrs, csytrs2, csyconv,
    ctbcon, ctbrfs, ctbtrs, ctgevc, ctgex2,
    ctgexc, ctgsen, ctgsja, ctgsna, ctgsy2, ctgsyl, ctpcon,
    ctprfs, ctptri,
    ctptrs, ctrcon, ctrevc, ctrexc, ctrrfs, ctrsen, ctrsna,
    ctrsyl, ctrtrs, ctzrzf, cung2l, cung2r,
    cungbr, cunghr, cungl2, cunglq, cungql, cungqr, cungr2,
    cungrq, cungtr, cunm2l, cunm2r, cunmbr, cunmhr, cunml2,
    cunmlq, cunmql, cunmqr, cunmr2, cunmr3, cunmrq, cunmrz,
    cunmtr, cupgtr, cupmtr, icmax1, scsum1, cstemr,
    chfrk, ctfttp, clanhf, cpftrf, cpftri, cpftrs, ctfsm, ctftri,
    ctfttr, ctpttf, ctpttr, ctrttf, ctrttp,
    cgeequb, cgbequb, csyequb, cpoequb, cheequb,
    cbbcsd, clapmr, cunbdb, cunbdb1, cunbdb2, cunbdb3, cunbdb4,
    cunbdb5, cunbdb6, cuncsd, cuncsd2by1,
    cgeqrt, cgeqrt2, cgeqrt3, cgemqrt,
    ctpqrt, ctpqrt2, ctpmqrt, ctprfb,
);
@lapackobjs2zc = (
    # ZCLASRC -- Double-single mixed precision complex routines called from
    # single, single-extra and double precision complex LAPACK
    # routines (i.e. from CLASRC, CXLASRC, ZLASRC).
    #
    # already provided by @lapackobjs:
    #     cgetrs, cpotrf, cgetrf
    cpotrs,
);

@lapackobjs2d = (
    # DLASRC  -- Double precision real LAPACK routines
    # already provided by @lapackobjs:
    #     dgesv, dgetf2, dgetrs, dlaswp, dlauu2, dlauum, dpotf2, dpotrf, dpotri,
    #     dtrti2, dtrtri
    dgbbrd, dgbcon, dgbequ, dgbrfs, dgbsv,
    dgbsvx, dgbtf2, dgbtrf, dgbtrs, dgebak, dgebal, dgebd2,
    dgebrd, dgecon, dgeequ, dgees,  dgeesx, dgeev,  dgeevx,
    dgehd2, dgehrd, dgelq2, dgelqf,
    dgels,  dgelsd, dgelss, dgelsy, dgeql2, dgeqlf,
    dgeqp3, dgeqr2, dgeqr2p, dgeqrf, dgeqrfp, dgerfs,
    dgerq2, dgerqf, dgesc2, dgesdd, dgesvd, dgesvx,
    dgetc2, dgetri,
    dggbak, dggbal, dgges,  dggesx, dggev,  dggevx,
    dggglm, dgghrd, dgglse, dggqrf,
    dggrqf, dgtcon, dgtrfs, dgtsv,
    dgtsvx, dgttrf, dgttrs, dgtts2, dhgeqz,
    dhsein, dhseqr, dlabrd, dlacon, dlacn2,
    dlaein, dlaexc, dlag2,  dlags2, dlagtm, dlagv2, dlahqr,
    dlahr2, dlaic1, dlaln2, dlals0, dlalsa, dlalsd,
    dlangb, dlange, dlangt, dlanhs, dlansb, dlansp,
    dlansy, dlantb, dlantp, dlantr, dlanv2,
    dlapll, dlapmt,
    dlaqgb, dlaqge, dlaqp2, dlaqps, dlaqsb, dlaqsp, dlaqsy,
    dlaqr0, dlaqr1, dlaqr2, dlaqr3, dlaqr4, dlaqr5,
    dlaqtr, dlar1v, dlar2v, iladlr, iladlc,
    dlarf,  dlarfb, dlarfg, dlarfgp, dlarft, dlarfx,
    dlargv, dlarrv, dlartv,
    dlarz,  dlarzb, dlarzt, dlasy2, dlasyf,
    dlatbs, dlatdf, dlatps, dlatrd, dlatrs, dlatrz,
    dopgtr, dopmtr, dorg2l, dorg2r,
    dorgbr, dorghr, dorgl2, dorglq, dorgql, dorgqr, dorgr2,
    dorgrq, dorgtr, dorm2l, dorm2r,
    dormbr, dormhr, dorml2, dormlq, dormql, dormqr, dormr2,
    dormr3, dormrq, dormrz, dormtr, dpbcon, dpbequ, dpbrfs,
    dpbstf, dpbsv,  dpbsvx,
    dpbtf2, dpbtrf, dpbtrs, dpocon, dpoequ, dporfs, dposv,
    dposvx, dpotrs, dpstrf, dpstf2,
    dppcon, dppequ,
    dpprfs, dppsv,  dppsvx, dpptrf, dpptri, dpptrs, dptcon,
    dpteqr, dptrfs, dptsv,  dptsvx, dpttrs, dptts2, drscl,
    dsbev,  dsbevd, dsbevx, dsbgst, dsbgv,  dsbgvd, dsbgvx,
    dsbtrd,  dspcon, dspev,  dspevd, dspevx, dspgst,
    dspgv,  dspgvd, dspgvx, dsprfs, dspsv,  dspsvx, dsptrd,
    dsptrf, dsptri, dsptrs, dstegr, dstein, dstev,  dstevd, dstevr,
    dstevx,
    dsycon, dsyev,  dsyevd, dsyevr,
    dsyevx, dsygs2, dsygst, dsygv,  dsygvd, dsygvx, dsyrfs,
    dsysv,  dsysvx,
    dsytd2, dsytf2, dsytrd, dsytrf, dsytri, dsytri2, dsytri2x,
    dsyswapr, dsytrs, dsytrs2, dsyconv,
    dtbcon, dtbrfs, dtbtrs, dtgevc, dtgex2, dtgexc, dtgsen,
    dtgsja, dtgsna, dtgsy2, dtgsyl, dtpcon, dtprfs, dtptri,
    dtptrs,
    dtrcon, dtrevc, dtrexc, dtrrfs, dtrsen, dtrsna, dtrsyl,
    dtrtrs, dtzrzf, dstemr,
    dsgesv, dsposv, dlag2s, slag2d, dlat2s,
    dlansf, dpftrf, dpftri, dpftrs, dsfrk, dtfsm, dtftri, dtfttp,
    dtfttr, dtpttf, dtpttr, dtrttf, dtrttp,
    dgejsv,  dgesvj,  dgsvj0,  dgsvj1,
    dgeequb, dsyequb, dpoequb, dgbequb,
    dbbcsd, dlapmr, dorbdb, dorbdb1, dorbdb2, dorbdb3, dorbdb4,
    dorbdb5, dorbdb6, dorcsd, dorcsd2by1,
    dgeqrt, dgeqrt2, dgeqrt3, dgemqrt,
    dtpqrt, dtpqrt2, dtpmqrt, dtprfb,
);
@lapackobjs2z = (
    # ZLASRC  -- Double precision complex LAPACK routines
    # already provided by @blasobjs:
    # already provided by @lapackobjs:
    #     zgesv, zgetrs, zgetf2, zlaswp, zlauu2, zlauum, zpotf2, zpotrf, zpotri,
    #     ztrti2, ztrtri
    zbdsqr, zgbbrd, zgbcon, zgbequ, zgbrfs, zgbsv,  zgbsvx,
    zgbtf2, zgbtrf, zgbtrs, zgebak, zgebal, zgebd2, zgebrd,
    zgecon, zgeequ, zgees,  zgeesx, zgeev,  zgeevx,
    zgehd2, zgehrd, zgelq2, zgelqf,
    zgels,  zgelsd, zgelss, zgelsy, zgeql2, zgeqlf, zgeqp3,
    zgeqr2, zgeqr2p, zgeqrf, zgeqrfp, zgerfs, zgerq2, zgerqf,
    zgesc2, zgesdd, zgesvd, zgesvx, zgetc2,
    zgetri,
    zggbak, zggbal, zgges,  zggesx, zggev,  zggevx, zggglm,
    zgghrd, zgglse, zggqrf, zggrqf,
    zgtcon, zgtrfs, zgtsv,  zgtsvx, zgttrf, zgttrs, zgtts2, zhbev,
    zhbevd, zhbevx, zhbgst, zhbgv,  zhbgvd, zhbgvx, zhbtrd,
    zhecon, zheev,  zheevd, zheevr, zheevx, zhegs2, zhegst,
    zhegv,  zhegvd, zhegvx, zherfs, zhesv,  zhesvx, zhetd2,
    zhetf2, zhetrd,
    zhetrf, zhetri, zhetri2, zhetri2x, zheswapr,
    zhetrs, zhetrs2, zhgeqz, zhpcon, zhpev,  zhpevd,
    zhpevx, zhpgst, zhpgv,  zhpgvd, zhpgvx, zhprfs, zhpsv,
    zhpsvx,
    zhptrd, zhptrf, zhptri, zhptrs, zhsein, zhseqr, zlabrd,
    zlacgv, zlacon, zlacn2, zlacp2, zlacpy, zlacrm, zlacrt, zladiv,
    zlaed0, zlaed7, zlaed8,
    zlaein, zlaesy, zlaev2, zlags2, zlagtm,
    zlahef, zlahqr,
    zlahr2, zlaic1, zlals0, zlalsa, zlalsd, zlangb, zlange,
    zlangt, zlanhb,
    zlanhe,
    zlanhp, zlanhs, zlanht, zlansb, zlansp, zlansy, zlantb,
    zlantp, zlantr, zlapll, zlapmt, zlaqgb, zlaqge,
    zlaqhb, zlaqhe, zlaqhp, zlaqp2, zlaqps, zlaqsb,
    zlaqr0, zlaqr1, zlaqr2, zlaqr3, zlaqr4, zlaqr5,
    zlaqsp, zlaqsy, zlar1v, zlar2v, ilazlr, ilazlc,
    zlarcm, zlarf,  zlarfb,
    zlarfg, zlarft, zlarfgp,
    zlarfx, zlargv, zlarnv, zlarrv, zlartg, zlartv,
    zlarz,  zlarzb, zlarzt, zlascl, zlaset, zlasr,
    zlassq, zlasyf,
    zlatbs, zlatdf, zlatps, zlatrd, zlatrs, zlatrz,
    zpbcon, zpbequ, zpbrfs, zpbstf, zpbsv,
    zpbsvx, zpbtf2, zpbtrf, zpbtrs, zpocon, zpoequ, zporfs,
    zposv,  zposvx, zpotrs, zpstrf, zpstf2,
    zppcon, zppequ, zpprfs, zppsv,  zppsvx, zpptrf, zpptri, zpptrs,
    zptcon, zpteqr, zptrfs, zptsv,  zptsvx, zpttrf, zpttrs, zptts2,
    zrot,   zspcon, zspmv,  zspr,   zsprfs, zspsv,
    zspsvx, zsptrf, zsptri, zsptrs, zdrscl, zstedc,
    zstegr, zstein, zsteqr,
    zsycon,
    zsymv,
    zsyr, zsyrfs, zsysv,  zsysvx, zsytf2, zsytrf, zsytri, zsytri2, zsytri2x,
    zsyswapr, zsytrs, zsytrs2, zsyconv,
    ztbcon, ztbrfs, ztbtrs, ztgevc, ztgex2,
    ztgexc, ztgsen, ztgsja, ztgsna, ztgsy2, ztgsyl, ztpcon,
    ztprfs, ztptri,
    ztptrs, ztrcon, ztrevc, ztrexc, ztrrfs, ztrsen, ztrsna,
    ztrsyl, ztrtrs, ztzrzf, zung2l,
    zung2r, zungbr, zunghr, zungl2, zunglq, zungql, zungqr, zungr2,
    zungrq, zungtr, zunm2l, zunm2r, zunmbr, zunmhr, zunml2,
    zunmlq, zunmql, zunmqr, zunmr2, zunmr3, zunmrq, zunmrz,
    zunmtr, zupgtr,
    zupmtr, izmax1, dzsum1, zstemr,
    zcgesv, zcposv, zlag2c, clag2z, zlat2c,
    zhfrk, ztfttp, zlanhf, zpftrf, zpftri, zpftrs, ztfsm, ztftri,
    ztfttr, ztpttf, ztpttr, ztrttf, ztrttp,
    zgeequb, zgbequb, zsyequb, zpoequb, zheequb,
    zbbcsd, zlapmr, zunbdb, zunbdb1, zunbdb2, zunbdb3, zunbdb4,
    zunbdb5, zunbdb6, zuncsd, zuncsd2by1,
    zgeqrt, zgeqrt2, zgeqrt3, zgemqrt,
    ztpqrt, ztpqrt2, ztpmqrt, ztprfb,
);
    # functions added for lapack-3.6.0

@lapackobjs2c = ( @lapackobjs2c,
    cgejsv,
    cgesvdx,
    cgesvj,
    cgetrf2,
    cgges3,
    cggev3,
    cgghd3,
    cggsvd3,
    cggsvp3,
    cgsvj0,
    cgsvj1,
    clagge,
    claghe,
    clagsy,
    clahilb,
    clakf2,
    clarge,
    clarnd,
    claror,
    clarot,
    clatm1,
    clatm2,
    clatm3,
    clatm5,
    clatm6,
    clatme,
    clatmr,
    clatms,
    clatmt,
    cpotrf2,
    csbmv,
    cspr2,
    csyr2,
    cunm22,
);
@lapackobjs2d = (@lapackobjs2d,
    dbdsvdx,
    dgesvdx,
    dgetrf2,
    dgges3,
    dggev3,
    dgghd3,
    dggsvd3,
    dggsvp3,
    dladiv2,
    dlagge,
    dlagsy,
    dlahilb,
    dlakf2,
    dlaran,
    dlarge,
    dlarnd,
    dlaror,
    dlarot,
    dlatm1,
    dlatm2,
    dlatm3,
    dlatm5,
    dlatm6,
    dlatm7,
    dlatme,
    dlatmr,
    dlatms,
    dlatmt,
    dorm22,
    dpotrf2,
    dsecnd,
    );
    @lapackobjs2s = (@lapackobjs2s,
    sbdsvdx,
    second,
    sgesvdx,
    sgetrf2,
    sgges3,
    sggev3,
    sgghd3,
    sggsvd3,
    sggsvp3,
    sladiv2,
    slagge,
    slagsy,
    slahilb,
    slakf2,
    slaran,
    slarge,
    slarnd,
    slaror,
    slarot,
    slatm1,
    slatm2,
    slatm3,
    slatm5,
    slatm6,
    slatm7,
    slatme,
    slatmr,
    slatms,
    slatmt,
    sorm22,
    spotrf2,
    );
    @lapackobjs2z = (@lapackobjs2z,
    zgejsv,
    zgesvdx,
    zgesvj,
    zgetrf2,
    zgges3,
    zggev3,
    zgghd3,
    zggsvd3,
    zggsvp3,
    zgsvj0,
    zgsvj1,
    zlagge,
    zlaghe,
    zlagsy,
    zlahilb,
    zlakf2,
    zlarge,
    zlarnd,
    zlaror,
    zlarot,
    zlatm1,
    zlatm2,
    zlatm3,
    zlatm5,
    zlatm6,
    zlatme,
    zlatmr,
    zlatms,
    zlatmt,
    zpotrf2,
    zsbmv,
    zspr2,
    zsyr2,
    zunm22,
);
    # functions added for lapack-3.7.0
@lapackobjs2s = (@lapackobjs2s,
    slarfy,
    strevc3,
    sgelqt,
    sgelqt3,
    sgemlqt,
    sgetsls,
    sgeqr,
    slatsqr,
    slamtsqr,
    sgemqr,
    sgelq,
    slaswlq,
    slamswlq,
    sgemlq,
    stplqt,
    stplqt2,
    stpmlqt,
    );
    @lapackobjs2d = (@lapackobjs2d,
    dlarfy,
    dsyconvf,
    dtrevc3,
    dgelqt,
    dgelqt3,
    dgemlqt,
    dgetsls,
    dgeqr,
    dlatsqr,
    dlamtsqr,
    dgemqr,
    dgelq,
    dlaswlq,
    dlamswlq,
    dgemlq,
    dtplqt,
    dtplqt2,
    dtpmlqt,
    );
    @lapackobjs2c = (@lapackobjs2c,
    clarfy,
    csyconvf,
    ctrevc3,
    cgelqt,
    cgelqt3,
    cgemlqt,
    cgetsls,
    cgeqr,
    clatsqr,
    clamtsqr,
    cgemqr,
    cgelq,
    claswlq,
    clamswlq,
    cgemlq,
    ctplqt,
    ctplqt2,
    ctpmlqt,
    );
    @lapackobjs2z = (@lapackobjs2z,
    zlarfy,
    zsyconvf,
    ztrevc3,
    ztplqt,
    ztplqt2,
    ztpmlqt,
    zgelqt,
    zgelqt3,
    zgemlqt,
    zgetsls,
    zgeqr,
    zlatsqr,
    zlamtsqr,
    zgemqr,
    zgelq,
    zlaswlq,
    zlamswlq,
    zgemlq,
    );
    @lapackobjs2s = (@lapackobjs2s,
    sladiv1);
    @lapackobjs2d = (@lapackobjs2d,
    dladiv1);
    @lapackobjs = (@lapackobjs,
    iparam2stage,
    # functions added for lapack-3.8.0
    ilaenv2stage,
    );
    # functions added for lapack-3.9.0
@lapackobjs2c = (@lapackobjs2c,
    cgesvdq,
    cungtsqr
    );
@lapackobjs2d = (@lapackobjs2d,
    dcombssq,
    dgesvdq,
    dorgtsqr,
    );
@lapackobjs2s = (@lapackobjs2s,
    scombssq,
    sgesvdq,
    sorgtsqr,
    );
@lapackobjs2z = (@lapackobjs2z,
    zgesvdq,
    zungtsqr
);
    #functions added for lapack-3.10
@lapackobjs2c = (@lapackobjs2c,
    cgetsqrhrt,
    cungtsqr_row
    );
@lapackobjs2d = (@lapackobjs2d,
    dgetsqrhrt,
    dorgtsqr_row
    );
@lapackobjs2s = (@lapackobjs2s,
    sgetsqrhrt,
    sorgtsqr_row
    );
@lapackobjs2z = (@lapackobjs2z,
    zgetsqrhrt,
    zungtsqr_row
    );

@lapack_extendedprecision_objs = (
    zposvxx, clagge, clatms, chesvxx, cposvxx, cgesvxx, ssyrfssx, csyrfsx,
    dlagsy, dsysvxx, sporfsx, slatms, zlatms, zherfsx, csysvxx,
);

@lapack_deprecated_objsc = (
    cgegs,   cggsvd,  
    cgegv,   cggsvp,  
    cgelsx,  clahrd,  
    cgeqpf,  clatzm,  
    ctzrqf,
    );
@lapack_deprecated_objsd = (
    dgegs,   dgeqpf,
    dgegv,   dggsvd,
    dgelsx,  dggsvp,
             dlahrd,
  dlatzm,  dtzrqf);
  
@lapack_deprecated_objss = ( 
  sgelsx,
  sgegs,
  sgegv,
  sgeqpf,
  sggsvd,
  sggsvp,
  slahrd,
  slatzm,
  stzrqf
  );

@lapack_deprecated_objsz = ( 
  zgegs,
  zgegv,
  zgelsx,
  zgeqpf,
  zggsvd,
  zggsvp,
  zlahrd,
  zlatzm,
  ztzrqf
  );

@lapacke_deprecated_objsc = (
    LAPACKE_cggsvp,
    LAPACKE_cggsvp_work,
    LAPACKE_cggsvd,
    LAPACKE_cggsvd_work,
    LAPACKE_cgeqpf,
    LAPACKE_cgeqpf_work,
);  
@lapacke_deprecated_objsd = (    
    LAPACKE_dggsvp,
    LAPACKE_dggsvp_work,
    LAPACKE_dggsvd,
    LAPACKE_dggsvd_work,
    LAPACKE_dgeqpf,
    LAPACKE_dgeqpf_work,
);    
@lapacke_deprecated_objss = (    
    LAPACKE_sggsvp,
    LAPACKE_sggsvp_work,
    LAPACKE_sggsvd,
    LAPACKE_sggsvd_work,
    LAPACKE_sgeqpf,
    LAPACKE_sgeqpf_work,
);    
@lapacke_deprecated_objsz = (    
    LAPACKE_zggsvp,
    LAPACKE_zggsvp_work,
    LAPACKE_zggsvd,
    LAPACKE_zggsvd_work,
    LAPACKE_zgeqpf,
    LAPACKE_zgeqpf_work,
);


@lapackeobjs = (
    # LAPACK C interface routines.
    #
    # This list is prepared in a similar manner to @lapackobjs2, however the
    # functions all begin with an uppercase prefix (with the exception of the
    # make_complex_* routines).
    #
    # The functions corresponding to @(MATGEN_OBJ) and @(SRCX_OBJ) are not
    # exported since the respective LAPACK routines are not built by default.

    # @(OBJ) from `lapack-3.4.1/lapacke/utils/Makefile`
    LAPACKE_lsame,
    LAPACKE_ilaver,
    LAPACKE_xerbla,
    lapack_make_complex_float,
    lapack_make_complex_double,
    LAPACKE_get_nancheck,
    LAPACKE_set_nancheck,
);
@lapackeobjsc = (
    LAPACKE_cgb_nancheck,
    LAPACKE_cgb_trans,
    LAPACKE_cge_nancheck,
    LAPACKE_cge_trans,
    LAPACKE_cgg_nancheck,
    LAPACKE_cgg_trans,
    LAPACKE_cgt_nancheck,
    LAPACKE_chb_nancheck,
    LAPACKE_chb_trans,
    LAPACKE_che_nancheck,
    LAPACKE_che_trans,
    LAPACKE_chp_nancheck,
    LAPACKE_chp_trans,
    LAPACKE_chs_nancheck,
    LAPACKE_chs_trans,
    LAPACKE_c_nancheck,
    LAPACKE_cpb_nancheck,
    LAPACKE_cpb_trans,
    LAPACKE_cpf_nancheck,
    LAPACKE_cpf_trans,
    LAPACKE_cpo_nancheck,
    LAPACKE_cpo_trans,
    LAPACKE_cpp_nancheck,
    LAPACKE_cpp_trans,
    LAPACKE_cpt_nancheck,
    LAPACKE_csp_nancheck,
    LAPACKE_csp_trans,
    LAPACKE_cst_nancheck,
    LAPACKE_csy_nancheck,
    LAPACKE_csy_trans,
    LAPACKE_ctb_nancheck,
    LAPACKE_ctb_trans,
    LAPACKE_ctf_nancheck,
    LAPACKE_ctf_trans,
    LAPACKE_ctp_nancheck,
    LAPACKE_ctp_trans,
    LAPACKE_ctr_nancheck,
    LAPACKE_ctr_trans,
    LAPACKE_cbbcsd,
    LAPACKE_cbbcsd_work,
    LAPACKE_cbdsqr,
    LAPACKE_cbdsqr_work,
    LAPACKE_cgbbrd,
    LAPACKE_cgbbrd_work,
    LAPACKE_cgbcon,
    LAPACKE_cgbcon_work,
    LAPACKE_cgbequ,
    LAPACKE_cgbequ_work,
    LAPACKE_cgbequb,
    LAPACKE_cgbequb_work,
    LAPACKE_cgbrfs,
    LAPACKE_cgbrfs_work,
    LAPACKE_cgbsv,
    LAPACKE_cgbsv_work,
    LAPACKE_cgbsvx,
    LAPACKE_cgbsvx_work,
    LAPACKE_cgbtrf,
    LAPACKE_cgbtrf_work,
    LAPACKE_cgbtrs,
    LAPACKE_cgbtrs_work,
    LAPACKE_cgebak,
    LAPACKE_cgebak_work,
    LAPACKE_cgebal,
    LAPACKE_cgebal_work,
    LAPACKE_cgebrd,
    LAPACKE_cgebrd_work,
    LAPACKE_cgecon,
    LAPACKE_cgecon_work,
    LAPACKE_cgeequ,
    LAPACKE_cgeequ_work,
    LAPACKE_cgeequb,
    LAPACKE_cgeequb_work,
    LAPACKE_cgees,
    LAPACKE_cgees_work,
    LAPACKE_cgeesx,
    LAPACKE_cgeesx_work,
    LAPACKE_cgeev,
    LAPACKE_cgeev_work,
    LAPACKE_cgeevx,
    LAPACKE_cgeevx_work,
    LAPACKE_cgehrd,
    LAPACKE_cgehrd_work,
    LAPACKE_cgelq2,
    LAPACKE_cgelq2_work,
    LAPACKE_cgelqf,
    LAPACKE_cgelqf_work,
    LAPACKE_cgels,
    LAPACKE_cgels_work,
    LAPACKE_cgelsd,
    LAPACKE_cgelsd_work,
    LAPACKE_cgelss,
    LAPACKE_cgelss_work,
    LAPACKE_cgelsy,
    LAPACKE_cgelsy_work,
    LAPACKE_cgemqrt,
    LAPACKE_cgemqrt_work,
    LAPACKE_cgeqlf,
    LAPACKE_cgeqlf_work,
    LAPACKE_cgeqp3,
    LAPACKE_cgeqp3_work,
    LAPACKE_cgeqr2,
    LAPACKE_cgeqr2_work,
    LAPACKE_cgeqrf,
    LAPACKE_cgeqrf_work,
    LAPACKE_cgeqrfp,
    LAPACKE_cgeqrfp_work,
    LAPACKE_cgeqrt,
    LAPACKE_cgeqrt2,
    LAPACKE_cgeqrt2_work,
    LAPACKE_cgeqrt3,
    LAPACKE_cgeqrt3_work,
    LAPACKE_cgeqrt_work,
    LAPACKE_cgerfs,
    LAPACKE_cgerfs_work,
    LAPACKE_cgerqf,
    LAPACKE_cgerqf_work,
    LAPACKE_cgesdd,
    LAPACKE_cgesdd_work,
    LAPACKE_cgesv,
    LAPACKE_cgesv_work,
    LAPACKE_cgesvd,
    LAPACKE_cgesvd_work,
    LAPACKE_cgesvx,
    LAPACKE_cgesvx_work,
    LAPACKE_cgetf2,
    LAPACKE_cgetf2_work,
    LAPACKE_cgetrf,
    LAPACKE_cgetrf_work,
    LAPACKE_cgetri,
    LAPACKE_cgetri_work,
    LAPACKE_cgetrs,
    LAPACKE_cgetrs_work,
    LAPACKE_cggbak,
    LAPACKE_cggbak_work,
    LAPACKE_cggbal,
    LAPACKE_cggbal_work,
    LAPACKE_cgges,
    LAPACKE_cgges_work,
    LAPACKE_cggesx,
    LAPACKE_cggesx_work,
    LAPACKE_cggev,
    LAPACKE_cggev_work,
    LAPACKE_cggevx,
    LAPACKE_cggevx_work,
    LAPACKE_cggglm,
    LAPACKE_cggglm_work,
    LAPACKE_cgghrd,
    LAPACKE_cgghrd_work,
    LAPACKE_cgglse,
    LAPACKE_cgglse_work,
    LAPACKE_cggqrf,
    LAPACKE_cggqrf_work,
    LAPACKE_cggrqf,
    LAPACKE_cggrqf_work,
    LAPACKE_cgtcon,
    LAPACKE_cgtcon_work,
    LAPACKE_cgtrfs,
    LAPACKE_cgtrfs_work,
    LAPACKE_cgtsv,
    LAPACKE_cgtsv_work,
    LAPACKE_cgtsvx,
    LAPACKE_cgtsvx_work,
    LAPACKE_cgttrf,
    LAPACKE_cgttrf_work,
    LAPACKE_cgttrs,
    LAPACKE_cgttrs_work,
    LAPACKE_chbev,
    LAPACKE_chbev_work,
    LAPACKE_chbevd,
    LAPACKE_chbevd_work,
    LAPACKE_chbevx,
    LAPACKE_chbevx_work,
    LAPACKE_chbgst,
    LAPACKE_chbgst_work,
    LAPACKE_chbgv,
    LAPACKE_chbgv_work,
    LAPACKE_chbgvd,
    LAPACKE_chbgvd_work,
    LAPACKE_chbgvx,
    LAPACKE_chbgvx_work,
    LAPACKE_chbtrd,
    LAPACKE_chbtrd_work,
    LAPACKE_checon,
    LAPACKE_checon_work,
    LAPACKE_cheequb,
    LAPACKE_cheequb_work,
    LAPACKE_cheev,
    LAPACKE_cheev_work,
    LAPACKE_cheevd,
    LAPACKE_cheevd_work,
    LAPACKE_cheevr,
    LAPACKE_cheevr_work,
    LAPACKE_cheevx,
    LAPACKE_cheevx_work,
    LAPACKE_chegst,
    LAPACKE_chegst_work,
    LAPACKE_chegv,
    LAPACKE_chegv_work,
    LAPACKE_chegvd,
    LAPACKE_chegvd_work,
    LAPACKE_chegvx,
    LAPACKE_chegvx_work,
    LAPACKE_cherfs,
    LAPACKE_cherfs_work,
    LAPACKE_chesv,
    LAPACKE_chesv_work,
    LAPACKE_chesvx,
    LAPACKE_chesvx_work,
    LAPACKE_cheswapr,
    LAPACKE_cheswapr_work,
    LAPACKE_chetrd,
    LAPACKE_chetrd_work,
    LAPACKE_chetrf,
    LAPACKE_chetrf_work,
    LAPACKE_chetri,
    LAPACKE_chetri2,
    LAPACKE_chetri2_work,
    LAPACKE_chetri2x,
    LAPACKE_chetri2x_work,
    LAPACKE_chetri_work,
    LAPACKE_chetrs,
    LAPACKE_chetrs2,
    LAPACKE_chetrs2_work,
    LAPACKE_chetrs_work,
    LAPACKE_chfrk,
    LAPACKE_chfrk_work,
    LAPACKE_chgeqz,
    LAPACKE_chgeqz_work,
    LAPACKE_chpcon,
    LAPACKE_chpcon_work,
    LAPACKE_chpev,
    LAPACKE_chpev_work,
    LAPACKE_chpevd,
    LAPACKE_chpevd_work,
    LAPACKE_chpevx,
    LAPACKE_chpevx_work,
    LAPACKE_chpgst,
    LAPACKE_chpgst_work,
    LAPACKE_chpgv,
    LAPACKE_chpgv_work,
    LAPACKE_chpgvd,
    LAPACKE_chpgvd_work,
    LAPACKE_chpgvx,
    LAPACKE_chpgvx_work,
    LAPACKE_chprfs,
    LAPACKE_chprfs_work,
    LAPACKE_chpsv,
    LAPACKE_chpsv_work,
    LAPACKE_chpsvx,
    LAPACKE_chpsvx_work,
    LAPACKE_chptrd,
    LAPACKE_chptrd_work,
    LAPACKE_chptrf,
    LAPACKE_chptrf_work,
    LAPACKE_chptri,
    LAPACKE_chptri_work,
    LAPACKE_chptrs,
    LAPACKE_chptrs_work,
    LAPACKE_chsein,
    LAPACKE_chsein_work,
    LAPACKE_chseqr,
    LAPACKE_chseqr_work,
    LAPACKE_clacgv,
    LAPACKE_clacgv_work,
    LAPACKE_clacn2,
    LAPACKE_clacn2_work,
    LAPACKE_clacp2,
    LAPACKE_clacp2_work,
    LAPACKE_clacpy,
    LAPACKE_clacpy_work,
    LAPACKE_clag2z,
    LAPACKE_clag2z_work,
    LAPACKE_clange,
    LAPACKE_clange_work,
    LAPACKE_clanhe,
    LAPACKE_clanhe_work,
    LAPACKE_clansy,
    LAPACKE_clansy_work,
    LAPACKE_clantr,
    LAPACKE_clantr_work,
    LAPACKE_clapmr,
    LAPACKE_clapmr_work,
    LAPACKE_clarfb,
    LAPACKE_clarfb_work,
    LAPACKE_clarfg,
    LAPACKE_clarfg_work,
    LAPACKE_clarft,
    LAPACKE_clarft_work,
    LAPACKE_clarfx,
    LAPACKE_clarfx_work,
    LAPACKE_clarnv,
    LAPACKE_clarnv_work,
    LAPACKE_claset,
    LAPACKE_claset_work,
    LAPACKE_claswp,
    LAPACKE_claswp_work,
    LAPACKE_clauum,
    LAPACKE_clauum_work,
    LAPACKE_cpbcon,
    LAPACKE_cpbcon_work,
    LAPACKE_cpbequ,
    LAPACKE_cpbequ_work,
    LAPACKE_cpbrfs,
    LAPACKE_cpbrfs_work,
    LAPACKE_cpbstf,
    LAPACKE_cpbstf_work,
    LAPACKE_cpbsv,
    LAPACKE_cpbsv_work,
    LAPACKE_cpbsvx,
    LAPACKE_cpbsvx_work,
    LAPACKE_cpbtrf,
    LAPACKE_cpbtrf_work,
    LAPACKE_cpbtrs,
    LAPACKE_cpbtrs_work,
    LAPACKE_cpftrf,
    LAPACKE_cpftrf_work,
    LAPACKE_cpftri,
    LAPACKE_cpftri_work,
    LAPACKE_cpftrs,
    LAPACKE_cpftrs_work,
    LAPACKE_cpocon,
    LAPACKE_cpocon_work,
    LAPACKE_cpoequ,
    LAPACKE_cpoequ_work,
    LAPACKE_cpoequb,
    LAPACKE_cpoequb_work,
    LAPACKE_cporfs,
    LAPACKE_cporfs_work,
    LAPACKE_cposv,
    LAPACKE_cposv_work,
    LAPACKE_cposvx,
    LAPACKE_cposvx_work,
    LAPACKE_cpotrf,
    LAPACKE_cpotrf_work,
    LAPACKE_cpotri,
    LAPACKE_cpotri_work,
    LAPACKE_cpotrs,
    LAPACKE_cpotrs_work,
    LAPACKE_cppcon,
    LAPACKE_cppcon_work,
    LAPACKE_cppequ,
    LAPACKE_cppequ_work,
    LAPACKE_cpprfs,
    LAPACKE_cpprfs_work,
    LAPACKE_cppsv,
    LAPACKE_cppsv_work,
    LAPACKE_cppsvx,
    LAPACKE_cppsvx_work,
    LAPACKE_cpptrf,
    LAPACKE_cpptrf_work,
    LAPACKE_cpptri,
    LAPACKE_cpptri_work,
    LAPACKE_cpptrs,
    LAPACKE_cpptrs_work,
    LAPACKE_cpstrf,
    LAPACKE_cpstrf_work,
    LAPACKE_cptcon,
    LAPACKE_cptcon_work,
    LAPACKE_cpteqr,
    LAPACKE_cpteqr_work,
    LAPACKE_cptrfs,
    LAPACKE_cptrfs_work,
    LAPACKE_cptsv,
    LAPACKE_cptsv_work,
    LAPACKE_cptsvx,
    LAPACKE_cptsvx_work,
    LAPACKE_cpttrf,
    LAPACKE_cpttrf_work,
    LAPACKE_cpttrs,
    LAPACKE_cpttrs_work,
    LAPACKE_cspcon,
    LAPACKE_cspcon_work,
    LAPACKE_csprfs,
    LAPACKE_csprfs_work,
    LAPACKE_cspsv,
    LAPACKE_cspsv_work,
    LAPACKE_cspsvx,
    LAPACKE_cspsvx_work,
    LAPACKE_csptrf,
    LAPACKE_csptrf_work,
    LAPACKE_csptri,
    LAPACKE_csptri_work,
    LAPACKE_csptrs,
    LAPACKE_csptrs_work,
    LAPACKE_cstedc,
    LAPACKE_cstedc_work,
    LAPACKE_cstegr,
    LAPACKE_cstegr_work,
    LAPACKE_cstein,
    LAPACKE_cstein_work,
    LAPACKE_cstemr,
    LAPACKE_cstemr_work,
    LAPACKE_csteqr,
    LAPACKE_csteqr_work,
    LAPACKE_csycon,
    LAPACKE_csycon_work,
    LAPACKE_csyconv,
    LAPACKE_csyconv_work,
    LAPACKE_csyequb,
    LAPACKE_csyequb_work,
    LAPACKE_csyrfs,
    LAPACKE_csyrfs_work,
    LAPACKE_csysv,
    LAPACKE_csysv_rook,
    LAPACKE_csysv_rook_work,
    LAPACKE_csysv_work,
    LAPACKE_csysvx,
    LAPACKE_csysvx_work,
    LAPACKE_csyswapr,
    LAPACKE_csyswapr_work,
    LAPACKE_csytrf,
    LAPACKE_csytrf_work,
    LAPACKE_csytri,
    LAPACKE_csytri2,
    LAPACKE_csytri2_work,
    LAPACKE_csytri2x,
    LAPACKE_csytri2x_work,
    LAPACKE_csytri_work,
    LAPACKE_csytrs,
    LAPACKE_csytrs2,
    LAPACKE_csytrs2_work,
    LAPACKE_csytrs_work,
    LAPACKE_ctbcon,
    LAPACKE_ctbcon_work,
    LAPACKE_ctbrfs,
    LAPACKE_ctbrfs_work,
    LAPACKE_ctbtrs,
    LAPACKE_ctbtrs_work,
    LAPACKE_ctfsm,
    LAPACKE_ctfsm_work,
    LAPACKE_ctftri,
    LAPACKE_ctftri_work,
    LAPACKE_ctfttp,
    LAPACKE_ctfttp_work,
    LAPACKE_ctfttr,
    LAPACKE_ctfttr_work,
    LAPACKE_ctgevc,
    LAPACKE_ctgevc_work,
    LAPACKE_ctgexc,
    LAPACKE_ctgexc_work,
    LAPACKE_ctgsen,
    LAPACKE_ctgsen_work,
    LAPACKE_ctgsja,
    LAPACKE_ctgsja_work,
    LAPACKE_ctgsna,
    LAPACKE_ctgsna_work,
    LAPACKE_ctgsyl,
    LAPACKE_ctgsyl_work,
    LAPACKE_ctpcon,
    LAPACKE_ctpcon_work,
    LAPACKE_ctpmqrt,
    LAPACKE_ctpmqrt_work,
    LAPACKE_ctpqrt,
    LAPACKE_ctpqrt2,
    LAPACKE_ctpqrt2_work,
    LAPACKE_ctpqrt_work,
    LAPACKE_ctprfb,
    LAPACKE_ctprfb_work,
    LAPACKE_ctprfs,
    LAPACKE_ctprfs_work,
    LAPACKE_ctptri,
    LAPACKE_ctptri_work,
    LAPACKE_ctptrs,
    LAPACKE_ctptrs_work,
    LAPACKE_ctpttf,
    LAPACKE_ctpttf_work,
    LAPACKE_ctpttr,
    LAPACKE_ctpttr_work,
    LAPACKE_ctrcon,
    LAPACKE_ctrcon_work,
    LAPACKE_ctrevc,
    LAPACKE_ctrevc_work,
    LAPACKE_ctrexc,
    LAPACKE_ctrexc_work,
    LAPACKE_ctrrfs,
    LAPACKE_ctrrfs_work,
    LAPACKE_ctrsen,
    LAPACKE_ctrsen_work,
    LAPACKE_ctrsna,
    LAPACKE_ctrsna_work,
    LAPACKE_ctrsyl,
    LAPACKE_ctrsyl_work,
    LAPACKE_ctrtri,
    LAPACKE_ctrtri_work,
    LAPACKE_ctrtrs,
    LAPACKE_ctrtrs_work,
    LAPACKE_ctrttf,
    LAPACKE_ctrttf_work,
    LAPACKE_ctrttp,
    LAPACKE_ctrttp_work,
    LAPACKE_ctzrzf,
    LAPACKE_ctzrzf_work,
    LAPACKE_cunbdb,
    LAPACKE_cunbdb_work,
    LAPACKE_cuncsd,
    LAPACKE_cuncsd_work,
    LAPACKE_cungbr,
    LAPACKE_cungbr_work,
    LAPACKE_cunghr,
    LAPACKE_cunghr_work,
    LAPACKE_cunglq,
    LAPACKE_cunglq_work,
    LAPACKE_cungql,
    LAPACKE_cungql_work,
    LAPACKE_cungqr,
    LAPACKE_cungqr_work,
    LAPACKE_cungrq,
    LAPACKE_cungrq_work,
    LAPACKE_cungtr,
    LAPACKE_cungtr_work,
    LAPACKE_cunmbr,
    LAPACKE_cunmbr_work,
    LAPACKE_cunmhr,
    LAPACKE_cunmhr_work,
    LAPACKE_cunmlq,
    LAPACKE_cunmlq_work,
    LAPACKE_cunmql,
    LAPACKE_cunmql_work,
    LAPACKE_cunmqr,
    LAPACKE_cunmqr_work,
    LAPACKE_cunmrq,
    LAPACKE_cunmrq_work,
    LAPACKE_cunmrz,
    LAPACKE_cunmrz_work,
    LAPACKE_cunmtr,
    LAPACKE_cunmtr_work,
    LAPACKE_cupgtr,
    LAPACKE_cupgtr_work,
    LAPACKE_cupmtr,
    LAPACKE_cupmtr_work,
    LAPACKE_csyr,
    LAPACKE_csyr_work,
    LAPACKE_clatms,
    LAPACKE_clatms_work,
    LAPACKE_clagge,
    LAPACKE_clagge_work,
    LAPACKE_claghe,
    LAPACKE_claghe_work,
    LAPACKE_clagsy,
    LAPACKE_clagsy_work,
    LAPACKE_cgejsv,
    LAPACKE_cgejsv_work,
    LAPACKE_cgesvdx,
    LAPACKE_cgesvdx_work,
    LAPACKE_cgesvj,
    LAPACKE_cgesvj_work,
    LAPACKE_cgetrf2,
    LAPACKE_cgetrf2_work,
    LAPACKE_cgges3,
    LAPACKE_cgges3_work,
    LAPACKE_cggev3,
    LAPACKE_cggev3_work,
    LAPACKE_cgghd3,
    LAPACKE_cgghd3_work,
    LAPACKE_cggsvd3,
    LAPACKE_cggsvd3_work,
    LAPACKE_cggsvp3,
    LAPACKE_cggsvp3_work,
    LAPACKE_chetrf_rook,
    LAPACKE_chetrf_rook_work,
    LAPACKE_chetrs_rook,
    LAPACKE_chetrs_rook_work,
    LAPACKE_clapmt,
    LAPACKE_clapmt_work,
    LAPACKE_clascl,
    LAPACKE_clascl_work,
    LAPACKE_cpotrf2,
    LAPACKE_cpotrf2_work,
    LAPACKE_csytrf_rook,
    LAPACKE_csytrf_rook_work,
    LAPACKE_csytrs_rook,
    LAPACKE_csytrs_rook_work,
    LAPACKE_cuncsd2by1,
    LAPACKE_cuncsd2by1_work,
    LAPACKE_cgelq,
    LAPACKE_cgelq_work,
    LAPACKE_cgemlq,
    LAPACKE_cgemlq_work,
    LAPACKE_cgemqr,
    LAPACKE_cgemqr_work,
    LAPACKE_cgeqr,
    LAPACKE_cgeqr_work,
    LAPACKE_cgetsls,
    LAPACKE_cgetsls_work,
    LAPACKE_chbev_2stage,
    LAPACKE_chbev_2stage_work,
    LAPACKE_chbevd_2stage,
    LAPACKE_chbevd_2stage_work,
    LAPACKE_chbevx_2stage,
    LAPACKE_chbevx_2stage_work,
    LAPACKE_checon_3,
    LAPACKE_checon_3_work,
    LAPACKE_cheev_2stage,
    LAPACKE_cheev_2stage_work,
    LAPACKE_cheevd_2stage,
    LAPACKE_cheevd_2stage_work,
    LAPACKE_cheevr_2stage,
    LAPACKE_cheevr_2stage_work,
    LAPACKE_cheevx_2stage,
    LAPACKE_cheevx_2stage_work,
    LAPACKE_chegv_2stage,
    LAPACKE_chegv_2stage_work,
    LAPACKE_chesv_aa,
    LAPACKE_chesv_aa_work,
    LAPACKE_chesv_rk,
    LAPACKE_chesv_rk_work,
    LAPACKE_chetrf_aa,
    LAPACKE_chetrf_aa_work,
    LAPACKE_chetrf_rk,
    LAPACKE_chetrf_rk_work,
    LAPACKE_chetri_3,
    LAPACKE_chetri_3_work,
    LAPACKE_chetrs_aa,
    LAPACKE_chetrs_aa_work,
    LAPACKE_chetrs_3,
    LAPACKE_chetrs_3_work,
    LAPACKE_csycon_3,
    LAPACKE_csycon_3_work,
    LAPACKE_csysv_aa,
    LAPACKE_csysv_aa_work,
    LAPACKE_csysv_rk,
    LAPACKE_csysv_rk_work,
    LAPACKE_csytrf_aa,
    LAPACKE_csytrf_aa_work,
    LAPACKE_csytrf_rk,
    LAPACKE_csytrf_rk_work,
    LAPACKE_csytri_3,
    LAPACKE_csytri_3_work,
    LAPACKE_csytrs_aa,
    LAPACKE_csytrs_aa_work,
    LAPACKE_csytrs_3,
    LAPACKE_csytrs_3_work,
    LAPACKE_chesv_aa_2stage,
    LAPACKE_chesv_aa_2stage_work,
    LAPACKE_chetrf_aa_2stage,
    LAPACKE_chetrf_aa_2stage_work,
    LAPACKE_chetrs_aa_2stage,
    LAPACKE_chetrs_aa_2stage_work,
    LAPACKE_clacrm,
    LAPACKE_clacrm_work,
    LAPACKE_clarcm,
    LAPACKE_clarcm_work,
    LAPACKE_classq,
    LAPACKE_classq_work,
    LAPACKE_csysv_aa_2stage,
    LAPACKE_csysv_aa_2stage_work,
    LAPACKE_csytrf_aa_2stage,
    LAPACKE_csytrf_aa_2stage_work,
    LAPACKE_csytrs_aa_2stage,
    LAPACKE_csytrs_aa_2stage_work,
    LAPACKE_cgesvdq,
    LAPACKE_cgesvdq_work,
    LAPACKE_cgetsqrhrt,
    LAPACKE_cgetsqrhrt_work,
    LAPACKE_cungtsqr_row,
    LAPACKE_cungtsqr_row_work

);
@lapackeobjsd = (
    LAPACKE_dgb_nancheck,
    LAPACKE_dgb_trans,
    LAPACKE_dge_nancheck,
    LAPACKE_dge_trans,
    LAPACKE_dgg_nancheck,
    LAPACKE_dgg_trans,
    LAPACKE_dgt_nancheck,
    LAPACKE_dhs_nancheck,
    LAPACKE_dhs_trans,
    LAPACKE_d_nancheck,
    LAPACKE_dpb_nancheck,
    LAPACKE_dpb_trans,
    LAPACKE_dpf_nancheck,
    LAPACKE_dpf_trans,
    LAPACKE_dpo_nancheck,
    LAPACKE_dpo_trans,
    LAPACKE_dpp_nancheck,
    LAPACKE_dpp_trans,
    LAPACKE_dpt_nancheck,
    LAPACKE_dsb_nancheck,
    LAPACKE_dsb_trans,
    LAPACKE_dsp_nancheck,
    LAPACKE_dsp_trans,
    LAPACKE_dst_nancheck,
    LAPACKE_dsy_nancheck,
    LAPACKE_dsy_trans,
    LAPACKE_dtb_nancheck,
    LAPACKE_dtb_trans,
    LAPACKE_dtf_nancheck,
    LAPACKE_dtf_trans,
    LAPACKE_dtp_nancheck,
    LAPACKE_dtp_trans,
    LAPACKE_dtr_nancheck,
    LAPACKE_dtr_trans,
    LAPACKE_dbbcsd,
    LAPACKE_dbbcsd_work,
    LAPACKE_dbdsdc,
    LAPACKE_dbdsdc_work,
    LAPACKE_dbdsqr,
    LAPACKE_dbdsqr_work,
    LAPACKE_ddisna,
    LAPACKE_ddisna_work,
    LAPACKE_dgbbrd,
    LAPACKE_dgbbrd_work,
    LAPACKE_dgbcon,
    LAPACKE_dgbcon_work,
    LAPACKE_dgbequ,
    LAPACKE_dgbequ_work,
    LAPACKE_dgbequb,
    LAPACKE_dgbequb_work,
    LAPACKE_dgbrfs,
    LAPACKE_dgbrfs_work,
    LAPACKE_dgbsv,
    LAPACKE_dgbsv_work,
    LAPACKE_dgbsvx,
    LAPACKE_dgbsvx_work,
    LAPACKE_dgbtrf,
    LAPACKE_dgbtrf_work,
    LAPACKE_dgbtrs,
    LAPACKE_dgbtrs_work,
    LAPACKE_dgebak,
    LAPACKE_dgebak_work,
    LAPACKE_dgebal,
    LAPACKE_dgebal_work,
    LAPACKE_dgebrd,
    LAPACKE_dgebrd_work,
    LAPACKE_dgecon,
    LAPACKE_dgecon_work,
    LAPACKE_dgeequ,
    LAPACKE_dgeequ_work,
    LAPACKE_dgeequb,
    LAPACKE_dgeequb_work,
    LAPACKE_dgees,
    LAPACKE_dgees_work,
    LAPACKE_dgeesx,
    LAPACKE_dgeesx_work,
    LAPACKE_dgeev,
    LAPACKE_dgeev_work,
    LAPACKE_dgeevx,
    LAPACKE_dgeevx_work,
    LAPACKE_dgehrd,
    LAPACKE_dgehrd_work,
    LAPACKE_dgejsv,
    LAPACKE_dgejsv_work,
    LAPACKE_dgelq2,
    LAPACKE_dgelq2_work,
    LAPACKE_dgelqf,
    LAPACKE_dgelqf_work,
    LAPACKE_dgels,
    LAPACKE_dgels_work,
    LAPACKE_dgelsd,
    LAPACKE_dgelsd_work,
    LAPACKE_dgelss,
    LAPACKE_dgelss_work,
    LAPACKE_dgelsy,
    LAPACKE_dgelsy_work,
    LAPACKE_dgemqrt,
    LAPACKE_dgemqrt_work,
    LAPACKE_dgeqlf,
    LAPACKE_dgeqlf_work,
    LAPACKE_dgeqp3,
    LAPACKE_dgeqp3_work,
    LAPACKE_dgeqr2,
    LAPACKE_dgeqr2_work,
    LAPACKE_dgeqrf,
    LAPACKE_dgeqrf_work,
    LAPACKE_dgeqrfp,
    LAPACKE_dgeqrfp_work,
    LAPACKE_dgeqrt,
    LAPACKE_dgeqrt2,
    LAPACKE_dgeqrt2_work,
    LAPACKE_dgeqrt3,
    LAPACKE_dgeqrt3_work,
    LAPACKE_dgeqrt_work,
    LAPACKE_dgerfs,
    LAPACKE_dgerfs_work,
    LAPACKE_dgerqf,
    LAPACKE_dgerqf_work,
    LAPACKE_dgesdd,
    LAPACKE_dgesdd_work,
    LAPACKE_dgesv,
    LAPACKE_dgesv_work,
    LAPACKE_dgesvd,
    LAPACKE_dgesvd_work,
    LAPACKE_dgesvj,
    LAPACKE_dgesvj_work,
    LAPACKE_dgesvx,
    LAPACKE_dgesvx_work,
    LAPACKE_dgetf2,
    LAPACKE_dgetf2_work,
    LAPACKE_dgetrf,
    LAPACKE_dgetrf_work,
    LAPACKE_dgetri,
    LAPACKE_dgetri_work,
    LAPACKE_dgetrs,
    LAPACKE_dgetrs_work,
    LAPACKE_dggbak,
    LAPACKE_dggbak_work,
    LAPACKE_dggbal,
    LAPACKE_dggbal_work,
    LAPACKE_dgges,
    LAPACKE_dgges_work,
    LAPACKE_dggesx,
    LAPACKE_dggesx_work,
    LAPACKE_dggev,
    LAPACKE_dggev_work,
    LAPACKE_dggevx,
    LAPACKE_dggevx_work,
    LAPACKE_dggglm,
    LAPACKE_dggglm_work,
    LAPACKE_dgghrd,
    LAPACKE_dgghrd_work,
    LAPACKE_dgglse,
    LAPACKE_dgglse_work,
    LAPACKE_dggqrf,
    LAPACKE_dggqrf_work,
    LAPACKE_dggrqf,
    LAPACKE_dggrqf_work,
    LAPACKE_dgtcon,
    LAPACKE_dgtcon_work,
    LAPACKE_dgtrfs,
    LAPACKE_dgtrfs_work,
    LAPACKE_dgtsv,
    LAPACKE_dgtsv_work,
    LAPACKE_dgtsvx,
    LAPACKE_dgtsvx_work,
    LAPACKE_dgttrf,
    LAPACKE_dgttrf_work,
    LAPACKE_dgttrs,
    LAPACKE_dgttrs_work,
    LAPACKE_dhgeqz,
    LAPACKE_dhgeqz_work,
    LAPACKE_dhsein,
    LAPACKE_dhsein_work,
    LAPACKE_dhseqr,
    LAPACKE_dhseqr_work,
    LAPACKE_dlacn2,
    LAPACKE_dlacn2_work,
    LAPACKE_dlacpy,
    LAPACKE_dlacpy_work,
    LAPACKE_dlag2s,
    LAPACKE_dlag2s_work,
    LAPACKE_dlamch,
    LAPACKE_dlamch_work,
    LAPACKE_dlange,
    LAPACKE_dlange_work,
    LAPACKE_dlansy,
    LAPACKE_dlansy_work,
    LAPACKE_dlantr,
    LAPACKE_dlantr_work,
    LAPACKE_dlapmr,
    LAPACKE_dlapmr_work,
    LAPACKE_dlapy2,
    LAPACKE_dlapy2_work,
    LAPACKE_dlapy3,
    LAPACKE_dlapy3_work,
    LAPACKE_dlarfb,
    LAPACKE_dlarfb_work,
    LAPACKE_dlarfg,
    LAPACKE_dlarfg_work,
    LAPACKE_dlarft,
    LAPACKE_dlarft_work,
    LAPACKE_dlarfx,
    LAPACKE_dlarfx_work,
    LAPACKE_dlarnv,
    LAPACKE_dlarnv_work,
    LAPACKE_dlartgp,
    LAPACKE_dlartgp_work,
    LAPACKE_dlartgs,
    LAPACKE_dlartgs_work,
    LAPACKE_dlaset,
    LAPACKE_dlaset_work,
    LAPACKE_dlasrt,
    LAPACKE_dlasrt_work,
    LAPACKE_dlaswp,
    LAPACKE_dlaswp_work,
    LAPACKE_dlauum,
    LAPACKE_dlauum_work,
    LAPACKE_dopgtr,
    LAPACKE_dopgtr_work,
    LAPACKE_dopmtr,
    LAPACKE_dopmtr_work,
    LAPACKE_dorbdb,
    LAPACKE_dorbdb_work,
    LAPACKE_dorcsd,
    LAPACKE_dorcsd_work,
    LAPACKE_dorgbr,
    LAPACKE_dorgbr_work,
    LAPACKE_dorghr,
    LAPACKE_dorghr_work,
    LAPACKE_dorglq,
    LAPACKE_dorglq_work,
    LAPACKE_dorgql,
    LAPACKE_dorgql_work,
    LAPACKE_dorgqr,
    LAPACKE_dorgqr_work,
    LAPACKE_dorgrq,
    LAPACKE_dorgrq_work,
    LAPACKE_dorgtr,
    LAPACKE_dorgtr_work,
    LAPACKE_dormbr,
    LAPACKE_dormbr_work,
    LAPACKE_dormhr,
    LAPACKE_dormhr_work,
    LAPACKE_dormlq,
    LAPACKE_dormlq_work,
    LAPACKE_dormql,
    LAPACKE_dormql_work,
    LAPACKE_dormqr,
    LAPACKE_dormqr_work,
    LAPACKE_dormrq,
    LAPACKE_dormrq_work,
    LAPACKE_dormrz,
    LAPACKE_dormrz_work,
    LAPACKE_dormtr,
    LAPACKE_dormtr_work,
    LAPACKE_dpbcon,
    LAPACKE_dpbcon_work,
    LAPACKE_dpbequ,
    LAPACKE_dpbequ_work,
    LAPACKE_dpbrfs,
    LAPACKE_dpbrfs_work,
    LAPACKE_dpbstf,
    LAPACKE_dpbstf_work,
    LAPACKE_dpbsv,
    LAPACKE_dpbsv_work,
    LAPACKE_dpbsvx,
    LAPACKE_dpbsvx_work,
    LAPACKE_dpbtrf,
    LAPACKE_dpbtrf_work,
    LAPACKE_dpbtrs,
    LAPACKE_dpbtrs_work,
    LAPACKE_dpftrf,
    LAPACKE_dpftrf_work,
    LAPACKE_dpftri,
    LAPACKE_dpftri_work,
    LAPACKE_dpftrs,
    LAPACKE_dpftrs_work,
    LAPACKE_dpocon,
    LAPACKE_dpocon_work,
    LAPACKE_dpoequ,
    LAPACKE_dpoequ_work,
    LAPACKE_dpoequb,
    LAPACKE_dpoequb_work,
    LAPACKE_dporfs,
    LAPACKE_dporfs_work,
    LAPACKE_dposv,
    LAPACKE_dposv_work,
    LAPACKE_dposvx,
    LAPACKE_dposvx_work,
    LAPACKE_dpotrf,
    LAPACKE_dpotrf_work,
    LAPACKE_dpotri,
    LAPACKE_dpotri_work,
    LAPACKE_dpotrs,
    LAPACKE_dpotrs_work,
    LAPACKE_dppcon,
    LAPACKE_dppcon_work,
    LAPACKE_dppequ,
    LAPACKE_dppequ_work,
    LAPACKE_dpprfs,
    LAPACKE_dpprfs_work,
    LAPACKE_dppsv,
    LAPACKE_dppsv_work,
    LAPACKE_dppsvx,
    LAPACKE_dppsvx_work,
    LAPACKE_dpptrf,
    LAPACKE_dpptrf_work,
    LAPACKE_dpptri,
    LAPACKE_dpptri_work,
    LAPACKE_dpptrs,
    LAPACKE_dpptrs_work,
    LAPACKE_dpstrf,
    LAPACKE_dpstrf_work,
    LAPACKE_dptcon,
    LAPACKE_dptcon_work,
    LAPACKE_dpteqr,
    LAPACKE_dpteqr_work,
    LAPACKE_dptrfs,
    LAPACKE_dptrfs_work,
    LAPACKE_dptsv,
    LAPACKE_dptsv_work,
    LAPACKE_dptsvx,
    LAPACKE_dptsvx_work,
    LAPACKE_dpttrf,
    LAPACKE_dpttrf_work,
    LAPACKE_dpttrs,
    LAPACKE_dpttrs_work,
    LAPACKE_dsbev,
    LAPACKE_dsbev_work,
    LAPACKE_dsbevd,
    LAPACKE_dsbevd_work,
    LAPACKE_dsbevx,
    LAPACKE_dsbevx_work,
    LAPACKE_dsbgst,
    LAPACKE_dsbgst_work,
    LAPACKE_dsbgv,
    LAPACKE_dsbgv_work,
    LAPACKE_dsbgvd,
    LAPACKE_dsbgvd_work,
    LAPACKE_dsbgvx,
    LAPACKE_dsbgvx_work,
    LAPACKE_dsbtrd,
    LAPACKE_dsbtrd_work,
    LAPACKE_dsfrk,
    LAPACKE_dsfrk_work,
    LAPACKE_dsgesv,
    LAPACKE_dsgesv_work,
    LAPACKE_dspcon,
    LAPACKE_dspcon_work,
    LAPACKE_dspev,
    LAPACKE_dspev_work,
    LAPACKE_dspevd,
    LAPACKE_dspevd_work,
    LAPACKE_dspevx,
    LAPACKE_dspevx_work,
    LAPACKE_dspgst,
    LAPACKE_dspgst_work,
    LAPACKE_dspgv,
    LAPACKE_dspgv_work,
    LAPACKE_dspgvd,
    LAPACKE_dspgvd_work,
    LAPACKE_dspgvx,
    LAPACKE_dspgvx_work,
    LAPACKE_dsposv,
    LAPACKE_dsposv_work,
    LAPACKE_dsprfs,
    LAPACKE_dsprfs_work,
    LAPACKE_dspsv,
    LAPACKE_dspsv_work,
    LAPACKE_dspsvx,
    LAPACKE_dspsvx_work,
    LAPACKE_dsptrd,
    LAPACKE_dsptrd_work,
    LAPACKE_dsptrf,
    LAPACKE_dsptrf_work,
    LAPACKE_dsptri,
    LAPACKE_dsptri_work,
    LAPACKE_dsptrs,
    LAPACKE_dsptrs_work,
    LAPACKE_dstebz,
    LAPACKE_dstebz_work,
    LAPACKE_dstedc,
    LAPACKE_dstedc_work,
    LAPACKE_dstegr,
    LAPACKE_dstegr_work,
    LAPACKE_dstein,
    LAPACKE_dstein_work,
    LAPACKE_dstemr,
    LAPACKE_dstemr_work,
    LAPACKE_dsteqr,
    LAPACKE_dsteqr_work,
    LAPACKE_dsterf,
    LAPACKE_dsterf_work,
    LAPACKE_dstev,
    LAPACKE_dstev_work,
    LAPACKE_dstevd,
    LAPACKE_dstevd_work,
    LAPACKE_dstevr,
    LAPACKE_dstevr_work,
    LAPACKE_dstevx,
    LAPACKE_dstevx_work,
    LAPACKE_dsycon,
    LAPACKE_dsycon_work,
    LAPACKE_dsyconv,
    LAPACKE_dsyconv_work,
    LAPACKE_dsyequb,
    LAPACKE_dsyequb_work,
    LAPACKE_dsyev,
    LAPACKE_dsyev_work,
    LAPACKE_dsyevd,
    LAPACKE_dsyevd_work,
    LAPACKE_dsyevr,
    LAPACKE_dsyevr_work,
    LAPACKE_dsyevx,
    LAPACKE_dsyevx_work,
    LAPACKE_dsygst,
    LAPACKE_dsygst_work,
    LAPACKE_dsygv,
    LAPACKE_dsygv_work,
    LAPACKE_dsygvd,
    LAPACKE_dsygvd_work,
    LAPACKE_dsygvx,
    LAPACKE_dsygvx_work,
    LAPACKE_dsyrfs,
    LAPACKE_dsyrfs_work,
    LAPACKE_dsysv,
    LAPACKE_dsysv_rook,
    LAPACKE_dsysv_rook_work,
    LAPACKE_dsysv_work,
    LAPACKE_dsysvx,
    LAPACKE_dsysvx_work,
    LAPACKE_dsyswapr,
    LAPACKE_dsyswapr_work,
    LAPACKE_dsytrd,
    LAPACKE_dsytrd_work,
    LAPACKE_dsytrf,
    LAPACKE_dsytrf_work,
    LAPACKE_dsytri,
    LAPACKE_dsytri2,
    LAPACKE_dsytri2_work,
    LAPACKE_dsytri2x,
    LAPACKE_dsytri2x_work,
    LAPACKE_dsytri_work,
    LAPACKE_dsytrs,
    LAPACKE_dsytrs2,
    LAPACKE_dsytrs2_work,
    LAPACKE_dsytrs_work,
    LAPACKE_dtbcon,
    LAPACKE_dtbcon_work,
    LAPACKE_dtbrfs,
    LAPACKE_dtbrfs_work,
    LAPACKE_dtbtrs,
    LAPACKE_dtbtrs_work,
    LAPACKE_dtfsm,
    LAPACKE_dtfsm_work,
    LAPACKE_dtftri,
    LAPACKE_dtftri_work,
    LAPACKE_dtfttp,
    LAPACKE_dtfttp_work,
    LAPACKE_dtfttr,
    LAPACKE_dtfttr_work,
    LAPACKE_dtgevc,
    LAPACKE_dtgevc_work,
    LAPACKE_dtgexc,
    LAPACKE_dtgexc_work,
    LAPACKE_dtgsen,
    LAPACKE_dtgsen_work,
    LAPACKE_dtgsja,
    LAPACKE_dtgsja_work,
    LAPACKE_dtgsna,
    LAPACKE_dtgsna_work,
    LAPACKE_dtgsyl,
    LAPACKE_dtgsyl_work,
    LAPACKE_dtpcon,
    LAPACKE_dtpcon_work,
    LAPACKE_dtpmqrt,
    LAPACKE_dtpmqrt_work,
    LAPACKE_dtpqrt,
    LAPACKE_dtpqrt2,
    LAPACKE_dtpqrt2_work,
    LAPACKE_dtpqrt_work,
    LAPACKE_dtprfb,
    LAPACKE_dtprfb_work,
    LAPACKE_dtprfs,
    LAPACKE_dtprfs_work,
    LAPACKE_dtptri,
    LAPACKE_dtptri_work,
    LAPACKE_dtptrs,
    LAPACKE_dtptrs_work,
    LAPACKE_dtpttf,
    LAPACKE_dtpttf_work,
    LAPACKE_dtpttr,
    LAPACKE_dtpttr_work,
    LAPACKE_dtrcon,
    LAPACKE_dtrcon_work,
    LAPACKE_dtrevc,
    LAPACKE_dtrevc_work,
    LAPACKE_dtrexc,
    LAPACKE_dtrexc_work,
    LAPACKE_dtrrfs,
    LAPACKE_dtrrfs_work,
    LAPACKE_dtrsen,
    LAPACKE_dtrsen_work,
    LAPACKE_dtrsna,
    LAPACKE_dtrsna_work,
    LAPACKE_dtrsyl,
    LAPACKE_dtrsyl_work,
    LAPACKE_dtrtri,
    LAPACKE_dtrtri_work,
    LAPACKE_dtrtrs,
    LAPACKE_dtrtrs_work,
    LAPACKE_dtrttf,
    LAPACKE_dtrttf_work,
    LAPACKE_dtrttp,
    LAPACKE_dtrttp_work,
    LAPACKE_dtzrzf,
    LAPACKE_dtzrzf_work,
    LAPACKE_dlatms,
    LAPACKE_dlatms_work,
    LAPACKE_dlagge,
    LAPACKE_dlagge_work,
    LAPACKE_dlagsy,
    LAPACKE_dlagsy_work,
    LAPACKE_dbdsvdx,
    LAPACKE_dbdsvdx_work,
    LAPACKE_dgesvdx,
    LAPACKE_dgesvdx_work,
    LAPACKE_dgetrf2,
    LAPACKE_dgetrf2_work,
    LAPACKE_dgges3,
    LAPACKE_dgges3_work,
    LAPACKE_dggev3,
    LAPACKE_dggev3_work,
    LAPACKE_dgghd3,
    LAPACKE_dgghd3_work,
    LAPACKE_dggsvd3,
    LAPACKE_dggsvd3_work,
    LAPACKE_dggsvp3,
    LAPACKE_dggsvp3_work,
    LAPACKE_dlapmt,
    LAPACKE_dlapmt_work,
    LAPACKE_dlascl,
    LAPACKE_dlascl_work,
    LAPACKE_dorcsd2by1,
    LAPACKE_dorcsd2by1_work,
    LAPACKE_dpotrf2,
    LAPACKE_dpotrf2_work,
    LAPACKE_dsytrf_rook,
    LAPACKE_dsytrf_rook_work,
    LAPACKE_dsytrs_rook,
    LAPACKE_dsytrs_rook_work,
    LAPACKE_dgelq,
    LAPACKE_dgelq_work,
    LAPACKE_dgemlq,
    LAPACKE_dgemlq_work,
    LAPACKE_dgemqr,
    LAPACKE_dgemqr_work,
    LAPACKE_dgeqr,
    LAPACKE_dgeqr_work,
    LAPACKE_dgetsls,
    LAPACKE_dgetsls_work,
    LAPACKE_dsbev_2stage,
    LAPACKE_dsbev_2stage_work,
    LAPACKE_dsbevd_2stage,
    LAPACKE_dsbevd_2stage_work,
    LAPACKE_dsbevx_2stage,
    LAPACKE_dsbevx_2stage_work,
    LAPACKE_dsycon_3,
    LAPACKE_dsycon_3_work,
    LAPACKE_dsyev_2stage,
    LAPACKE_dsyev_2stage_work,
    LAPACKE_dsyevd_2stage,
    LAPACKE_dsyevd_2stage_work,
    LAPACKE_dsyevr_2stage,
    LAPACKE_dsyevr_2stage_work,
    LAPACKE_dsyevx_2stage,
    LAPACKE_dsyevx_2stage_work,
    LAPACKE_dsygv_2stage,
    LAPACKE_dsygv_2stage_work,
    LAPACKE_dsysv_aa,
    LAPACKE_dsysv_aa_work,
    LAPACKE_dsysv_rk,
    LAPACKE_dsysv_rk_work,
    LAPACKE_dsytrf_aa,
    LAPACKE_dsytrf_aa_work,
    LAPACKE_dsytrf_rk,
    LAPACKE_dsytrf_rk_work,
    LAPACKE_dsytri_3,
    LAPACKE_dsytri_3_work,
    LAPACKE_dsytrs_aa,
    LAPACKE_dsytrs_aa_work,
    LAPACKE_dsytrs_3,
    LAPACKE_dsytrs_3_work,
    LAPACKE_dlassq,
    LAPACKE_dlassq_work,
    LAPACKE_dsysv_aa_2stage,
    LAPACKE_dsysv_aa_2stage_work,
    LAPACKE_dsytrf_aa_2stage,
    LAPACKE_dsytrf_aa_2stage_work,
    LAPACKE_dsytrs_aa_2stage,
    LAPACKE_dsytrs_aa_2stage_work,
    LAPACKE_dgesvdq,
    LAPACKE_dgesvdq_work,
    LAPACKE_slag2d,
    LAPACKE_slag2d_work,
    LAPACKE_dgetsqrhrt,
    LAPACKE_dgetsqrhrt_work,
    LAPACKE_dorgtsqr_row,
    LAPACKE_dorgtsqr_row_work

);
@lapackeobjss = (
    LAPACKE_sgb_nancheck,
    LAPACKE_sgb_trans,
    LAPACKE_sge_nancheck,
    LAPACKE_sge_trans,
    LAPACKE_sgg_nancheck,
    LAPACKE_sgg_trans,
    LAPACKE_sgt_nancheck,
    LAPACKE_shs_nancheck,
    LAPACKE_shs_trans,
    LAPACKE_s_nancheck,
    LAPACKE_spb_nancheck,
    LAPACKE_spb_trans,
    LAPACKE_spf_nancheck,
    LAPACKE_spf_trans,
    LAPACKE_spo_nancheck,
    LAPACKE_spo_trans,
    LAPACKE_spp_nancheck,
    LAPACKE_spp_trans,
    LAPACKE_spt_nancheck,
    LAPACKE_ssb_nancheck,
    LAPACKE_ssb_trans,
    LAPACKE_ssp_nancheck,
    LAPACKE_ssp_trans,
    LAPACKE_sst_nancheck,
    LAPACKE_ssy_nancheck,
    LAPACKE_ssy_trans,
    LAPACKE_stb_nancheck,
    LAPACKE_stb_trans,
    LAPACKE_stf_nancheck,
    LAPACKE_stf_trans,
    LAPACKE_stp_nancheck,
    LAPACKE_stp_trans,
    LAPACKE_str_nancheck,
    LAPACKE_str_trans,
    LAPACKE_sbbcsd,
    LAPACKE_sbbcsd_work,
    LAPACKE_sbdsdc,
    LAPACKE_sbdsdc_work,
    LAPACKE_sbdsqr,
    LAPACKE_sbdsqr_work,
    LAPACKE_sdisna,
    LAPACKE_sdisna_work,
    LAPACKE_sgbbrd,
    LAPACKE_sgbbrd_work,
    LAPACKE_sgbcon,
    LAPACKE_sgbcon_work,
    LAPACKE_sgbequ,
    LAPACKE_sgbequ_work,
    LAPACKE_sgbequb,
    LAPACKE_sgbequb_work,
    LAPACKE_sgbrfs,
    LAPACKE_sgbrfs_work,
    LAPACKE_sgbsv,
    LAPACKE_sgbsv_work,
    LAPACKE_sgbsvx,
    LAPACKE_sgbsvx_work,
    LAPACKE_sgbtrf,
    LAPACKE_sgbtrf_work,
    LAPACKE_sgbtrs,
    LAPACKE_sgbtrs_work,
    LAPACKE_sgebak,
    LAPACKE_sgebak_work,
    LAPACKE_sgebal,
    LAPACKE_sgebal_work,
    LAPACKE_sgebrd,
    LAPACKE_sgebrd_work,
    LAPACKE_sgecon,
    LAPACKE_sgecon_work,
    LAPACKE_sgeequ,
    LAPACKE_sgeequ_work,
    LAPACKE_sgeequb,
    LAPACKE_sgeequb_work,
    LAPACKE_sgees,
    LAPACKE_sgees_work,
    LAPACKE_sgeesx,
    LAPACKE_sgeesx_work,
    LAPACKE_sgeev,
    LAPACKE_sgeev_work,
    LAPACKE_sgeevx,
    LAPACKE_sgeevx_work,
    LAPACKE_sgehrd,
    LAPACKE_sgehrd_work,
    LAPACKE_sgejsv,
    LAPACKE_sgejsv_work,
    LAPACKE_sgelq2,
    LAPACKE_sgelq2_work,
    LAPACKE_sgelqf,
    LAPACKE_sgelqf_work,
    LAPACKE_sgels,
    LAPACKE_sgels_work,
    LAPACKE_sgelsd,
    LAPACKE_sgelsd_work,
    LAPACKE_sgelss,
    LAPACKE_sgelss_work,
    LAPACKE_sgelsy,
    LAPACKE_sgelsy_work,
    LAPACKE_sgemqrt,
    LAPACKE_sgemqrt_work,
    LAPACKE_sgeqlf,
    LAPACKE_sgeqlf_work,
    LAPACKE_sgeqp3,
    LAPACKE_sgeqp3_work,
    LAPACKE_sgeqr2,
    LAPACKE_sgeqr2_work,
    LAPACKE_sgeqrf,
    LAPACKE_sgeqrf_work,
    LAPACKE_sgeqrfp,
    LAPACKE_sgeqrfp_work,
    LAPACKE_sgeqrt,
    LAPACKE_sgeqrt2,
    LAPACKE_sgeqrt2_work,
    LAPACKE_sgeqrt3,
    LAPACKE_sgeqrt3_work,
    LAPACKE_sgeqrt_work,
    LAPACKE_sgerfs,
    LAPACKE_sgerfs_work,
    LAPACKE_sgerqf,
    LAPACKE_sgerqf_work,
    LAPACKE_sgesdd,
    LAPACKE_sgesdd_work,
    LAPACKE_sgesv,
    LAPACKE_sgesv_work,
    LAPACKE_sgesvd,
    LAPACKE_sgesvd_work,
    LAPACKE_sgesvj,
    LAPACKE_sgesvj_work,
    LAPACKE_sgesvx,
    LAPACKE_sgesvx_work,
    LAPACKE_sgetf2,
    LAPACKE_sgetf2_work,
    LAPACKE_sgetrf,
    LAPACKE_sgetrf_work,
    LAPACKE_sgetri,
    LAPACKE_sgetri_work,
    LAPACKE_sgetrs,
    LAPACKE_sgetrs_work,
    LAPACKE_sggbak,
    LAPACKE_sggbak_work,
    LAPACKE_sggbal,
    LAPACKE_sggbal_work,
    LAPACKE_sgges,
    LAPACKE_sgges_work,
    LAPACKE_sggesx,
    LAPACKE_sggesx_work,
    LAPACKE_sggev,
    LAPACKE_sggev_work,
    LAPACKE_sggevx,
    LAPACKE_sggevx_work,
    LAPACKE_sggglm,
    LAPACKE_sggglm_work,
    LAPACKE_sgghrd,
    LAPACKE_sgghrd_work,
    LAPACKE_sgglse,
    LAPACKE_sgglse_work,
    LAPACKE_sggqrf,
    LAPACKE_sggqrf_work,
    LAPACKE_sggrqf,
    LAPACKE_sggrqf_work,
    LAPACKE_sgtcon,
    LAPACKE_sgtcon_work,
    LAPACKE_sgtrfs,
    LAPACKE_sgtrfs_work,
    LAPACKE_sgtsv,
    LAPACKE_sgtsv_work,
    LAPACKE_sgtsvx,
    LAPACKE_sgtsvx_work,
    LAPACKE_sgttrf,
    LAPACKE_sgttrf_work,
    LAPACKE_sgttrs,
    LAPACKE_sgttrs_work,
    LAPACKE_shgeqz,
    LAPACKE_shgeqz_work,
    LAPACKE_shsein,
    LAPACKE_shsein_work,
    LAPACKE_shseqr,
    LAPACKE_shseqr_work,
    LAPACKE_slacn2,
    LAPACKE_slacn2_work,
    LAPACKE_slacpy,
    LAPACKE_slacpy_work,
    LAPACKE_slamch,
    LAPACKE_slamch_work,
    LAPACKE_slange,
    LAPACKE_slange_work,
    LAPACKE_slansy,
    LAPACKE_slansy_work,
    LAPACKE_slantr,
    LAPACKE_slantr_work,
    LAPACKE_slapmr,
    LAPACKE_slapmr_work,
    LAPACKE_slapy2,
    LAPACKE_slapy2_work,
    LAPACKE_slapy3,
    LAPACKE_slapy3_work,
    LAPACKE_slarfb,
    LAPACKE_slarfb_work,
    LAPACKE_slarfg,
    LAPACKE_slarfg_work,
    LAPACKE_slarft,
    LAPACKE_slarft_work,
    LAPACKE_slarfx,
    LAPACKE_slarfx_work,
    LAPACKE_slarnv,
    LAPACKE_slarnv_work,
    LAPACKE_slartgp,
    LAPACKE_slartgp_work,
    LAPACKE_slartgs,
    LAPACKE_slartgs_work,
    LAPACKE_slaset,
    LAPACKE_slaset_work,
    LAPACKE_slasrt,
    LAPACKE_slasrt_work,
    LAPACKE_slaswp,
    LAPACKE_slaswp_work,
    LAPACKE_slauum,
    LAPACKE_slauum_work,
    LAPACKE_sopgtr,
    LAPACKE_sopgtr_work,
    LAPACKE_sopmtr,
    LAPACKE_sopmtr_work,
    LAPACKE_sorbdb,
    LAPACKE_sorbdb_work,
    LAPACKE_sorcsd,
    LAPACKE_sorcsd_work,
    LAPACKE_sorgbr,
    LAPACKE_sorgbr_work,
    LAPACKE_sorghr,
    LAPACKE_sorghr_work,
    LAPACKE_sorglq,
    LAPACKE_sorglq_work,
    LAPACKE_sorgql,
    LAPACKE_sorgql_work,
    LAPACKE_sorgqr,
    LAPACKE_sorgqr_work,
    LAPACKE_sorgrq,
    LAPACKE_sorgrq_work,
    LAPACKE_sorgtr,
    LAPACKE_sorgtr_work,
    LAPACKE_sormbr,
    LAPACKE_sormbr_work,
    LAPACKE_sormhr,
    LAPACKE_sormhr_work,
    LAPACKE_sormlq,
    LAPACKE_sormlq_work,
    LAPACKE_sormql,
    LAPACKE_sormql_work,
    LAPACKE_sormqr,
    LAPACKE_sormqr_work,
    LAPACKE_sormrq,
    LAPACKE_sormrq_work,
    LAPACKE_sormrz,
    LAPACKE_sormrz_work,
    LAPACKE_sormtr,
    LAPACKE_sormtr_work,
    LAPACKE_spbcon,
    LAPACKE_spbcon_work,
    LAPACKE_spbequ,
    LAPACKE_spbequ_work,
    LAPACKE_spbrfs,
    LAPACKE_spbrfs_work,
    LAPACKE_spbstf,
    LAPACKE_spbstf_work,
    LAPACKE_spbsv,
    LAPACKE_spbsv_work,
    LAPACKE_spbsvx,
    LAPACKE_spbsvx_work,
    LAPACKE_spbtrf,
    LAPACKE_spbtrf_work,
    LAPACKE_spbtrs,
    LAPACKE_spbtrs_work,
    LAPACKE_spftrf,
    LAPACKE_spftrf_work,
    LAPACKE_spftri,
    LAPACKE_spftri_work,
    LAPACKE_spftrs,
    LAPACKE_spftrs_work,
    LAPACKE_spocon,
    LAPACKE_spocon_work,
    LAPACKE_spoequ,
    LAPACKE_spoequ_work,
    LAPACKE_spoequb,
    LAPACKE_spoequb_work,
    LAPACKE_sporfs,
    LAPACKE_sporfs_work,
    LAPACKE_sposv,
    LAPACKE_sposv_work,
    LAPACKE_sposvx,
    LAPACKE_sposvx_work,
    LAPACKE_spotrf,
    LAPACKE_spotrf_work,
    LAPACKE_spotri,
    LAPACKE_spotri_work,
    LAPACKE_spotrs,
    LAPACKE_spotrs_work,
    LAPACKE_sppcon,
    LAPACKE_sppcon_work,
    LAPACKE_sppequ,
    LAPACKE_sppequ_work,
    LAPACKE_spprfs,
    LAPACKE_spprfs_work,
    LAPACKE_sppsv,
    LAPACKE_sppsv_work,
    LAPACKE_sppsvx,
    LAPACKE_sppsvx_work,
    LAPACKE_spptrf,
    LAPACKE_spptrf_work,
    LAPACKE_spptri,
    LAPACKE_spptri_work,
    LAPACKE_spptrs,
    LAPACKE_spptrs_work,
    LAPACKE_spstrf,
    LAPACKE_spstrf_work,
    LAPACKE_sptcon,
    LAPACKE_sptcon_work,
    LAPACKE_spteqr,
    LAPACKE_spteqr_work,
    LAPACKE_sptrfs,
    LAPACKE_sptrfs_work,
    LAPACKE_sptsv,
    LAPACKE_sptsv_work,
    LAPACKE_sptsvx,
    LAPACKE_sptsvx_work,
    LAPACKE_spttrf,
    LAPACKE_spttrf_work,
    LAPACKE_spttrs,
    LAPACKE_spttrs_work,
    LAPACKE_ssbev,
    LAPACKE_ssbev_work,
    LAPACKE_ssbevd,
    LAPACKE_ssbevd_work,
    LAPACKE_ssbevx,
    LAPACKE_ssbevx_work,
    LAPACKE_ssbgst,
    LAPACKE_ssbgst_work,
    LAPACKE_ssbgv,
    LAPACKE_ssbgv_work,
    LAPACKE_ssbgvd,
    LAPACKE_ssbgvd_work,
    LAPACKE_ssbgvx,
    LAPACKE_ssbgvx_work,
    LAPACKE_ssbtrd,
    LAPACKE_ssbtrd_work,
    LAPACKE_ssfrk,
    LAPACKE_ssfrk_work,
    LAPACKE_sspcon,
    LAPACKE_sspcon_work,
    LAPACKE_sspev,
    LAPACKE_sspev_work,
    LAPACKE_sspevd,
    LAPACKE_sspevd_work,
    LAPACKE_sspevx,
    LAPACKE_sspevx_work,
    LAPACKE_sspgst,
    LAPACKE_sspgst_work,
    LAPACKE_sspgv,
    LAPACKE_sspgv_work,
    LAPACKE_sspgvd,
    LAPACKE_sspgvd_work,
    LAPACKE_sspgvx,
    LAPACKE_sspgvx_work,
    LAPACKE_ssprfs,
    LAPACKE_ssprfs_work,
    LAPACKE_sspsv,
    LAPACKE_sspsv_work,
    LAPACKE_sspsvx,
    LAPACKE_sspsvx_work,
    LAPACKE_ssptrd,
    LAPACKE_ssptrd_work,
    LAPACKE_ssptrf,
    LAPACKE_ssptrf_work,
    LAPACKE_ssptri,
    LAPACKE_ssptri_work,
    LAPACKE_ssptrs,
    LAPACKE_ssptrs_work,
    LAPACKE_sstebz,
    LAPACKE_sstebz_work,
    LAPACKE_sstedc,
    LAPACKE_sstedc_work,
    LAPACKE_sstegr,
    LAPACKE_sstegr_work,
    LAPACKE_sstein,
    LAPACKE_sstein_work,
    LAPACKE_sstemr,
    LAPACKE_sstemr_work,
    LAPACKE_ssteqr,
    LAPACKE_ssteqr_work,
    LAPACKE_ssterf,
    LAPACKE_ssterf_work,
    LAPACKE_sstev,
    LAPACKE_sstev_work,
    LAPACKE_sstevd,
    LAPACKE_sstevd_work,
    LAPACKE_sstevr,
    LAPACKE_sstevr_work,
    LAPACKE_sstevx,
    LAPACKE_sstevx_work,
    LAPACKE_ssycon,
    LAPACKE_ssycon_work,
    LAPACKE_ssyconv,
    LAPACKE_ssyconv_work,
    LAPACKE_ssyequb,
    LAPACKE_ssyequb_work,
    LAPACKE_ssyev,
    LAPACKE_ssyev_work,
    LAPACKE_ssyevd,
    LAPACKE_ssyevd_work,
    LAPACKE_ssyevr,
    LAPACKE_ssyevr_work,
    LAPACKE_ssyevx,
    LAPACKE_ssyevx_work,
    LAPACKE_ssygst,
    LAPACKE_ssygst_work,
    LAPACKE_ssygv,
    LAPACKE_ssygv_work,
    LAPACKE_ssygvd,
    LAPACKE_ssygvd_work,
    LAPACKE_ssygvx,
    LAPACKE_ssygvx_work,
    LAPACKE_ssyrfs,
    LAPACKE_ssyrfs_work,
    LAPACKE_ssysv,
    LAPACKE_ssysv_rook,
    LAPACKE_ssysv_rook_work,
    LAPACKE_ssysv_work,
    LAPACKE_ssysvx,
    LAPACKE_ssysvx_work,
    LAPACKE_ssyswapr,
    LAPACKE_ssyswapr_work,
    LAPACKE_ssytrd,
    LAPACKE_ssytrd_work,
    LAPACKE_ssytrf,
    LAPACKE_ssytrf_work,
    LAPACKE_ssytri,
    LAPACKE_ssytri2,
    LAPACKE_ssytri2_work,
    LAPACKE_ssytri2x,
    LAPACKE_ssytri2x_work,
    LAPACKE_ssytri_work,
    LAPACKE_ssytrs,
    LAPACKE_ssytrs2,
    LAPACKE_ssytrs2_work,
    LAPACKE_ssytrs_work,
    LAPACKE_stbcon,
    LAPACKE_stbcon_work,
    LAPACKE_stbrfs,
    LAPACKE_stbrfs_work,
    LAPACKE_stbtrs,
    LAPACKE_stbtrs_work,
    LAPACKE_stfsm,
    LAPACKE_stfsm_work,
    LAPACKE_stftri,
    LAPACKE_stftri_work,
    LAPACKE_stfttp,
    LAPACKE_stfttp_work,
    LAPACKE_stfttr,
    LAPACKE_stfttr_work,
    LAPACKE_stgevc,
    LAPACKE_stgevc_work,
    LAPACKE_stgexc,
    LAPACKE_stgexc_work,
    LAPACKE_stgsen,
    LAPACKE_stgsen_work,
    LAPACKE_stgsja,
    LAPACKE_stgsja_work,
    LAPACKE_stgsna,
    LAPACKE_stgsna_work,
    LAPACKE_stgsyl,
    LAPACKE_stgsyl_work,
    LAPACKE_stpcon,
    LAPACKE_stpcon_work,
    LAPACKE_stpmqrt,
    LAPACKE_stpmqrt_work,
    LAPACKE_stpqrt2,
    LAPACKE_stpqrt2_work,
    LAPACKE_stprfb,
    LAPACKE_stprfb_work,
    LAPACKE_stprfs,
    LAPACKE_stprfs_work,
    LAPACKE_stptri,
    LAPACKE_stptri_work,
    LAPACKE_stptrs,
    LAPACKE_stptrs_work,
    LAPACKE_stpttf,
    LAPACKE_stpttf_work,
    LAPACKE_stpttr,
    LAPACKE_stpttr_work,
    LAPACKE_strcon,
    LAPACKE_strcon_work,
    LAPACKE_strevc,
    LAPACKE_strevc_work,
    LAPACKE_strexc,
    LAPACKE_strexc_work,
    LAPACKE_strrfs,
    LAPACKE_strrfs_work,
    LAPACKE_strsen,
    LAPACKE_strsen_work,
    LAPACKE_strsna,
    LAPACKE_strsna_work,
    LAPACKE_strsyl,
    LAPACKE_strsyl_work,
    LAPACKE_strtri,
    LAPACKE_strtri_work,
    LAPACKE_strtrs,
    LAPACKE_strtrs_work,
    LAPACKE_strttf,
    LAPACKE_strttf_work,
    LAPACKE_strttp,
    LAPACKE_strttp_work,
    LAPACKE_stzrzf,
    LAPACKE_stzrzf_work,
    LAPACKE_slatms,
    LAPACKE_slatms_work,
    LAPACKE_slagge,
    LAPACKE_slagge_work,
    LAPACKE_slagsy,
    LAPACKE_slagsy_work,
    LAPACKE_sbdsvdx,
    LAPACKE_sbdsvdx_work,
    LAPACKE_sgesvdx,
    LAPACKE_sgesvdx_work,
    LAPACKE_sgetrf2,
    LAPACKE_sgetrf2_work,
    LAPACKE_sgges3,
    LAPACKE_sgges3_work,
    LAPACKE_sggev3,
    LAPACKE_sggev3_work,
    LAPACKE_sgghd3,
    LAPACKE_sgghd3_work,
    LAPACKE_sggsvd3,
    LAPACKE_sggsvd3_work,
    LAPACKE_sggsvp3,
    LAPACKE_sggsvp3_work,
    LAPACKE_slapmt,
    LAPACKE_slapmt_work,
    LAPACKE_slascl,
    LAPACKE_slascl_work,
    LAPACKE_sorcsd2by1,
    LAPACKE_sorcsd2by1_work,
    LAPACKE_spotrf2,
    LAPACKE_spotrf2_work,
    LAPACKE_ssytrf_rook,
    LAPACKE_ssytrf_rook_work,
    LAPACKE_ssytrs_rook,
    LAPACKE_ssytrs_rook_work,
    LAPACKE_stpqrt,
    LAPACKE_stpqrt_work,
    LAPACKE_sgelq,
    LAPACKE_sgelq_work,
    LAPACKE_sgemlq,
    LAPACKE_sgemlq_work,
    LAPACKE_sgemqr,
    LAPACKE_sgemqr_work,
    LAPACKE_sgeqr,
    LAPACKE_sgeqr_work,
    LAPACKE_sgetsls,
    LAPACKE_sgetsls_work,
    LAPACKE_ssbev_2stage,
    LAPACKE_ssbev_2stage_work,
    LAPACKE_ssbevd_2stage,
    LAPACKE_ssbevd_2stage_work,
    LAPACKE_ssbevx_2stage,
    LAPACKE_ssbevx_2stage_work,
    LAPACKE_ssycon_3,
    LAPACKE_ssycon_3_work,
    LAPACKE_ssyev_2stage,
    LAPACKE_ssyev_2stage_work,
    LAPACKE_ssyevd_2stage,
    LAPACKE_ssyevd_2stage_work,
    LAPACKE_ssyevr_2stage,
    LAPACKE_ssyevr_2stage_work,
    LAPACKE_ssyevx_2stage,
    LAPACKE_ssyevx_2stage_work,
    LAPACKE_ssygv_2stage,
    LAPACKE_ssygv_2stage_work,
    LAPACKE_ssysv_aa,
    LAPACKE_ssysv_aa_work,
    LAPACKE_ssysv_rk,
    LAPACKE_ssysv_rk_work,
    LAPACKE_ssytrf_aa,
    LAPACKE_ssytrf_aa_work,
    LAPACKE_ssytrf_rk,
    LAPACKE_ssytrf_rk_work,
    LAPACKE_ssytri_3,
    LAPACKE_ssytri_3_work,
    LAPACKE_ssytrs_aa,
    LAPACKE_ssytrs_aa_work,
    LAPACKE_ssytrs_3,
    LAPACKE_ssytrs_3_work,
    LAPACKE_slassq,
    LAPACKE_slassq_work,
    LAPACKE_ssysv_aa_2stage,
    LAPACKE_ssysv_aa_2stage_work,
    LAPACKE_ssytrf_aa_2stage,
    LAPACKE_ssytrf_aa_2stage_work,
    LAPACKE_ssytrs_aa_2stage,
    LAPACKE_ssytrs_aa_2stage_work,
    LAPACKE_sgesvdq,
    LAPACKE_sgesvdq_work,
    LAPACKE_sgetsqrhrt,
    LAPACKE_sgetsqrhrt_work,
    LAPACKE_sorgtsqr_row,
    LAPACKE_sorgtsqr_row_work

);
@lapackeobjsz = (    
    LAPACKE_zgb_nancheck,
    LAPACKE_zgb_trans,
    LAPACKE_zge_nancheck,
    LAPACKE_zge_trans,
    LAPACKE_zgg_nancheck,
    LAPACKE_zgg_trans,
    LAPACKE_zgt_nancheck,
    LAPACKE_zhb_nancheck,
    LAPACKE_zhb_trans,
    LAPACKE_zhe_nancheck,
    LAPACKE_zhe_trans,
    LAPACKE_zhp_nancheck,
    LAPACKE_zhp_trans,
    LAPACKE_zhs_nancheck,
    LAPACKE_zhs_trans,
    LAPACKE_z_nancheck,
    LAPACKE_zpb_nancheck,
    LAPACKE_zpb_trans,
    LAPACKE_zpf_nancheck,
    LAPACKE_zpf_trans,
    LAPACKE_zpo_nancheck,
    LAPACKE_zpo_trans,
    LAPACKE_zpp_nancheck,
    LAPACKE_zpp_trans,
    LAPACKE_zpt_nancheck,
    LAPACKE_zsp_nancheck,
    LAPACKE_zsp_trans,
    LAPACKE_zst_nancheck,
    LAPACKE_zsy_nancheck,
    LAPACKE_zsy_trans,
    LAPACKE_ztb_nancheck,
    LAPACKE_ztb_trans,
    LAPACKE_ztf_nancheck,
    LAPACKE_ztf_trans,
    LAPACKE_ztp_nancheck,
    LAPACKE_ztp_trans,
    LAPACKE_ztr_nancheck,
    LAPACKE_ztr_trans,
    LAPACKE_zbbcsd,
    LAPACKE_zbbcsd_work,
    LAPACKE_zbdsqr,
    LAPACKE_zbdsqr_work,
    LAPACKE_zcgesv,
    LAPACKE_zcgesv_work,
    LAPACKE_zcposv,
    LAPACKE_zcposv_work,
    LAPACKE_zgbbrd,
    LAPACKE_zgbbrd_work,
    LAPACKE_zgbcon,
    LAPACKE_zgbcon_work,
    LAPACKE_zgbequ,
    LAPACKE_zgbequ_work,
    LAPACKE_zgbequb,
    LAPACKE_zgbequb_work,
    LAPACKE_zgbrfs,
    LAPACKE_zgbrfs_work,
    LAPACKE_zgbsv,
    LAPACKE_zgbsv_work,
    LAPACKE_zgbsvx,
    LAPACKE_zgbsvx_work,
    LAPACKE_zgbtrf,
    LAPACKE_zgbtrf_work,
    LAPACKE_zgbtrs,
    LAPACKE_zgbtrs_work,
    LAPACKE_zgebak,
    LAPACKE_zgebak_work,
    LAPACKE_zgebal,
    LAPACKE_zgebal_work,
    LAPACKE_zgebrd,
    LAPACKE_zgebrd_work,
    LAPACKE_zgecon,
    LAPACKE_zgecon_work,
    LAPACKE_zgeequ,
    LAPACKE_zgeequ_work,
    LAPACKE_zgeequb,
    LAPACKE_zgeequb_work,
    LAPACKE_zgees,
    LAPACKE_zgees_work,
    LAPACKE_zgeesx,
    LAPACKE_zgeesx_work,
    LAPACKE_zgeev,
    LAPACKE_zgeev_work,
    LAPACKE_zgeevx,
    LAPACKE_zgeevx_work,
    LAPACKE_zgehrd,
    LAPACKE_zgehrd_work,
    LAPACKE_zgelq2,
    LAPACKE_zgelq2_work,
    LAPACKE_zgelqf,
    LAPACKE_zgelqf_work,
    LAPACKE_zgels,
    LAPACKE_zgels_work,
    LAPACKE_zgelsd,
    LAPACKE_zgelsd_work,
    LAPACKE_zgelss,
    LAPACKE_zgelss_work,
    LAPACKE_zgelsy,
    LAPACKE_zgelsy_work,
    LAPACKE_zgemqrt,
    LAPACKE_zgemqrt_work,
    LAPACKE_zgeqlf,
    LAPACKE_zgeqlf_work,
    LAPACKE_zgeqp3,
    LAPACKE_zgeqp3_work,
    LAPACKE_zgeqr2,
    LAPACKE_zgeqr2_work,
    LAPACKE_zgeqrf,
    LAPACKE_zgeqrf_work,
    LAPACKE_zgeqrfp,
    LAPACKE_zgeqrfp_work,
    LAPACKE_zgeqrt,
    LAPACKE_zgeqrt2,
    LAPACKE_zgeqrt2_work,
    LAPACKE_zgeqrt3,
    LAPACKE_zgeqrt3_work,
    LAPACKE_zgeqrt_work,
    LAPACKE_zgerfs,
    LAPACKE_zgerfs_work,
    LAPACKE_zgerqf,
    LAPACKE_zgerqf_work,
    LAPACKE_zgesdd,
    LAPACKE_zgesdd_work,
    LAPACKE_zgesv,
    LAPACKE_zgesv_work,
    LAPACKE_zgesvd,
    LAPACKE_zgesvd_work,
    LAPACKE_zgesvx,
    LAPACKE_zgesvx_work,
    LAPACKE_zgetf2,
    LAPACKE_zgetf2_work,
    LAPACKE_zgetrf,
    LAPACKE_zgetrf_work,
    LAPACKE_zgetri,
    LAPACKE_zgetri_work,
    LAPACKE_zgetrs,
    LAPACKE_zgetrs_work,
    LAPACKE_zggbak,
    LAPACKE_zggbak_work,
    LAPACKE_zggbal,
    LAPACKE_zggbal_work,
    LAPACKE_zgges,
    LAPACKE_zgges_work,
    LAPACKE_zggesx,
    LAPACKE_zggesx_work,
    LAPACKE_zggev,
    LAPACKE_zggev_work,
    LAPACKE_zggevx,
    LAPACKE_zggevx_work,
    LAPACKE_zggglm,
    LAPACKE_zggglm_work,
    LAPACKE_zgghrd,
    LAPACKE_zgghrd_work,
    LAPACKE_zgglse,
    LAPACKE_zgglse_work,
    LAPACKE_zggqrf,
    LAPACKE_zggqrf_work,
    LAPACKE_zggrqf,
    LAPACKE_zggrqf_work,
    LAPACKE_zgtcon,
    LAPACKE_zgtcon_work,
    LAPACKE_zgtrfs,
    LAPACKE_zgtrfs_work,
    LAPACKE_zgtsv,
    LAPACKE_zgtsv_work,
    LAPACKE_zgtsvx,
    LAPACKE_zgtsvx_work,
    LAPACKE_zgttrf,
    LAPACKE_zgttrf_work,
    LAPACKE_zgttrs,
    LAPACKE_zgttrs_work,
    LAPACKE_zhbev,
    LAPACKE_zhbev_work,
    LAPACKE_zhbevd,
    LAPACKE_zhbevd_work,
    LAPACKE_zhbevx,
    LAPACKE_zhbevx_work,
    LAPACKE_zhbgst,
    LAPACKE_zhbgst_work,
    LAPACKE_zhbgv,
    LAPACKE_zhbgv_work,
    LAPACKE_zhbgvd,
    LAPACKE_zhbgvd_work,
    LAPACKE_zhbgvx,
    LAPACKE_zhbgvx_work,
    LAPACKE_zhbtrd,
    LAPACKE_zhbtrd_work,
    LAPACKE_zhecon,
    LAPACKE_zhecon_work,
    LAPACKE_zheequb,
    LAPACKE_zheequb_work,
    LAPACKE_zheev,
    LAPACKE_zheev_work,
    LAPACKE_zheevd,
    LAPACKE_zheevd_work,
    LAPACKE_zheevr,
    LAPACKE_zheevr_work,
    LAPACKE_zheevx,
    LAPACKE_zheevx_work,
    LAPACKE_zhegst,
    LAPACKE_zhegst_work,
    LAPACKE_zhegv,
    LAPACKE_zhegv_work,
    LAPACKE_zhegvd,
    LAPACKE_zhegvd_work,
    LAPACKE_zhegvx,
    LAPACKE_zhegvx_work,
    LAPACKE_zherfs,
    LAPACKE_zherfs_work,
    LAPACKE_zhesv,
    LAPACKE_zhesv_work,
    LAPACKE_zhesvx,
    LAPACKE_zhesvx_work,
    LAPACKE_zheswapr,
    LAPACKE_zheswapr_work,
    LAPACKE_zhetrd,
    LAPACKE_zhetrd_work,
    LAPACKE_zhetrf,
    LAPACKE_zhetrf_work,
    LAPACKE_zhetri,
    LAPACKE_zhetri2,
    LAPACKE_zhetri2_work,
    LAPACKE_zhetri2x,
    LAPACKE_zhetri2x_work,
    LAPACKE_zhetri_work,
    LAPACKE_zhetrs,
    LAPACKE_zhetrs2,
    LAPACKE_zhetrs2_work,
    LAPACKE_zhetrs_work,
    LAPACKE_zhfrk,
    LAPACKE_zhfrk_work,
    LAPACKE_zhgeqz,
    LAPACKE_zhgeqz_work,
    LAPACKE_zhpcon,
    LAPACKE_zhpcon_work,
    LAPACKE_zhpev,
    LAPACKE_zhpev_work,
    LAPACKE_zhpevd,
    LAPACKE_zhpevd_work,
    LAPACKE_zhpevx,
    LAPACKE_zhpevx_work,
    LAPACKE_zhpgst,
    LAPACKE_zhpgst_work,
    LAPACKE_zhpgv,
    LAPACKE_zhpgv_work,
    LAPACKE_zhpgvd,
    LAPACKE_zhpgvd_work,
    LAPACKE_zhpgvx,
    LAPACKE_zhpgvx_work,
    LAPACKE_zhprfs,
    LAPACKE_zhprfs_work,
    LAPACKE_zhpsv,
    LAPACKE_zhpsv_work,
    LAPACKE_zhpsvx,
    LAPACKE_zhpsvx_work,
    LAPACKE_zhptrd,
    LAPACKE_zhptrd_work,
    LAPACKE_zhptrf,
    LAPACKE_zhptrf_work,
    LAPACKE_zhptri,
    LAPACKE_zhptri_work,
    LAPACKE_zhptrs,
    LAPACKE_zhptrs_work,
    LAPACKE_zhsein,
    LAPACKE_zhsein_work,
    LAPACKE_zhseqr,
    LAPACKE_zhseqr_work,
    LAPACKE_zlacgv,
    LAPACKE_zlacgv_work,
    LAPACKE_zlacn2,
    LAPACKE_zlacn2_work,
    LAPACKE_zlacp2,
    LAPACKE_zlacp2_work,
    LAPACKE_zlacpy,
    LAPACKE_zlacpy_work,
    LAPACKE_zlag2c,
    LAPACKE_zlag2c_work,
    LAPACKE_zlange,
    LAPACKE_zlange_work,
    LAPACKE_zlanhe,
    LAPACKE_zlanhe_work,
    LAPACKE_zlansy,
    LAPACKE_zlansy_work,
    LAPACKE_zlantr,
    LAPACKE_zlantr_work,
    LAPACKE_zlapmr,
    LAPACKE_zlapmr_work,
    LAPACKE_zlarfb,
    LAPACKE_zlarfb_work,
    LAPACKE_zlarfg,
    LAPACKE_zlarfg_work,
    LAPACKE_zlarft,
    LAPACKE_zlarft_work,
    LAPACKE_zlarfx,
    LAPACKE_zlarfx_work,
    LAPACKE_zlarnv,
    LAPACKE_zlarnv_work,
    LAPACKE_zlaset,
    LAPACKE_zlaset_work,
    LAPACKE_zlaswp,
    LAPACKE_zlaswp_work,
    LAPACKE_zlauum,
    LAPACKE_zlauum_work,
    LAPACKE_zpbcon,
    LAPACKE_zpbcon_work,
    LAPACKE_zpbequ,
    LAPACKE_zpbequ_work,
    LAPACKE_zpbrfs,
    LAPACKE_zpbrfs_work,
    LAPACKE_zpbstf,
    LAPACKE_zpbstf_work,
    LAPACKE_zpbsv,
    LAPACKE_zpbsv_work,
    LAPACKE_zpbsvx,
    LAPACKE_zpbsvx_work,
    LAPACKE_zpbtrf,
    LAPACKE_zpbtrf_work,
    LAPACKE_zpbtrs,
    LAPACKE_zpbtrs_work,
    LAPACKE_zpftrf,
    LAPACKE_zpftrf_work,
    LAPACKE_zpftri,
    LAPACKE_zpftri_work,
    LAPACKE_zpftrs,
    LAPACKE_zpftrs_work,
    LAPACKE_zpocon,
    LAPACKE_zpocon_work,
    LAPACKE_zpoequ,
    LAPACKE_zpoequ_work,
    LAPACKE_zpoequb,
    LAPACKE_zpoequb_work,
    LAPACKE_zporfs,
    LAPACKE_zporfs_work,
    LAPACKE_zposv,
    LAPACKE_zposv_work,
    LAPACKE_zposvx,
    LAPACKE_zposvx_work,
    LAPACKE_zpotrf,
    LAPACKE_zpotrf_work,
    LAPACKE_zpotri,
    LAPACKE_zpotri_work,
    LAPACKE_zpotrs,
    LAPACKE_zpotrs_work,
    LAPACKE_zppcon,
    LAPACKE_zppcon_work,
    LAPACKE_zppequ,
    LAPACKE_zppequ_work,
    LAPACKE_zpprfs,
    LAPACKE_zpprfs_work,
    LAPACKE_zppsv,
    LAPACKE_zppsv_work,
    LAPACKE_zppsvx,
    LAPACKE_zppsvx_work,
    LAPACKE_zpptrf,
    LAPACKE_zpptrf_work,
    LAPACKE_zpptri,
    LAPACKE_zpptri_work,
    LAPACKE_zpptrs,
    LAPACKE_zpptrs_work,
    LAPACKE_zpstrf,
    LAPACKE_zpstrf_work,
    LAPACKE_zptcon,
    LAPACKE_zptcon_work,
    LAPACKE_zpteqr,
    LAPACKE_zpteqr_work,
    LAPACKE_zptrfs,
    LAPACKE_zptrfs_work,
    LAPACKE_zptsv,
    LAPACKE_zptsv_work,
    LAPACKE_zptsvx,
    LAPACKE_zptsvx_work,
    LAPACKE_zpttrf,
    LAPACKE_zpttrf_work,
    LAPACKE_zpttrs,
    LAPACKE_zpttrs_work,
    LAPACKE_zspcon,
    LAPACKE_zspcon_work,
    LAPACKE_zsprfs,
    LAPACKE_zsprfs_work,
    LAPACKE_zspsv,
    LAPACKE_zspsv_work,
    LAPACKE_zspsvx,
    LAPACKE_zspsvx_work,
    LAPACKE_zsptrf,
    LAPACKE_zsptrf_work,
    LAPACKE_zsptri,
    LAPACKE_zsptri_work,
    LAPACKE_zsptrs,
    LAPACKE_zsptrs_work,
    LAPACKE_zstedc,
    LAPACKE_zstedc_work,
    LAPACKE_zstegr,
    LAPACKE_zstegr_work,
    LAPACKE_zstein,
    LAPACKE_zstein_work,
    LAPACKE_zstemr,
    LAPACKE_zstemr_work,
    LAPACKE_zsteqr,
    LAPACKE_zsteqr_work,
    LAPACKE_zsycon,
    LAPACKE_zsycon_work,
    LAPACKE_zsyconv,
    LAPACKE_zsyconv_work,
    LAPACKE_zsyequb,
    LAPACKE_zsyequb_work,
    LAPACKE_zsyrfs,
    LAPACKE_zsyrfs_work,
    LAPACKE_zsysv,
    LAPACKE_zsysv_rook,
    LAPACKE_zsysv_rook_work,
    LAPACKE_zsysv_work,
    LAPACKE_zsysvx,
    LAPACKE_zsysvx_work,
    LAPACKE_zsyswapr,
    LAPACKE_zsyswapr_work,
    LAPACKE_zsytrf,
    LAPACKE_zsytrf_work,
    LAPACKE_zsytri,
    LAPACKE_zsytri2,
    LAPACKE_zsytri2_work,
    LAPACKE_zsytri2x,
    LAPACKE_zsytri2x_work,
    LAPACKE_zsytri_work,
    LAPACKE_zsytrs,
    LAPACKE_zsytrs2,
    LAPACKE_zsytrs2_work,
    LAPACKE_zsytrs_work,
    LAPACKE_ztbcon,
    LAPACKE_ztbcon_work,
    LAPACKE_ztbrfs,
    LAPACKE_ztbrfs_work,
    LAPACKE_ztbtrs,
    LAPACKE_ztbtrs_work,
    LAPACKE_ztfsm,
    LAPACKE_ztfsm_work,
    LAPACKE_ztftri,
    LAPACKE_ztftri_work,
    LAPACKE_ztfttp,
    LAPACKE_ztfttp_work,
    LAPACKE_ztfttr,
    LAPACKE_ztfttr_work,
    LAPACKE_ztgevc,
    LAPACKE_ztgevc_work,
    LAPACKE_ztgexc,
    LAPACKE_ztgexc_work,
    LAPACKE_ztgsen,
    LAPACKE_ztgsen_work,
    LAPACKE_ztgsja,
    LAPACKE_ztgsja_work,
    LAPACKE_ztgsna,
    LAPACKE_ztgsna_work,
    LAPACKE_ztgsyl,
    LAPACKE_ztgsyl_work,
    LAPACKE_ztpcon,
    LAPACKE_ztpcon_work,
    LAPACKE_ztpmqrt,
    LAPACKE_ztpmqrt_work,
    LAPACKE_ztpqrt,
    LAPACKE_ztpqrt2,
    LAPACKE_ztpqrt2_work,
    LAPACKE_ztpqrt_work,
    LAPACKE_ztprfb,
    LAPACKE_ztprfb_work,
    LAPACKE_ztprfs,
    LAPACKE_ztprfs_work,
    LAPACKE_ztptri,
    LAPACKE_ztptri_work,
    LAPACKE_ztptrs,
    LAPACKE_ztptrs_work,
    LAPACKE_ztpttf,
    LAPACKE_ztpttf_work,
    LAPACKE_ztpttr,
    LAPACKE_ztpttr_work,
    LAPACKE_ztrcon,
    LAPACKE_ztrcon_work,
    LAPACKE_ztrevc,
    LAPACKE_ztrevc_work,
    LAPACKE_ztrexc,
    LAPACKE_ztrexc_work,
    LAPACKE_ztrrfs,
    LAPACKE_ztrrfs_work,
    LAPACKE_ztrsen,
    LAPACKE_ztrsen_work,
    LAPACKE_ztrsna,
    LAPACKE_ztrsna_work,
    LAPACKE_ztrsyl,
    LAPACKE_ztrsyl_work,
    LAPACKE_ztrtri,
    LAPACKE_ztrtri_work,
    LAPACKE_ztrtrs,
    LAPACKE_ztrtrs_work,
    LAPACKE_ztrttf,
    LAPACKE_ztrttf_work,
    LAPACKE_ztrttp,
    LAPACKE_ztrttp_work,
    LAPACKE_ztzrzf,
    LAPACKE_ztzrzf_work,
    LAPACKE_zunbdb,
    LAPACKE_zunbdb_work,
    LAPACKE_zuncsd,
    LAPACKE_zuncsd_work,
    LAPACKE_zungbr,
    LAPACKE_zungbr_work,
    LAPACKE_zunghr,
    LAPACKE_zunghr_work,
    LAPACKE_zunglq,
    LAPACKE_zunglq_work,
    LAPACKE_zungql,
    LAPACKE_zungql_work,
    LAPACKE_zungqr,
    LAPACKE_zungqr_work,
    LAPACKE_zungrq,
    LAPACKE_zungrq_work,
    LAPACKE_zungtr,
    LAPACKE_zungtr_work,
    LAPACKE_zunmbr,
    LAPACKE_zunmbr_work,
    LAPACKE_zunmhr,
    LAPACKE_zunmhr_work,
    LAPACKE_zunmlq,
    LAPACKE_zunmlq_work,
    LAPACKE_zunmql,
    LAPACKE_zunmql_work,
    LAPACKE_zunmqr,
    LAPACKE_zunmqr_work,
    LAPACKE_zunmrq,
    LAPACKE_zunmrq_work,
    LAPACKE_zunmrz,
    LAPACKE_zunmrz_work,
    LAPACKE_zunmtr,
    LAPACKE_zunmtr_work,
    LAPACKE_zupgtr,
    LAPACKE_zupgtr_work,
    LAPACKE_zupmtr,
    LAPACKE_zupmtr_work,
    LAPACKE_zsyr,
    LAPACKE_zsyr_work,
    LAPACKE_zgetsqrhrt,
    LAPACKE_zgetsqrhrt_work,
    LAPACKE_zungtsqr_row,
    LAPACKE_zungtsqr_row_work

    ## @(SRCX_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
    ## Not exported: requires LAPACKE_EXTENDED to be set and depends on the
    ##               corresponding LAPACK extended precision routines.
    #LAPACKE_cgbrfsx,
    #LAPACKE_cporfsx,
    #LAPACKE_dgerfsx,
    #LAPACKE_sgbrfsx,
    #LAPACKE_ssyrfsx,
    #LAPACKE_zherfsx,
    #LAPACKE_cgbrfsx_work,
    #LAPACKE_cporfsx_work,
    #LAPACKE_dgerfsx_work,
    #LAPACKE_sgbrfsx_work,
    #LAPACKE_ssyrfsx_work,
    #LAPACKE_zherfsx_work,
    #LAPACKE_cgerfsx,
    #LAPACKE_csyrfsx,
    #LAPACKE_dporfsx,
    #LAPACKE_sgerfsx,
    #LAPACKE_zgbrfsx,
    #LAPACKE_zporfsx,
    #LAPACKE_cgerfsx_work,
    #LAPACKE_csyrfsx_work,
    #LAPACKE_dporfsx_work,
    #LAPACKE_sgerfsx_work,
    #LAPACKE_zgbrfsx_work,
    #LAPACKE_zporfsx_work,
    #LAPACKE_cherfsx,
    #LAPACKE_dgbrfsx,
    #LAPACKE_dsyrfsx,
    #LAPACKE_sporfsx,
    #LAPACKE_zgerfsx,
    #LAPACKE_zsyrfsx,
    #LAPACKE_cherfsx_work,
    #LAPACKE_dgbrfsx_work,
    #LAPACKE_dsyrfsx_work,
    #LAPACKE_sporfsx_work,
    #LAPACKE_zgerfsx_work,
    #LAPACKE_zsyrfsx_work,
    #LAPACKE_cgbsvxx,
    #LAPACKE_cposvxx,
    #LAPACKE_dgesvxx,
    #LAPACKE_sgbsvxx,
    #LAPACKE_ssysvxx,
    #LAPACKE_zhesvxx,
    #LAPACKE_cgbsvxx_work,
    #LAPACKE_cposvxx_work,
    #LAPACKE_dgesvxx_work,
    #LAPACKE_sgbsvxx_work,
    #LAPACKE_ssysvxx_work,
    #LAPACKE_zhesvxx_work,
    #LAPACKE_cgesvxx,
    #LAPACKE_csysvxx,
    #LAPACKE_dposvxx,
    #LAPACKE_sgesvxx,
    #LAPACKE_zgbsvxx,
    #LAPACKE_zposvxx,
    #LAPACKE_cgesvxx_work,
    #LAPACKE_csysvxx_work,
    #LAPACKE_dposvxx_work,
    #LAPACKE_sgesvxx_work,
    #LAPACKE_zgbsvxx_work,
    #LAPACKE_zposvxx_work,
    #LAPACKE_chesvxx,
    #LAPACKE_dgbsvxx,
    #LAPACKE_dsysvxx,
    #LAPACKE_sposvxx,
    #LAPACKE_zgesvxx,
    #LAPACKE_zsysvxx,
    #LAPACKE_chesvxx_work,
    #LAPACKE_dgbsvxx_work,
    #LAPACKE_dsysvxx_work,
    #LAPACKE_sposvxx_work,
    #LAPACKE_zgesvxx_work,
    #LAPACKE_zsysvxx_work,

    ## @(MATGEN_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
    ## Not exported: requires LAPACKE_TESTING to be set and depends on libtmg
    ##               (see `lapack-3.4.1/TESTING/MATGEN`).
    LAPACKE_zlatms,
    LAPACKE_zlatms_work,
    LAPACKE_zlagge,
    LAPACKE_zlagge_work,
    LAPACKE_zlaghe,
    LAPACKE_zlaghe_work,
    LAPACKE_zlagsy,
    LAPACKE_zlagsy_work,
    ## new function from lapack-3.6.0
    LAPACKE_zgejsv,
    LAPACKE_zgejsv_work,
    LAPACKE_zgesvdx,
    LAPACKE_zgesvdx_work,
    LAPACKE_zgesvj,
    LAPACKE_zgesvj_work,
    LAPACKE_zgetrf2,
    LAPACKE_zgetrf2_work,
    LAPACKE_zgges3,
    LAPACKE_zgges3_work,
    LAPACKE_zggev3,
    LAPACKE_zggev3_work,
    LAPACKE_zgghd3,
    LAPACKE_zgghd3_work,
    LAPACKE_zggsvd3,
    LAPACKE_zggsvd3_work,
    LAPACKE_zggsvp3,
    LAPACKE_zggsvp3_work,
    LAPACKE_zhetrf_rook,
    LAPACKE_zhetrf_rook_work,
    LAPACKE_zhetrs_rook,
    LAPACKE_zhetrs_rook_work,
    LAPACKE_zlapmt,
    LAPACKE_zlapmt_work,
    LAPACKE_zlascl,
    LAPACKE_zlascl_work,
    LAPACKE_zpotrf2,
    LAPACKE_zpotrf2_work,
    LAPACKE_zsytrf_rook,
    LAPACKE_zsytrf_rook_work,
    LAPACKE_zsytrs_rook,
    LAPACKE_zsytrs_rook_work,
    LAPACKE_zuncsd2by1,
    LAPACKE_zuncsd2by1_work,

    ## new function from lapack-3.7.0
    LAPACKE_zgelq,
    LAPACKE_zgelq_work,
    LAPACKE_zgemlq,
    LAPACKE_zgemlq_work,
    LAPACKE_zgemqr,
    LAPACKE_zgemqr_work,
    LAPACKE_zgeqr,
    LAPACKE_zgeqr_work,
    LAPACKE_zgetsls,
    LAPACKE_zgetsls_work,
    LAPACKE_zhbev_2stage,
    LAPACKE_zhbev_2stage_work,
    LAPACKE_zhbevd_2stage,
    LAPACKE_zhbevd_2stage_work,
    LAPACKE_zhbevx_2stage,
    LAPACKE_zhbevx_2stage_work,
    LAPACKE_zhecon_3,
    LAPACKE_zhecon_3_work,
    LAPACKE_zheev_2stage,
    LAPACKE_zheev_2stage_work,
    LAPACKE_zheevd_2stage,
    LAPACKE_zheevd_2stage_work,
    LAPACKE_zheevr_2stage,
    LAPACKE_zheevr_2stage_work,
    LAPACKE_zheevx_2stage,
    LAPACKE_zheevx_2stage_work,
    LAPACKE_zhegv_2stage,
    LAPACKE_zhegv_2stage_work,
    LAPACKE_zhesv_aa,
    LAPACKE_zhesv_aa_work,
    LAPACKE_zhesv_rk,
    LAPACKE_zhesv_rk_work,
    LAPACKE_zhetrf_aa,
    LAPACKE_zhetrf_aa_work,
    LAPACKE_zhetrf_rk,
    LAPACKE_zhetrf_rk_work,
    LAPACKE_zhetri_3,
    LAPACKE_zhetri_3_work,
    LAPACKE_zhetrs_aa,
    LAPACKE_zhetrs_aa_work,
    LAPACKE_zhetrs_3,
    LAPACKE_zhetrs_3_work,
    LAPACKE_zsycon_3,
    LAPACKE_zsycon_3_work,
    LAPACKE_zsysv_aa,
    LAPACKE_zsysv_aa_work,
    LAPACKE_zsysv_rk,
    LAPACKE_zsysv_rk_work,
    LAPACKE_zsytrf_aa,
    LAPACKE_zsytrf_aa_work,
    LAPACKE_zsytrf_rk,
    LAPACKE_zsytrf_rk_work,
    LAPACKE_zsytri_3,
    LAPACKE_zsytri_3_work,
    LAPACKE_zsytrs_aa,
    LAPACKE_zsytrs_aa_work,
    LAPACKE_zsytrs_3,
    LAPACKE_zsytrs_3_work,
    
    ## new function from lapack-3.8.0
    LAPACKE_zhesv_aa_2stage,
    LAPACKE_zhesv_aa_2stage_work,
    LAPACKE_zhetrf_aa_2stage,
    LAPACKE_zhetrf_aa_2stage_work,
    LAPACKE_zhetrs_aa_2stage,
    LAPACKE_zhetrs_aa_2stage_work,
    LAPACKE_zlacrm,
    LAPACKE_zlacrm_work,
    LAPACKE_zlarcm,
    LAPACKE_zlarcm_work,
    LAPACKE_zlassq,
    LAPACKE_zlassq_work,
    LAPACKE_zsysv_aa_2stage,
    LAPACKE_zsysv_aa_2stage_work,
    LAPACKE_zsytrf_aa_2stage,
    LAPACKE_zsytrf_aa_2stage_work,
    LAPACKE_zsytrs_aa_2stage,
    LAPACKE_zsytrs_aa_2stage_work,
    # new functions from 3.9.0
    LAPACKE_zgesvdq,
    LAPACKE_zgesvdq_work
);

#These function may need 2 underscores.
@lapack_embeded_underscore_objs=(
    xerbla_array, chla_transtype,
    );
@lapack_embeded_underscore_objs_s=(    
     slasyf_rook,
    ssytf2_rook, ssytrf_rook, ssytrs_rook,
    ssytri_rook, ssycon_rook, ssysv_rook,
    slasyf_rk, ssyconvf_rook, ssytf2_rk,
    ssytrf_rk, ssytrs_3, ssytri_3,
    ssytri_3x, ssycon_3, ssysv_rk,
    slasyf_aa, ssysv_aa, ssytrf_aa,
    ssytrs_aa, ssytrd_2stage, ssytrd_sy2sb,
    ssytrd_sb2st, ssb2st_kernels, ssyevd_2stage,
    ssyev_2stage, ssyevx_2stage, ssyevr_2stage,
    ssbev_2stage, ssbevx_2stage, ssbevd_2stage,
    ssygv_2stage, 
    ssysv_aa_2stage, ssytrf_aa_2stage,
    ssytrs_aa_2stage, 
    slaorhr_col_getrfnp, slaorhr_col_getrfnp2, sorhr_col,
);
@lapack_embeded_underscore_objs_c=(    
    chetf2_rook, chetrf_rook, chetri_rook,
    chetrs_rook, checon_rook, chesv_rook,
    clahef_rook, clasyf_rook,
    csytf2_rook, csytrf_rook, csytrs_rook,
    csytri_rook, csycon_rook, csysv_rook,
    chetf2_rk,
    chetrf_rk, chetri_3, chetri_3x,
    chetrs_3, checon_3, chesv_rk,
    chesv_aa, chetrf_aa, chetrs_aa,
    clahef_aa, clahef_rk, clasyf_rk,
    clasyf_aa, csytf2_rk, csytrf_rk,
    csytrf_aa, csytrs_3, csytrs_aa,
    csytri_3, csytri_3x, csycon_3,
    csysv_rk, csysv_aa, csyconvf_rook,
    chetrd_2stage, chetrd_he2hb, chetrd_hb2st,
    chb2st_kernels, cheevd_2stage, cheev_2stage,
    cheevx_2stage, cheevr_2stage, chbev_2stage,
    chbevx_2stage, chbevd_2stage, chegv_2stage,
    chesv_aa_2stage,
    chetrf_aa_2stage, chetrs_aa_2stage,
    csysv_aa_2stage, csytrf_aa_2stage,
    csytrs_aa_2stage,
    claunhr_col_getrfnp, claunhr_col_getrfnp2, cunhr_col,
);
@lapack_embeded_underscore_objs_d=(    
    dlasyf_rook,
    dsytf2_rook, dsytrf_rook, dsytrs_rook,
    dsytri_rook, dsycon_rook, dsysv_rook,
    dlasyf_rk, dsyconvf_rook,
    dsytf2_rk, dsytrf_rk, dsytrs_3,
    dsytri_3, dsytri_3x, dsycon_3,
    dsysv_rk, dlasyf_aa, dsysv_aa,
    dsytrf_aa, dsytrs_aa, dsytrd_2stage,
    dsytrd_sy2sb, dsytrd_sb2st, dsb2st_kernels,
    dsyevd_2stage, dsyev_2stage, dsyevx_2stage,
    dsyevr_2stage, dsbev_2stage, dsbevx_2stage,
    dsbevd_2stage, dsygv_2stage, 
     dsysv_aa_2stage,
    dsytrf_aa_2stage, dsytrs_aa_2stage,
    dlaorhr_col_getrfnp, dlaorhr_col_getrfnp2, dorhr_col,
);
@lapack_embeded_underscore_objs_z=(    
    zhetf2_rook, zhetrf_rook, zhetri_rook,
    zhetrs_rook, zhecon_rook, zhesv_rook,
    zlahef_rook, zlasyf_rook,
    zsytf2_rook, zsytrf_rook, zsytrs_rook,
    zsytri_rook, zsycon_rook, zsysv_rook,
    zhetf2_rk, zhetrf_rk, zhetri_3,
    zhetri_3x, zhetrs_3, zhecon_3,
    zhesv_rk, zhesv_aa, zhetrf_aa,
    zhetrs_aa, zlahef_aa, zlahef_rk,
    zlasyf_rk, zlasyf_aa, zsyconvf_rook,
    zsytrs_aa, zsytf2_rk, zsytrf_rk,
    zsytrf_aa, zsytrs_3, zsytri_3,
    zsytri_3x, zsycon_3, zsysv_rk,
    zsysv_aa, zhetrd_2stage, zhetrd_he2hb,
    zhetrd_hb2st, zhb2st_kernels, zheevd_2stage,
    zheev_2stage, zheevx_2stage, zheevr_2stage,
    zhbev_2stage, zhbevx_2stage, zhbevd_2stage,
    zhegv_2stage,
    zhesv_aa_2stage, zhetrf_aa_2stage,
    zhetrs_aa_2stage, zsysv_aa_2stage,
    zsytrf_aa_2stage, zsytrs_aa_2stage,
    zlaunhr_col_getrfnp, zlaunhr_col_getrfnp2, zunhr_col
);


use File::Spec;
use File::Basename;
my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib");

if ($ARGV[12] == 1) {
	@blasobjs = (@blasobjs, @bfblasobjs);
	@cblasobjs = (@cblasobjs, @bfcblasobjs);
}
if ($ARGV[13] == 1) {
	@blasobjs = (@blasobjs, @blasobjss);
	@cblasobjs = (@cblasobjs, @cblasobjss);
	@lapackobjs = (@lapackobjs, @lapackobjss);
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2s);
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2sc);
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2ds);
	@lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objss);
	@lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objss);
	@lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_s); 
	@lapackeobjs = (@lapackeobjs, @lapackeobjss);
}
if ($ARGV[14] == 1) {
	@blasobjs = (@blasobjs, @blasobjsd);
	@cblasobjs = (@cblasobjs, @cblasobjsd);
	@lapackobjs = (@lapackobjs, @lapackobjsd);
	if ($ARGV[13] == 0) { 
		@lapackobjs2 = (@lapackobjs2, @lapackobjs2ds);
	}
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2d, @lapackobjs2dz);
	@lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsd);
	@lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsd);
	@lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_d);
	@lapackeobjs = (@lapackeobjs, @lapackeobjsd);
}
if ($ARGV[15] == 1) {
	@blasobjs = (@blasobjs, @blasobjsc);
	@cblasobjs = (@cblasobjs, @cblasobjsc);
	@gemm3mobjs = (@gemm3mobjs, @gemm3mobjsc);
	@cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsc);
	@lapackobjs = (@lapackobjs, @lapackobjsc);
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2c, @lapackobjs2zc);
	if ($ARGV[13] == 0) { 
		@lapackobjs2 = (@lapackobjs2, @lapackobjs2sc);
	}
	@lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsc);
	@lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsc);
	@lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_c);
	@lapackeobjs = (@lapackeobjs, @lapackeobjsc);
}
if ($ARGV[16] == 1) {
	@blasobjs = (@blasobjs, @blasobjsz);
	@cblasobjs = (@cblasobjs, @cblasobjsz);
	@gemm3mobjs = (@gemm3mobjs, @gemm3mobjsz);
	@cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsz);
	@lapackobjs = (@lapackobjs, @lapackobjsz);
	@lapackobjs2 = (@lapackobjs2, @lapackobjs2z);
	if ($ARGV[15] == 0) { 
		@lapackobjs2 = (@lapackobjs2, @lapackobjs2zc);
	}
	if ($ARGV[14] == 0) { 
		@lapackobjs2 = (@lapackobjs2, @lapackobjs2dz);
	}
	@lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsz);
	@lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsz);
	@lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_z);
	@lapackeobjs = (@lapackeobjs, @lapackeobjsz);
}
if ($ARGV[8] == 1) {
    #ONLY_CBLAS=1
    @underscore_objs = (@misc_underscore_objs);
} elsif ($ARGV[5] == 1) {
    #NO_LAPACK=1
    @underscore_objs = (@blasobjs, @misc_underscore_objs);
} elsif (-d $dirname) {
    if ($ARGV[7] == 0) {
        # NEED2UNDERSCORES=0
        # Don't need 2 underscores
        @underscore_objs = (@blasobjs, @lapackobjs, @lapackobjs2, @misc_underscore_objs, @lapack_embeded_underscore_objs);
    } else {
        # Need 2 underscores
        @underscore_objs = (@blasobjs, @lapackobjs, @lapackobjs2, @misc_underscore_objs);
        @need_2underscore_objs = (@lapack_embeded_underscore_objs);
    };

    if ($ARGV[11] == 1) {
        #BUILD_LAPACK_DEPRECATED=1
        @underscore_objs = (@underscore_objs, @lapack_deprecated_objs);
    }
} else {
    @underscore_objs = (@blasobjs, @lapackobjs, @misc_underscore_objs);
}

if ($ARGV[8] == 1) {
    #ONLY_CBLAS=1
    @gemm3mobjs=();
    @exblasobjs=();
}

if ($ARGV[3] == 1) {
    @underscore_objs = (@underscore_objs, @exblasobjs);
};

if ($ARGV[1] eq "x86_64") { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
if ($ARGV[1] eq "x86")    { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
if ($ARGV[1] eq "ia64")   { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
if ($ARGV[1] eq "MIPS")   { @underscore_objs = (@underscore_objs, @gemm3mobjs); };

if ($ARGV[4] == 0) {
    @no_underscore_objs = (@cblasobjs, @misc_no_underscore_objs);
    if ($ARGV[1] eq "x86_64") { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
    if ($ARGV[1] eq "x86")    { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
    if ($ARGV[1] eq "ia64")   { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
    if ($ARGV[1] eq "MIPS")   { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
}else{
    #NO_CBLAS=1
    @no_underscore_objs = (@misc_no_underscore_objs);
}
if ($ARGV[6] == 1) {
    #NO_LAPACKE=1
    @no_underscore_objs = (@no_underscore_objs);
} else {
    if ($ARGV[11] == 1) {
        #BUILD_LAPACK_DEPRECATED=1
        @no_underscore_objs = (@no_underscore_objs, @lapackeobjs, @lapacke_deprecated_objs);
    } else {
        @no_underscore_objs = (@no_underscore_objs, @lapackeobjs);
    }
}

@hplobjs  = (daxpy, dcopy, dscal, idamax, dgemv, dtrsv, dger, dgemm, dtrsm);
@hplobjs2 = (HPL_dlaswp00N, HPL_dlaswp01N, HPL_dlaswp01T);

$bu = $ARGV[2];

$bu = "" if (($bu eq "0") || ($bu eq "1"));

$symbolprefix = $ARGV[9];

$symbolsuffix = $ARGV[10];

if ($ARGV[0] eq "osx") {
    @underscore_objs = (@underscore_objs, @misc_common_objs);
    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    foreach $objs (@underscore_objs) {
        print "_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@need_2underscore_objs) {
        print "_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@no_underscore_objs) {
        print "_", $symbolprefix, $objs, $symbolsuffix, "\n";
    }
    exit(0);
}

if ($ARGV[0] eq "aix"){
    @underscore_objs = (@underscore_objs, @misc_common_objs);
    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    foreach $objs (@underscore_objs) {
        print $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@need_2underscore_objs) {
        print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@no_underscore_objs) {
        print $symbolprefix, $objs, $symbolsuffix, "\n";
    }
    exit(0);
}

if ($ARGV[0] eq "objcopy") {
    @underscore_objs = (@underscore_objs, @misc_common_objs);
    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    foreach $objs (@underscore_objs) {
        print $objs, $bu, " ", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@need_2underscore_objs) {
        print $objs, $bu, $bu, " ", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@no_underscore_objs) {
        print $objs, " ", $symbolprefix, $objs, $symbolsuffix, "\n";
    }
    exit(0);
}

if ($ARGV[0] eq "objconv") {
    @underscore_objs = (@underscore_objs, @misc_common_objs);
    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    foreach $objs (@underscore_objs) {
        print "-nr:_", $objs, $bu, ":_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@need_2underscore_objs) {
        print "-nr:_", $objs, $bu, $bu, ":_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
    }

    foreach $objs (@no_underscore_objs) {
        print "-nr:_", $objs, ":_", $symbolprefix, $objs, $symbolsuffix, "\n";
    }
    exit(0);
}

if ($ARGV[0] eq "win2k"){
    print "EXPORTS\n";
    $count = 1;

    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    foreach $objs (@underscore_objs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
        $count ++;
    }

    foreach $objs (@need_2underscore_objs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__  \@", $count, "\n";
        $count ++;
    }

    #for misc_common_objs
    foreach $objs (@misc_common_objs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
        $count ++;
    }


    foreach $objs (@no_underscore_objs) {
        print "\t",$symbolprefix,$objs,$symbolsuffix,"=$objs","  \@", $count, "\n";
        $count ++;
    }

    exit(0);
}

if ($ARGV[0] eq "win2khpl") {
    print "EXPORTS\n";
    $count = 1;
    foreach $objs (@hplobjs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
        $count ++;
    }

    exit(0);
}

if ($ARGV[0] eq "microsoft"){
    @underscore_objs = (@underscore_objs, @misc_common_objs);

    print "EXPORTS\n";
    $count = 1;
    foreach $objs (@underscore_objs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, $symbolsuffix, " = $objs","_\n";
        $count ++;
        print "\t",$symbolprefix, $objs, "\_", $symbolsuffix, " = $objs","_\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, " = $objs","_\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, "\_", $symbolsuffix, " = $objs","_\n";
        $count ++;
    }

    foreach $objs (@need_2underscore_objs) {
        $uppercase = $objs;
        $uppercase =~ tr/[a-z]/[A-Z]/;
        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__  \@", $count, "\n";
        $count ++;
        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__  \@", $count, "\n";
        $count ++;
    }

    exit(0);
}

if ($ARGV[0] eq "linktest") {
    @underscore_objs = (@underscore_objs, @misc_common_objs);
    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);

    print "int main(void){\n";
    foreach $objs (@underscore_objs) {
        print "extern void ", $symbolprefix, $objs, $bu, $symbolsuffix, "();\n" if $objs ne "xerbla";
    }

    foreach $objs (@need_2underscore_objs) {
        print "extern void ", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "();\n";
    }

    foreach $objs (@no_underscore_objs) {
        print "extern void ", $symbolprefix, $objs, $symbolsuffix, "();\n";
    }

    foreach $objs (@underscore_objs) {
        print $symbolprefix, $objs, $bu, $symbolsuffix, "();\n" if $objs ne "xerbla";
    }

    foreach $objs (@need_2underscore_objs) {
        print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "();\n";
    }

    foreach $objs (@no_underscore_objs) {
        print $symbolprefix, $objs, $symbolsuffix, "();\n";
    }

    print "return 0;}\n";
    exit(0);
}
