From 21823289460641470efda33a2f722a6b8082a350 Mon Sep 17 00:00:00 2001 From: Rohit Goswami Date: Sun, 3 Mar 2024 01:25:25 +0000 Subject: [PATCH] ENH,BLD: Finish reworking netlib lapack --- lapack-netlib/SRC/meson.build | 1031 +++++++++++++++------------------ lapack-netlib/meson.build | 1 + meson_options.txt | 2 + 3 files changed, 478 insertions(+), 556 deletions(-) diff --git a/lapack-netlib/SRC/meson.build b/lapack-netlib/SRC/meson.build index 09423b6be..0b8aa7775 100644 --- a/lapack-netlib/SRC/meson.build +++ b/lapack-netlib/SRC/meson.build @@ -18,567 +18,486 @@ # _zlasrc -- Double precision complex LAPACK routines # _zxlasrc -- Double precision complex LAPACK routines using extra precision # +# TODO: meson doesn't support the deprecated routines yet # _deprecated -- Deprecated routines in all precisions -ALLAUX = files( - 'ilaenv.f', - 'ilaenv2stage.f', - 'ieeeck.f', - 'lsamen.f', - 'xerbla.f', - 'xerbla_array.f', - 'iparmq.f', - 'iparam2stage.F', - 'ilaprec.f', - 'ilatrans.f', - 'ilauplo.f', - 'iladiag.f', - 'chla_transtype.f', - '../INSTALL/ilaver.f', - '../INSTALL/slamch.f', -) +# _allaux -- Auxiliary routines called from all precisions +# Needs _install_aux +# _allblas contains xerbla and xerbla_array already +_allaux = [ + 'ilaenv.f', 'ilaenv2stage.f', 'ieeeck.f', 'lsamen.f', 'iparmq.f', + 'iparam2stage.F', 'ilaprec.f', 'ilatrans.f', 'ilauplo.f', 'iladiag.f', + 'chla_transtype.f', 'la_xisnan.F90', 'la_constants.f90', +] + +_deps = [] +_libs = [ _allblas, _install_aux ] +# _auxlapack -- Auxiliary routines for lapack +_auxlapack = library('_auxlapack', + sources: _allaux, + link_with: _libs, + ) +_libs += _auxlapack -SCLAUX = files( - 'sbdsdc.f', - 'sbdsqr.f', - 'sdisna.f', - 'slabad.f', - 'slacpy.f', - 'sladiv.f', - 'slae2.f', - 'slaebz.f', - 'slaed0.f', - 'slaed1.f', - 'slaed2.f', - 'slaed3.f', - 'slaed4.f', - 'slaed5.f', - 'slaed6.f', - 'slaed7.f', - 'slaed8.f', - 'slaed9.f', - 'slaeda.f', - 'slaev2.f', - 'slagtf.f', - 'slagts.f', - 'slamrg.f', - 'slanst.f', - 'slapy2.f', - 'slapy3.f', - 'slarnv.f', - 'slarra.f', - 'slarrb.f', - 'slarrc.f', - 'slarrd.f', - 'slarre.f', - 'slarrf.f', - 'slarrj.f', - 'slarrk.f', - 'slarrr.f', - 'slaneg.f', - 'slartg.f90', - 'slaruv.f', - 'slas2.f', - 'slascl.f', - 'slasd0.f', - 'slasd1.f', - 'slasd2.f', - 'slasd3.f', - 'slasd4.f', - 'slasd5.f', - 'slasd6.f', - 'slasd7.f', - 'slasd8.f', - 'slasda.f', - 'slasdq.f', - 'slasdt.f', - 'slaset.f', - 'slasq1.f', - 'slasq2.f', - 'slasq3.f', - 'slasq4.f', - 'slasq5.f', - 'slasq6.f', - 'slasr.f', - 'slasrt.f', - 'slassq.f90', - 'slasv2.f', - 'spttrf.f', - 'sstebz.f', - 'sstedc.f', - 'ssteqr.f', - 'ssterf.f', - 'slaisnan.f', - 'sisnan.f', - 'slartgp.f', - 'slartgs.f', - '../INSTALL/second_INT_CPU_TIME.f', -) - -DZLAUX = files( - 'dbdsdc.f', - 'dbdsqr.f', - 'ddisna.f', - 'dlabad.f', - 'dlacpy.f', - 'dladiv.f', - 'dlae2.f', - 'dlaebz.f', - 'dlaed0.f', - 'dlaed1.f', - 'dlaed2.f', - 'dlaed3.f', - 'dlaed4.f', - 'dlaed5.f', - 'dlaed6.f', - 'dlaed7.f', - 'dlaed8.f', - 'dlaed9.f', - 'dlaeda.f', - 'dlaev2.f', - 'dlagtf.f', - 'dlagts.f', - 'dlamrg.f', - 'dlanst.f', - 'dlapy2.f', - 'dlapy3.f', - 'dlarnv.f', - 'dlarra.f', - 'dlarrb.f', - 'dlarrc.f', - 'dlarrd.f', - 'dlarre.f', - 'dlarrf.f', - 'dlarrj.f', - 'dlarrk.f', - 'dlarrr.f', - 'dlaneg.f', - 'dlartg.f90', - 'dlaruv.f', - 'dlas2.f', - 'dlascl.f', - 'dlasd0.f', - 'dlasd1.f', - 'dlasd2.f', - 'dlasd3.f', - 'dlasd4.f', - 'dlasd5.f', - 'dlasd6.f', - 'dlasd7.f', - 'dlasd8.f', - 'dlasda.f', - 'dlasdq.f', - 'dlasdt.f', - 'dlaset.f', - 'dlasq1.f', - 'dlasq2.f', - 'dlasq3.f', - 'dlasq4.f', - 'dlasq5.f', - 'dlasq6.f', - 'dlasr.f', - 'dlasrt.f', - 'dlassq.f90', - 'la_xisnan.F90', - 'la_constants.f90', - 'dlasv2.f', - 'dpttrf.f', - 'dstebz.f', - 'dstedc.f', - 'dsteqr.f', - 'dsterf.f', - 'dlaisnan.f', - 'disnan.f', - 'dlartgp.f', - 'dlartgs.f', - '../INSTALL/dsecnd_INT_CPU_TIME.f', -) +# All other sources +_lapack_netlib_srcs = [] -SLASRC = files( - 'sbdsvdx.f', - 'spotrf2.f', - 'sgetrf2.f', - 'sgbbrd.f', - 'sgbcon.f', - 'sgbequ.f', - 'sgbrfs.f', - 'sgbsv.f', - 'sgbsvx.f', - 'sgbtf2.f', - 'sgbtrf.f', - 'sgbtrs.f', - 'sgebak.f', - 'sgebal.f', - 'sgebd2.f', - 'sgebrd.f', - 'sgecon.f', - 'sgeequ.f', - 'sgees.f', - 'sgeesx.f', - 'sgeev.f', - 'sgeevx.f', - 'sgehd2.f', - 'sgehrd.f', - 'sgelq2.f', - 'sgelqf.f', - 'sgels.f', - 'sgelsd.f', - 'sgelss.f', - 'sgelsy.f', - 'sgeql2.f', - 'sgeqlf.f', - 'sgeqp3.f', - 'sgeqr2.f', - 'sgeqr2p.f', - 'sgeqrf.f', - 'sgeqrfp.f', - 'sgerfs.f', - 'sgerq2.f', - 'sgerqf.f', - 'sgesc2.f', - 'sgesdd.f', - 'sgesv.f', - 'sgesvd.f', - 'sgesvdx.f', - 'sgesvx.f', - 'sgetc2.f', - 'sgetf2.f', - 'sgetri.f', - 'sggbak.f', - 'sggbal.f', - 'sgges.f', - 'sgges3.f', - 'sggesx.f', - 'sggev.f', - 'sggev3.f', - 'sggevx.f', - 'sggglm.f', - 'sgghrd.f', - 'sgghd3.f', - 'sgglse.f', - 'sggqrf.f', - 'sggrqf.f', - 'sggsvd3.f', - 'sggsvp3.f', - 'sgtcon.f', - 'sgtrfs.f', - 'sgtsv.f', - 'sgtsvx.f', - 'sgttrf.f', - 'sgttrs.f', - 'sgtts2.f', - 'shgeqz.f', - 'shsein.f', - 'shseqr.f', - 'slabrd.f', - 'slacon.f', - 'slacn2.f', - 'slaein.f', - 'slaexc.f', - 'slag2.f', - 'slags2.f', - 'slagtm.f', - 'slagv2.f', - 'slahqr.f', - 'slahr2.f', - 'slaic1.f', - 'slaln2.f', - 'slals0.f', - 'slalsa.f', - 'slalsd.f', - 'slangb.f', - 'slange.f', - 'slangt.f', - 'slanhs.f', - 'slansb.f', - 'slansp.f', - 'slansy.f', - 'slantb.f', - 'slantp.f', - 'slantr.f', - 'slanv2.f', - 'slapll.f', - 'slapmt.f', - 'slaqgb.f', - 'slaqge.f', - 'slaqp2.f', - 'slaqps.f', - 'slaqsb.f', - 'slaqsp.f', - 'slaqsy.f', - 'slaqr0.f', - 'slaqr1.f', - 'slaqr2.f', - 'slaqr3.f', - 'slaqr4.f', - 'slaqr5.f', - 'slaqtr.f', - 'slar1v.f', - 'slar2v.f', - 'ilaslr.f', - 'ilaslc.f', - 'slarf.f', - 'slarfb.f', - 'slarfg.f', - 'slarfgp.f', - 'slarft.f', - 'slarfx.f', - 'slarfy.f', - 'slargv.f', - 'slarrv.f', - 'slartv.f', - 'slarz.f', - 'slarzb.f', - 'slarzt.f', - 'slaswp.f', - 'slasy2.f', - 'slasyf.f', - 'slasyf_rook.f', - 'slasyf_rk.f', - 'slatbs.f', - 'slatdf.f', - 'slatps.f', - 'slatrd.f', - 'slatrs.f', - 'slatrz.f', - 'slauu2.f', - 'slauum.f', - 'sopgtr.f', - 'sopmtr.f', - 'sorg2l.f', - 'sorg2r.f', - 'sorgbr.f', - 'sorghr.f', - 'sorgl2.f', - 'sorglq.f', - 'sorgql.f', - 'sorgqr.f', - 'sorgr2.f', - 'sorgrq.f', - 'sorgtr.f', - 'sorm2l.f', - 'sorm2r.f', - 'sorm22.f', - 'sormbr.f', - 'sormhr.f', - 'sorml2.f', - 'sormlq.f', - 'sormql.f', - 'sormqr.f', - 'sormr2.f', - 'sormr3.f', - 'sormrq.f', - 'sormrz.f', - 'sormtr.f', - 'spbcon.f', - 'spbequ.f', - 'spbrfs.f', - 'spbstf.f', - 'spbsv.f', - 'spbsvx.f', - 'spbtf2.f', - 'spbtrf.f', - 'spbtrs.f', - 'spocon.f', - 'spoequ.f', - 'sporfs.f', - 'sposv.f', - 'sposvx.f', - 'spotf2.f', - 'spotri.f', - 'spstrf.f', - 'spstf2.f', - 'sppcon.f', - 'sppequ.f', - 'spprfs.f', - 'sppsv.f', - 'sppsvx.f', - 'spptrf.f', - 'spptri.f', - 'spptrs.f', - 'sptcon.f', - 'spteqr.f', - 'sptrfs.f', - 'sptsv.f', - 'sptsvx.f', - 'spttrs.f', - 'sptts2.f', - 'srscl.f', - 'ssbev.f', - 'ssbevd.f', - 'ssbevx.f', - 'ssbgst.f', - 'ssbgv.f', - 'ssbgvd.f', - 'ssbgvx.f', - 'ssbtrd.f', - 'sspcon.f', - 'sspev.f', - 'sspevd.f', - 'sspevx.f', - 'sspgst.f', - 'sspgv.f', - 'sspgvd.f', - 'sspgvx.f', - 'ssprfs.f', - 'sspsv.f', - 'sspsvx.f', - 'ssptrd.f', - 'ssptrf.f', - 'ssptri.f', - 'ssptrs.f', - 'sstegr.f', - 'sstein.f', - 'sstev.f', - 'sstevd.f', - 'sstevr.f', - 'sstevx.f', - 'ssycon.f', - 'ssyev.f', - 'ssyevd.f', - 'ssyevr.f', - 'ssyevx.f', - 'ssygs2.f', - 'ssygst.f', - 'ssygv.f', - 'ssygvd.f', - 'ssygvx.f', - 'ssyrfs.f', - 'ssysv.f', - 'ssysvx.f', - 'ssytd2.f', - 'ssytf2.f', - 'ssytrd.f', - 'ssytrf.f', - 'ssytri.f', - 'ssytri2.f', - 'ssytri2x.f', - 'ssyswapr.f', - 'ssytrs.f', - 'ssytrs2.f', - 'ssyconv.f', - 'ssyconvf.f', - 'ssyconvf_rook.f', - 'ssytf2_rook.f', - 'ssytrf_rook.f', - 'ssytrs_rook.f', - 'ssytri_rook.f', - 'ssycon_rook.f', - 'ssysv_rook.f', - 'ssytf2_rk.f', - 'ssytrf_rk.f', - 'ssytrs_3.f', - 'ssytri_3.f', - 'ssytri_3x.f', - 'ssycon_3.f', - 'ssysv_rk.f', - 'slasyf_aa.f', - 'ssysv_aa.f', - 'ssytrf_aa.f', - 'ssytrs_aa.f', - 'ssysv_aa_2stage.f', - 'ssytrf_aa_2stage.f', - 'ssytrs_aa_2stage.f', - 'stbcon.f', - 'stbrfs.f', - 'stbtrs.f', - 'stgevc.f', - 'stgex2.f', - 'stgexc.f', - 'stgsen.f', - 'stgsja.f', - 'stgsna.f', - 'stgsy2.f', - 'stgsyl.f', - 'stpcon.f', - 'stprfs.f', - 'stptri.f', - 'stptrs.f', - 'strcon.f', - 'strevc.f', - 'strevc3.f', - 'strexc.f', - 'strrfs.f', - 'strsen.f', - 'strsna.f', - 'strsyl.f', - 'strti2.f', - 'strtri.f', - 'strtrs.f', - 'stzrzf.f', - 'sstemr.f', - 'slansf.f', - 'spftrf.f', - 'spftri.f', - 'spftrs.f', - 'ssfrk.f', - 'stfsm.f', - 'stftri.f', - 'stfttp.f', - 'stfttr.f', - 'stpttf.f', - 'stpttr.f', - 'strttf.f', - 'strttp.f', - 'sgejsv.f', - 'sgesvj.f', - 'sgsvj0.f', - 'sgsvj1.f', - 'sgeequb.f', - 'ssyequb.f', - 'spoequb.f', - 'sgbequb.f', - 'sbbcsd.f', - 'slapmr.f', - 'sorbdb.f', - 'sorbdb1.f', - 'sorbdb2.f', - 'sorbdb3.f', - 'sorbdb4.f', - 'sorbdb5.f', - 'sorbdb6.f', - 'sorcsd.f', - 'sorcsd2by1.f', - 'sgeqrt.f', - 'sgeqrt2.f', - 'sgeqrt3.f', - 'sgemqrt.f', - 'stpqrt.f', - 'stpqrt2.f', - 'stpmqrt.f', - 'stprfb.f', - 'sgelqt.f', - 'sgelqt3.f', - 'sgemlqt.f', - 'sgetsls.f', - 'sgetrf.f', - 'sgeqr.f', - 'slatsqr.f', - 'slamtsqr.f', - 'sgemqr.f', - 'sgelq.f', - 'slaswlq.f', - 'slamswlq.f', - 'sgemlq.f', - 'stplqt.f', - 'stplqt2.f', - 'stpmlqt.f', - 'ssytrd_2stage.f', - 'ssytrd_sy2sb.f', - 'ssytrd_sb2st.F', - 'ssb2st_kernels.f', - 'ssyevd_2stage.f', - 'ssyev_2stage.f', - 'ssyevx_2stage.f', - 'ssyevr_2stage.f', - 'ssbev_2stage.f', - 'ssbevx_2stage.f', - 'ssbevd_2stage.f', - 'ssygv_2stage.f', +# _slaux -- Auxiliary routines called from single precision +# Needs _int_cpu and _install_aux +# For sroundup_lwork.f +# TODO: Handle SECOND_SRC +_sclaux = [ + 'sbdsvdx.f', 'sbdsdc.f', 'sbdsqr.f', 'sdisna.f', 'slabad.f', 'slacpy.f', + 'sladiv.f', 'slae2.f', 'slaebz.f', 'slaed0.f', 'slaed1.f', 'slaed2.f', + 'slaed3.f', 'slaed4.f', 'slaed5.f', 'slaed6.f', 'slaed7.f', 'slaed8.f', + 'slaed9.f', 'slaeda.f', 'slaev2.f', 'slagtf.f', 'slagts.f', 'slamrg.f', + 'slanst.f', 'slapy2.f', 'slapy3.f', 'slarnv.f', 'slarra.f', 'slarrb.f', + 'slarrc.f', 'slarrd.f', 'slarre.f', 'slarrf.f', 'slarrj.f', 'slarrk.f', + 'slarrr.f', 'slaneg.f', 'slartg.f90', 'slaruv.f', 'slas2.f', 'slascl.f', + 'slasd0.f', 'slasd1.f', 'slasd2.f', 'slasd3.f', 'slasd4.f', 'slasd5.f', + 'slasd6.f', 'slasd7.f', 'slasd8.f', 'slasda.f', 'slasdq.f', 'slasdt.f', + 'slaset.f', 'slasq1.f', 'slasq2.f', 'slasq3.f', 'slasq4.f', 'slasq5.f', + 'slasq6.f', 'slasr.f', 'slasrt.f', 'slassq.f90', 'slasv2.f', 'spttrf.f', + 'sstebz.f', 'sstedc.f', 'sstein.f', 'ssteqr.f', 'ssterf.f', 'sstevx.f', + 'slartgp.f', 'slartgs.f', +] + +# _dzlaux -- Auxiliary routines called from double precision +# Needs _int_cpu and _install_aux +# For droundup_lwork.f and dlamch.f +# TODO: Handle DSECOND_SRC +_dzlaux = [ + 'la_constants.f90', 'dbdsdc.f', 'dbdsvdx.f', 'dbdsqr.f', 'ddisna.f', + 'disnan.f', 'dlabad.f', 'dlacpy.f', 'dladiv.f', 'dlae2.f', 'dlaebz.f', + 'dlaed0.f', 'dlaed1.f', 'dlaed2.f', 'dlaed3.f', 'dlaed4.f', 'dlaed5.f', + 'dlaed6.f', 'dlaed7.f', 'dlaed8.f', 'dlaed9.f', 'dlaeda.f', 'dlaev2.f', + 'dlagtf.f', 'dlagts.f', 'dlamrg.f', 'dlanst.f', 'dlapy2.f', 'dlapy3.f', + 'dlarnv.f', 'dlarra.f', 'dlarrb.f', 'dlarrc.f', 'dlarrd.f', 'dlarre.f', + 'dlarrf.f', 'dlarrj.f', 'dlarrk.f', 'dlarrr.f', 'dlaneg.f', 'dlartg.f90', + 'dlaruv.f', 'dlas2.f', 'dlascl.f', 'dlasd0.f', 'dlasd1.f', 'dlasd2.f', + 'dlasd3.f', 'dlasd4.f', 'dlasd5.f', 'dlasd6.f', 'dlasd7.f', 'dlasd8.f', + 'dlasda.f', 'dlasdq.f', 'dlasdt.f', 'dlaset.f', 'dlasq1.f', 'dlasq2.f', + 'dlasq3.f', 'dlasq4.f', 'dlasq5.f', 'dlasq6.f', 'dlasr.f', 'dlasrt.f', + 'dlassq.f90', 'dlasv2.f', 'dlaisnan.f', 'dpttrf.f', 'dstebz.f', 'dstedc.f', + 'dstein.f', 'dsteqr.f', 'dsterf.f', 'dstevx.f', 'dlartgp.f', 'dlartgs.f', +] + + +# _slasrc -- Single precision real LAPACK routines +_slasrc = [ + 'sgbbrd.f', 'sgbcon.f', 'sgbequ.f', 'sgbrfs.f', 'sgbsv.f', 'sgbsvx.f', + 'sgbtf2.f', 'sgbtrf.f', 'sgbtrs.f', 'sgebak.f', 'sgebal.f', 'sgebd2.f', + 'sgebrd.f', 'sgecon.f', 'sgeequ.f', 'sgees.f', 'sgeesx.f', 'sgeev.f', + 'sgeevx.f', 'sgehd2.f', 'sgehrd.f', 'sgelq2.f', 'sgelqf.f', 'sgels.f', + 'sgelsd.f', 'sgelss.f', 'sgelsy.f', 'sgeql2.f', 'sgeqlf.f', 'sgeqp3.f', + 'sgeqr2.f', 'sgeqr2p.f', 'sgeqrf.f', 'sgeqrfp.f', 'sgerfs.f', 'sgerq2.f', + 'sgerqf.f', 'sgesc2.f', 'sgesdd.f', 'sgesv.f', 'sgesvd.f', 'sgesvdx.f', + 'sgesvx.f', 'sgetc2.f', 'sgetf2.f', 'sgetri.f', 'sggbak.f', 'sggbal.f', + 'sgges.f', 'sgges3.f', 'sggesx.f', 'sggev.f', 'sggev3.f', 'sggevx.f', + 'sggglm.f', 'sgghrd.f', 'sgghd3.f', 'sgglse.f', 'sggqrf.f', 'sggrqf.f', + 'sggsvd3.f', 'sggsvp3.f', 'sgtcon.f', 'sgtrfs.f', 'sgtsv.f', 'sgtsvx.f', + 'sgttrf.f', 'sgttrs.f', 'sgtts2.f', 'shgeqz.f', 'slaqz0.f', 'slaqz1.f', + 'slaqz2.f', 'slaqz3.f', 'slaqz4.f', 'shsein.f', 'shseqr.f', 'slabrd.f', + 'slacon.f', 'slacn2.f', 'slaein.f', 'slaexc.f', 'slag2.f', 'slags2.f', + 'slagtm.f', 'slagv2.f', 'slahqr.f', 'slahr2.f', 'slaic1.f', 'slaln2.f', + 'slals0.f', 'slalsa.f', 'slalsd.f', 'slangb.f', 'slange.f', 'slangt.f', + 'slanhs.f', 'slansb.f', 'slansp.f', 'slansy.f', 'slantb.f', 'slantp.f', + 'slantr.f', 'slanv2.f', 'slapll.f', 'slapmt.f', 'slaqgb.f', 'slaqge.f', + 'slaqp2.f', 'slaqps.f', 'slaqsb.f', 'slaqsp.f', 'slaqsy.f', 'slaqr0.f', + 'slaqr1.f', 'slaqr2.f', 'slaqr3.f', 'slaqr4.f', 'slaqr5.f', 'slaqtr.f', + 'slar1v.f', 'slar2v.f', 'ilaslr.f', 'ilaslc.f', 'slarf.f', 'slarfb.f', + 'slarfb_gett.f', 'slarfg.f', 'slarfgp.f', 'slarft.f', 'slarfx.f', + 'slarfy.f', 'slargv.f', 'slarrv.f', 'slartv.f', 'slarz.f', 'slarzb.f', + 'slarzt.f', 'slasy2.f', 'slasyf.f', 'slasyf_rook.f', 'slasyf_rk.f', + 'slasyf_aa.f', 'slatbs.f', 'slatdf.f', 'slatps.f', 'slatrd.f', 'slatrs.f', + 'slatrz.f', 'slauu2.f', 'slauum.f', 'sopgtr.f', 'sopmtr.f', 'sorg2l.f', + 'sorg2r.f', 'sorgbr.f', 'sorghr.f', 'sorgl2.f', 'sorglq.f', 'sorgql.f', + 'sorgqr.f', 'sorgr2.f', 'sorgrq.f', 'sorgtr.f', 'sorgtsqr.f', + 'sorgtsqr_row.f', 'sorm2l.f', 'sorm2r.f', 'sorm22.f', 'sormbr.f', + 'sormhr.f', 'sorml2.f', 'sormlq.f', 'sormql.f', 'sormqr.f', 'sormr2.f', + 'sormr3.f', 'sormrq.f', 'sormrz.f', 'sormtr.f', 'spbcon.f', 'spbequ.f', + 'spbrfs.f', 'spbstf.f', 'spbsv.f', 'spbsvx.f', 'spbtf2.f', 'spbtrf.f', + 'spbtrs.f', 'spocon.f', 'spoequ.f', 'sporfs.f', 'sposv.f', 'sposvx.f', + 'spotf2.f', 'spotri.f', 'spstrf.f', 'spstf2.f', 'sppcon.f', 'sppequ.f', + 'spprfs.f', 'sppsv.f', 'sppsvx.f', 'spptrf.f', 'spptri.f', 'spptrs.f', + 'sptcon.f', 'spteqr.f', 'sptrfs.f', 'sptsv.f', 'sptsvx.f', 'spttrs.f', + 'sptts2.f', 'srscl.f', 'ssbev.f', 'ssbevd.f', 'ssbevx.f', 'ssbgst.f', + 'ssbgv.f', 'ssbgvd.f', 'ssbgvx.f', 'ssbtrd.f', 'sspcon.f', 'sspev.f', + 'sspevd.f', 'sspevx.f', 'sspgst.f', 'sspgv.f', 'sspgvd.f', 'sspgvx.f', + 'ssprfs.f', 'sspsv.f', 'sspsvx.f', 'ssptrd.f', 'ssptrf.f', 'ssptri.f', + 'ssptrs.f', 'sstegr.f', 'sstev.f', 'sstevd.f', 'sstevr.f', 'ssycon.f', + 'ssyev.f', 'ssyevd.f', 'ssyevr.f', 'ssyevx.f', 'ssygs2.f', 'ssygst.f', + 'ssygv.f', 'ssygvd.f', 'ssygvx.f', 'ssyrfs.f', 'ssysv.f', 'ssysvx.f', + 'ssytd2.f', 'ssytf2.f', 'ssytrd.f', 'ssytrf.f', 'ssytri.f', 'ssytri2.f', + 'ssytri2x.f', 'ssyswapr.f', 'ssytrs.f', 'ssytrs2.f', 'ssyconv.f', + 'ssyconvf.f', 'ssyconvf_rook.f', 'ssytf2_rook.f', 'ssytrf_rook.f', + 'ssytrs_rook.f', 'ssytri_rook.f', 'ssycon_rook.f', 'ssysv_rook.f', + 'ssytf2_rk.f', 'ssytrf_rk.f', 'ssytrs_3.f', 'ssytri_3.f', 'ssytri_3x.f', + 'ssycon_3.f', 'ssysv_rk.f', 'ssysv_aa.f', 'ssytrf_aa.f', 'ssytrs_aa.f', + 'ssysv_aa_2stage.f', 'ssytrf_aa_2stage.f', 'ssytrs_aa_2stage.f', 'stbcon.f', + 'stbrfs.f', 'stbtrs.f', 'stgevc.f', 'stgex2.f', 'stgexc.f', 'stgsen.f', + 'stgsja.f', 'stgsna.f', 'stgsy2.f', 'stgsyl.f', 'stpcon.f', 'stprfs.f', + 'stptri.f', 'stptrs.f', 'strcon.f', 'strevc.f', 'strevc3.f', 'strexc.f', + 'strrfs.f', 'strsen.f', 'strsna.f', 'strsyl.f', 'strti2.f', 'strtri.f', + 'strtrs.f', 'stzrzf.f', 'sstemr.f', 'slansf.f', 'spftrf.f', 'spftri.f', + 'spftrs.f', 'ssfrk.f', 'stfsm.f', 'stftri.f', 'stfttp.f', 'stfttr.f', + 'stpttf.f', 'stpttr.f', 'strttf.f', 'strttp.f', 'sgejsv.f', 'sgesvj.f', + 'sgsvj0.f', 'sgsvj1.f', 'sgeequb.f', 'ssyequb.f', 'spoequb.f', 'sgbequb.f', + 'sbbcsd.f', 'slapmr.f', 'sorbdb.f', 'sorbdb1.f', 'sorbdb2.f', 'sorbdb3.f', + 'sorbdb4.f', 'sorbdb5.f', 'sorbdb6.f', 'sorcsd.f', 'sorcsd2by1.f', + 'sgeqrt.f', 'sgeqrt2.f', 'sgeqrt3.f', 'sgemqrt.f', 'stpqrt.f', 'stpqrt2.f', + 'stpmqrt.f', 'stprfb.f', 'sgelqt.f', 'sgelqt3.f', 'sgemlqt.f', 'sgetsls.f', + 'sgetsqrhrt.f', 'sgeqr.f', 'slatsqr.f', 'slamtsqr.f', 'sgemqr.f', 'sgelq.f', + 'slaswlq.f', 'slamswlq.f', 'sgemlq.f', 'stplqt.f', 'stplqt2.f', 'stpmlqt.f', + 'sorhr_col.f', 'slaorhr_col_getrfnp.f', 'slaorhr_col_getrfnp2.f', + 'ssytrd_2stage.f', 'ssytrd_sy2sb.f', 'ssytrd_sb2st.F', 'ssb2st_kernels.f', + 'ssyevd_2stage.f', 'ssyev_2stage.f', 'ssyevx_2stage.f', 'ssyevr_2stage.f', + 'ssbev_2stage.f', 'ssbevx_2stage.f', 'ssbevd_2stage.f', 'ssygv_2stage.f', 'sgesvdq.f', - 'scombssq.f', -) +] -DSLASRC = files('spotrs.f', 'sgetrs.f', 'spotrf.f') +# DSLASRC -- Double-single mixed precision real routines +_dslasrc = [ + 'sgetrf.f', 'sgetrf2.f', 'sgetrs.f', 'sisnan.f', 'slaisnan.f', 'slaswp.f', + 'spotrf.f', 'spotrf2.f', 'spotrs.f', +] + +# SXLASRC -- Single precision real LAPACK routines using extra precision +_sxlasrc = [ + 'sgesvxx.f', 'sgerfsx.f', 'sla_gerfsx_extended.f', 'sla_geamv.f', + 'sla_gercond.f', 'sla_gerpvgrw.f', 'ssysvxx.f', 'ssyrfsx.f', + 'sla_syrfsx_extended.f', 'sla_syamv.f', 'sla_syrcond.f', 'sla_syrpvgrw.f', + 'sposvxx.f', 'sporfsx.f', 'sla_porfsx_extended.f', 'sla_porcond.f', + 'sla_porpvgrw.f', 'sgbsvxx.f', 'sgbrfsx.f', 'sla_gbrfsx_extended.f', + 'sla_gbamv.f', 'sla_gbrcond.f', 'sla_gbrpvgrw.f', 'sla_lin_berr.f', + 'slarscl2.f', 'slascl2.f', 'sla_wwaddw.f' +] + +# CLASRC -- Single precision complex LAPACK routines +_clasrc = [ + 'cbdsqr.f', 'cgbbrd.f', 'cgbcon.f', 'cgbequ.f', 'cgbrfs.f', 'cgbsv.f', + 'cgbsvx.f', 'cgbtf2.f', 'cgbtrf.f', 'cgbtrs.f', 'cgebak.f', 'cgebal.f', + 'cgebd2.f', 'cgebrd.f', 'cgecon.f', 'cgeequ.f', 'cgees.f', 'cgeesx.f', + 'cgeev.f', 'cgeevx.f', 'cgehd2.f', 'cgehrd.f', 'cgelq2.f', 'cgelqf.f', + 'cgels.f', 'cgelsd.f', 'cgelss.f', 'cgelsy.f', 'cgeql2.f', 'cgeqlf.f', + 'cgeqp3.f', 'cgeqr2.f', 'cgeqr2p.f', 'cgeqrf.f', 'cgeqrfp.f', 'cgerfs.f', + 'cgerq2.f', 'cgerqf.f', 'cgesc2.f', 'cgesdd.f', 'cgesv.f', 'cgesvd.f', + 'cgesvdx.f', 'cgesvj.f', 'cgejsv.f', 'cgsvj0.f', 'cgsvj1.f', 'cgesvx.f', + 'cgetc2.f', 'cgetf2.f', 'cgetrf2.f', 'cgetri.f', 'cggbak.f', 'cggbal.f', + 'cgges.f', 'cgges3.f', 'cggesx.f', 'cggev.f', 'cggev3.f', 'cggevx.f', + 'cggglm.f', 'cgghrd.f', 'cgghd3.f', 'cgglse.f', 'cggqrf.f', 'cggrqf.f', + 'cggsvd3.f', 'cggsvp3.f', 'cgtcon.f', 'cgtrfs.f', 'cgtsv.f', 'cgtsvx.f', + 'cgttrf.f', 'cgttrs.f', 'cgtts2.f', 'chbev.f', 'chbevd.f', 'chbevx.f', + 'chbgst.f', 'chbgv.f', 'chbgvd.f', 'chbgvx.f', 'chbtrd.f', 'checon.f', + 'cheev.f', 'cheevd.f', 'cheevr.f', 'cheevx.f', 'chegs2.f', 'chegst.f', + 'chegv.f', 'chegvd.f', 'chegvx.f', 'cherfs.f', 'chesv.f', 'chesvx.f', + 'chetd2.f', 'chetf2.f', 'chetrd.f', 'chetrf.f', 'chetri.f', 'chetri2.f', + 'chetri2x.f', 'cheswapr.f', 'chetrs.f', 'chetrs2.f', 'chetf2_rook.f', + 'chetrf_rook.f', 'chetri_rook.f', 'chetrs_rook.f', 'checon_rook.f', + 'chesv_rook.f', 'chetf2_rk.f', 'chetrf_rk.f', 'chetri_3.f', 'chetri_3x.f', + 'chetrs_3.f', 'checon_3.f', 'chesv_rk.f', 'chesv_aa.f', 'chetrf_aa.f', + 'chetrs_aa.f', 'chesv_aa_2stage.f', 'chetrf_aa_2stage.f', + 'chetrs_aa_2stage.f', 'chgeqz.f', 'chpcon.f', 'chpev.f', 'chpevd.f', + 'claqz0.f', 'claqz1.f', 'claqz2.f', 'claqz3.f', 'chpevx.f', 'chpgst.f', + 'chpgv.f', 'chpgvd.f', 'chpgvx.f', 'chprfs.f', 'chpsv.f', 'chpsvx.f', + 'chptrd.f', 'chptrf.f', 'chptri.f', 'chptrs.f', 'chsein.f', 'chseqr.f', + 'clabrd.f', 'clacgv.f', 'clacon.f', 'clacn2.f', 'clacp2.f', 'clacpy.f', + 'clacrm.f', 'clacrt.f', 'cladiv.f', 'claed0.f', 'claed7.f', 'claed8.f', + 'claein.f', 'claesy.f', 'claev2.f', 'clags2.f', 'clagtm.f', 'clahef.f', + 'clahef_rook.f', 'clahef_rk.f', 'clahef_aa.f', 'clahqr.f', 'clahr2.f', + 'claic1.f', 'clals0.f', 'clalsa.f', 'clalsd.f', 'clangb.f', 'clange.f', + 'clangt.f', 'clanhb.f', 'clanhe.f', 'clanhp.f', 'clanhs.f', 'clanht.f', + 'clansb.f', 'clansp.f', 'clansy.f', 'clantb.f', 'clantp.f', 'clantr.f', + 'clapll.f', 'clapmt.f', 'clarcm.f', 'claqgb.f', 'claqge.f', 'claqhb.f', + 'claqhe.f', 'claqhp.f', 'claqp2.f', 'claqps.f', 'claqsb.f', 'claqr0.f', + 'claqr1.f', 'claqr2.f', 'claqr3.f', 'claqr4.f', 'claqr5.f', 'claqsp.f', + 'claqsy.f', 'clar1v.f', 'clar2v.f', 'ilaclr.f', 'ilaclc.f', 'clarf.f', + 'clarfb.f', 'clarfb_gett.f', 'clarfg.f', 'clarfgp.f', 'clarft.f', + 'clarfx.f', 'clarfy.f', 'clargv.f', 'clarnv.f', 'clarrv.f', 'clartg.f90', + 'clartv.f', 'clarz.f', 'clarzb.f', 'clarzt.f', 'clascl.f', 'claset.f', + 'clasr.f', 'classq.f90', 'claswp.f', 'clasyf.f', 'clasyf_rook.f', + 'clasyf_rk.f', 'clasyf_aa.f', 'clatbs.f', 'clatdf.f', 'clatps.f', + 'clatrd.f', 'clatrs.f', 'clatrz.f', 'clauu2.f', 'clauum.f', 'cpbcon.f', + 'cpbequ.f', 'cpbrfs.f', 'cpbstf.f', 'cpbsv.f', 'cpbsvx.f', 'cpbtf2.f', + 'cpbtrf.f', 'cpbtrs.f', 'cpocon.f', 'cpoequ.f', 'cporfs.f', 'cposv.f', + 'cposvx.f', 'cpotf2.f', 'cpotrf2.f', 'cpotri.f', 'cpstrf.f', 'cpstf2.f', + 'cppcon.f', 'cppequ.f', 'cpprfs.f', 'cppsv.f', 'cppsvx.f', 'cpptrf.f', + 'cpptri.f', 'cpptrs.f', 'cptcon.f', 'cpteqr.f', 'cptrfs.f', 'cptsv.f', + 'cptsvx.f', 'cpttrf.f', 'cpttrs.f', 'cptts2.f', 'crscl.f', 'crot.f', + 'cspcon.f', 'cspmv.f', 'cspr.f', 'csprfs.f', 'cspsv.f', 'cspsvx.f', + 'csptrf.f', 'csptri.f', 'csptrs.f', 'csrscl.f', 'cstedc.f', 'cstegr.f', + 'cstein.f', 'csteqr.f', 'csycon.f', 'csymv.f', 'csyr.f', 'csyrfs.f', + 'csysv.f', 'csysvx.f', 'csytf2.f', 'csytrf.f', 'csytri.f', 'csytri2.f', + 'csytri2x.f', 'csyswapr.f', 'csytrs.f', 'csytrs2.f', 'csyconv.f', + 'csyconvf.f', 'csyconvf_rook.f', 'csytf2_rook.f', 'csytrf_rook.f', + 'csytrs_rook.f', 'csytri_rook.f', 'csycon_rook.f', 'csysv_rook.f', + 'csytf2_rk.f', 'csytrf_rk.f', 'csytrf_aa.f', 'csytrs_3.f', 'csytrs_aa.f', + 'csytri_3.f', 'csytri_3x.f', 'csycon_3.f', 'csysv_rk.f', 'csysv_aa.f', + 'csysv_aa_2stage.f', 'csytrf_aa_2stage.f', 'csytrs_aa_2stage.f', 'ctbcon.f', + 'ctbrfs.f', 'ctbtrs.f', 'ctgevc.f', 'ctgex2.f', 'ctgexc.f', 'ctgsen.f', + 'ctgsja.f', 'ctgsna.f', 'ctgsy2.f', 'ctgsyl.f', 'ctpcon.f', 'ctprfs.f', + 'ctptri.f', 'ctptrs.f', 'ctrcon.f', 'ctrevc.f', 'ctrevc3.f', 'ctrexc.f', + 'ctrrfs.f', 'ctrsen.f', 'ctrsna.f', 'ctrsyl.f', 'ctrti2.f', 'ctrtri.f', + 'ctrtrs.f', 'ctzrzf.f', 'cung2l.f', 'cung2r.f', 'cungbr.f', 'cunghr.f', + 'cungl2.f', 'cunglq.f', 'cungql.f', 'cungqr.f', 'cungr2.f', 'cungrq.f', + 'cungtr.f', 'cungtsqr.f', 'cungtsqr_row.f', 'cunm2l.f', 'cunm2r.f', + 'cunmbr.f', 'cunmhr.f', 'cunml2.f', 'cunm22.f', 'cunmlq.f', 'cunmql.f', + 'cunmqr.f', 'cunmr2.f', 'cunmr3.f', 'cunmrq.f', 'cunmrz.f', 'cunmtr.f', + 'cupgtr.f', 'cupmtr.f', 'icmax1.f', 'scsum1.f', 'cstemr.f', 'chfrk.f', + 'ctfttp.f', 'clanhf.f', 'cpftrf.f', 'cpftri.f', 'cpftrs.f', 'ctfsm.f', + 'ctftri.f', 'ctfttr.f', 'ctpttf.f', 'ctpttr.f', 'ctrttf.f', 'ctrttp.f', + 'cgeequb.f', 'cgbequb.f', 'csyequb.f', 'cpoequb.f', 'cheequb.f', 'cbbcsd.f', + 'clapmr.f', 'cunbdb.f', 'cunbdb1.f', 'cunbdb2.f', 'cunbdb3.f', 'cunbdb4.f', + 'cunbdb5.f', 'cunbdb6.f', 'cuncsd.f', 'cuncsd2by1.f', 'cgeqrt.f', + 'cgeqrt2.f', 'cgeqrt3.f', 'cgemqrt.f', 'ctpqrt.f', 'ctpqrt2.f', 'ctpmqrt.f', + 'ctprfb.f', 'cgelqt.f', 'cgelqt3.f', 'cgemlqt.f', 'cgetsls.f', + 'cgetsqrhrt.f', 'cgeqr.f', 'clatsqr.f', 'clamtsqr.f', 'cgemqr.f', 'cgelq.f', + 'claswlq.f', 'clamswlq.f', 'cgemlq.f', 'ctplqt.f', 'ctplqt2.f', 'ctpmlqt.f', + 'cunhr_col.f', 'claunhr_col_getrfnp.f', 'claunhr_col_getrfnp2.f', + 'chetrd_2stage.f', 'chetrd_he2hb.f', 'chetrd_hb2st.F', 'chb2st_kernels.f', + 'cheevd_2stage.f', 'cheev_2stage.f', 'cheevx_2stage.f', 'cheevr_2stage.f', + 'chbev_2stage.f', 'chbevx_2stage.f', 'chbevd_2stage.f', 'chegv_2stage.f', + 'cgesvdq.f', +] + +# _cxlasrc -- Single precision complex LAPACK routines using extra precision +_cxlasrc = [ + 'cgesvxx.f', 'cgerfsx.f', 'cla_gerfsx_extended.f', 'cla_geamv.f', + 'cla_gercond_c.f', 'cla_gercond_x.f', 'cla_gerpvgrw.f', 'csysvxx.f', + 'csyrfsx.f', 'cla_syrfsx_extended.f', 'cla_syamv.f', 'cla_syrcond_c.f', + 'cla_syrcond_x.f', 'cla_syrpvgrw.f', 'cposvxx.f', 'cporfsx.f', + 'cla_porfsx_extended.f', 'cla_porcond_c.f', 'cla_porcond_x.f', + 'cla_porpvgrw.f', 'cgbsvxx.f', 'cgbrfsx.f', 'cla_gbrfsx_extended.f', + 'cla_gbamv.f', 'cla_gbrcond_c.f', 'cla_gbrcond_x.f', 'cla_gbrpvgrw.f', + 'chesvxx.f', 'cherfsx.f', 'cla_herfsx_extended.f', 'cla_heamv.f', + 'cla_hercond_c.f', 'cla_hercond_x.f', 'cla_herpvgrw.f', 'cla_lin_berr.f', + 'clarscl2.f', 'clascl2.f', 'cla_wwaddw.f', +] + +# _zclasrc -- Double-single mixed precision complex routines +_zclasrc = [ + 'cgetrf.f', 'cgetrf2.f', 'cgetrs.f', 'claswp.f', 'cpotrf.f', 'cpotrf2.f', + 'cpotrs.f', 'cgetrs.f', 'cpotrf.f', 'cgetrf.f', 'sisnan.f', 'slaisnan.f' +] + +# _dlasrc -- Double precision real LAPACK routines +_dlasrc = [ + 'dbdsvdx.f', 'dgbbrd.f', 'dgbcon.f', 'dgbequ.f', 'dgbrfs.f', 'dgbsv.f', + 'dgbsvx.f', 'dgbtf2.f', 'dgbtrf.f', 'dgbtrs.f', 'dgebak.f', 'dgebal.f', + 'dgebd2.f', 'dgebrd.f', 'dgecon.f', 'dgeequ.f', 'dgees.f', 'dgeesx.f', + 'dgeev.f', 'dgeevx.f', 'dgehd2.f', 'dgehrd.f', 'dgelq2.f', 'dgelqf.f', + 'dgels.f', 'dgelsd.f', 'dgelss.f', 'dgelsy.f', 'dgeql2.f', 'dgeqlf.f', + 'dgeqp3.f', 'dgeqr2.f', 'dgeqr2p.f', 'dgeqrf.f', 'dgeqrfp.f', 'dgerfs.f', + 'dgerq2.f', 'dgerqf.f', 'dgesc2.f', 'dgesdd.f', 'dgesv.f', 'dgesvd.f', + 'dgesvdx.f', 'dgesvx.f', 'dgetc2.f', 'dgetf2.f', 'dgetrf.f', 'dgetrf2.f', + 'dgetri.f', 'dgetrs.f', 'dggbak.f', 'dggbal.f', 'dgges.f', 'dgges3.f', + 'dggesx.f', 'dggev.f', 'dggev3.f', 'dggevx.f', 'dggglm.f', 'dgghrd.f', + 'dgghd3.f', 'dgglse.f', 'dggqrf.f', 'dggrqf.f', 'dggsvd3.f', 'dggsvp3.f', + 'dgtcon.f', 'dgtrfs.f', 'dgtsv.f', 'dgtsvx.f', 'dgttrf.f', 'dgttrs.f', + 'dgtts2.f', 'dhgeqz.f', 'dlaqz0.f', 'dlaqz1.f', 'dlaqz2.f', 'dlaqz3.f', + 'dlaqz4.f', 'dhsein.f', 'dhseqr.f', 'dlabrd.f', 'dlacon.f', 'dlacn2.f', + 'dlaein.f', 'dlaexc.f', 'dlag2.f', 'dlags2.f', 'dlagtm.f', 'dlagv2.f', + 'dlahqr.f', 'dlahr2.f', 'dlaic1.f', 'dlaln2.f', 'dlals0.f', 'dlalsa.f', + 'dlalsd.f', 'dlangb.f', 'dlange.f', 'dlangt.f', 'dlanhs.f', 'dlansb.f', + 'dlansp.f', 'dlansy.f', 'dlantb.f', 'dlantp.f', 'dlantr.f', 'dlanv2.f', + 'dlapll.f', 'dlapmt.f', 'dlaqgb.f', 'dlaqge.f', 'dlaqp2.f', 'dlaqps.f', + 'dlaqsb.f', 'dlaqsp.f', 'dlaqsy.f', 'dlaqr0.f', 'dlaqr1.f', 'dlaqr2.f', + 'dlaqr3.f', 'dlaqr4.f', 'dlaqr5.f', 'dlaqtr.f', 'dlar1v.f', 'dlar2v.f', + 'iladlr.f', 'iladlc.f', 'dlarf.f', 'dlarfb.f', 'dlarfb_gett.f', 'dlarfg.f', + 'dlarfgp.f', 'dlarft.f', 'dlarfx.f', 'dlarfy.f', 'dlargv.f', 'dlarrv.f', + 'dlartv.f', 'dlarz.f', 'dlarzb.f', 'dlarzt.f', 'dlaswp.f', 'dlasy2.f', + 'dlasyf.f', 'dlasyf_rook.f', 'dlasyf_rk.f', 'dlasyf_aa.f', 'dlatbs.f', + 'dlatdf.f', 'dlatps.f', 'dlatrd.f', 'dlatrs.f', 'dlatrz.f', 'dlauu2.f', + 'dlauum.f', 'dopgtr.f', 'dopmtr.f', 'dorg2l.f', 'dorg2r.f', 'dorgbr.f', + 'dorghr.f', 'dorgl2.f', 'dorglq.f', 'dorgql.f', 'dorgqr.f', 'dorgr2.f', + 'dorgrq.f', 'dorgtr.f', 'dorgtsqr.f', 'dorgtsqr_row.f', 'dorm2l.f', + 'dorm2r.f', 'dorm22.f', 'dormbr.f', 'dormhr.f', 'dorml2.f', 'dormlq.f', + 'dormql.f', 'dormqr.f', 'dormr2.f', 'dormr3.f', 'dormrq.f', 'dormrz.f', + 'dormtr.f', 'dpbcon.f', 'dpbequ.f', 'dpbrfs.f', 'dpbstf.f', 'dpbsv.f', + 'dpbsvx.f', 'dpbtf2.f', 'dpbtrf.f', 'dpbtrs.f', 'dpocon.f', 'dpoequ.f', + 'dporfs.f', 'dposv.f', 'dposvx.f', 'dpotf2.f', 'dpotrf.f', 'dpotrf2.f', + 'dpotri.f', 'dpotrs.f', 'dpstrf.f', 'dpstf2.f', 'dppcon.f', 'dppequ.f', + 'dpprfs.f', 'dppsv.f', 'dppsvx.f', 'dpptrf.f', 'dpptri.f', 'dpptrs.f', + 'dptcon.f', 'dpteqr.f', 'dptrfs.f', 'dptsv.f', 'dptsvx.f', 'dpttrs.f', + 'dptts2.f', 'drscl.f', 'dsbev.f', 'dsbevd.f', 'dsbevx.f', 'dsbgst.f', + 'dsbgv.f', 'dsbgvd.f', 'dsbgvx.f', 'dsbtrd.f', 'dspcon.f', 'dspev.f', + 'dspevd.f', 'dspevx.f', 'dspgst.f', 'dspgv.f', 'dspgvd.f', 'dspgvx.f', + 'dsprfs.f', 'dspsv.f', 'dspsvx.f', 'dsptrd.f', 'dsptrf.f', 'dsptri.f', + 'dsptrs.f', 'dstegr.f', 'dstev.f', 'dstevd.f', 'dstevr.f', 'dsycon.f', + 'dsyev.f', 'dsyevd.f', 'dsyevr.f', 'dsyevx.f', 'dsygs2.f', 'dsygst.f', + 'dsygv.f', 'dsygvd.f', 'dsygvx.f', 'dsyrfs.f', 'dsysv.f', 'dsysvx.f', + 'dsytd2.f', 'dsytf2.f', 'dsytrd.f', 'dsytrf.f', 'dsytri.f', 'dsytrs.f', + 'dsytrs2.f', 'dsytri2.f', 'dsytri2x.f', 'dsyswapr.f', 'dsyconv.f', + 'dsyconvf.f', 'dsyconvf_rook.f', 'dsytf2_rook.f', 'dsytrf_rook.f', + 'dsytrs_rook.f', 'dsytri_rook.f', 'dsycon_rook.f', 'dsysv_rook.f', + 'dsytf2_rk.f', 'dsytrf_rk.f', 'dsytrs_3.f', 'dsytri_3.f', 'dsytri_3x.f', + 'dsycon_3.f', 'dsysv_rk.f', 'dsysv_aa.f', 'dsytrf_aa.f', 'dsytrs_aa.f', + 'dsysv_aa_2stage.f', 'dsytrf_aa_2stage.f', 'dsytrs_aa_2stage.f', 'dtbcon.f', + 'dtbrfs.f', 'dtbtrs.f', 'dtgevc.f', 'dtgex2.f', 'dtgexc.f', 'dtgsen.f', + 'dtgsja.f', 'dtgsna.f', 'dtgsy2.f', 'dtgsyl.f', 'dtpcon.f', 'dtprfs.f', + 'dtptri.f', 'dtptrs.f', 'dtrcon.f', 'dtrevc.f', 'dtrevc3.f', 'dtrexc.f', + 'dtrrfs.f', 'dtrsen.f', 'dtrsna.f', 'dtrsyl.f', 'dtrti2.f', 'dtrtri.f', + 'dtrtrs.f', 'dtzrzf.f', 'dstemr.f', 'dsgesv.f', 'dsposv.f', 'dlag2s.f', + 'slag2d.f', 'dlat2s.f', 'dlansf.f', 'dpftrf.f', 'dpftri.f', 'dpftrs.f', + 'dsfrk.f', 'dtfsm.f', 'dtftri.f', 'dtfttp.f', 'dtfttr.f', 'dtpttf.f', + 'dtpttr.f', 'dtrttf.f', 'dtrttp.f', 'dgejsv.f', 'dgesvj.f', 'dgsvj0.f', + 'dgsvj1.f', 'dgeequb.f', 'dsyequb.f', 'dpoequb.f', 'dgbequb.f', 'dbbcsd.f', + 'dlapmr.f', 'dorbdb.f', 'dorbdb1.f', 'dorbdb2.f', 'dorbdb3.f', 'dorbdb4.f', + 'dorbdb5.f', 'dorbdb6.f', 'dorcsd.f', 'dorcsd2by1.f', 'dgeqrt.f', + 'dgeqrt2.f', 'dgeqrt3.f', 'dgemqrt.f', 'dtpqrt.f', 'dtpqrt2.f', 'dtpmqrt.f', + 'dtprfb.f', 'dgelqt.f', 'dgelqt3.f', 'dgemlqt.f', 'dgetsls.f', + 'dgetsqrhrt.f', 'dgeqr.f', 'dlatsqr.f', 'dlamtsqr.f', 'dgemqr.f', 'dgelq.f', + 'dlaswlq.f', 'dlamswlq.f', 'dgemlq.f', 'dtplqt.f', 'dtplqt2.f', 'dtpmlqt.f', + 'dorhr_col.f', 'dlaorhr_col_getrfnp.f', 'dlaorhr_col_getrfnp2.f', + 'dsytrd_2stage.f', 'dsytrd_sy2sb.f', 'dsytrd_sb2st.F', 'dsb2st_kernels.f', + 'dsyevd_2stage.f', 'dsyev_2stage.f', 'dsyevx_2stage.f', 'dsyevr_2stage.f', + 'dsbev_2stage.f', 'dsbevx_2stage.f', 'dsbevd_2stage.f', 'dsygv_2stage.f', + 'dgesvdq.f', +] + +# _dxlasrc -- Double precision real LAPACK routines using extra precision +_dxlasrc = [ + 'dgesvxx.f', 'dgerfsx.f', 'dla_gerfsx_extended.f', 'dla_geamv.f', + 'dla_gercond.f', 'dla_gerpvgrw.f', 'dsysvxx.f', 'dsyrfsx.f', + 'dla_syrfsx_extended.f', 'dla_syamv.f', 'dla_syrcond.f', 'dla_syrpvgrw.f', + 'dposvxx.f', 'dporfsx.f', 'dla_porfsx_extended.f', 'dla_porcond.f', + 'dla_porpvgrw.f', 'dgbsvxx.f', 'dgbrfsx.f', 'dla_gbrfsx_extended.f', + 'dla_gbamv.f', 'dla_gbrcond.f', 'dla_gbrpvgrw.f', 'dla_lin_berr.f', + 'dlarscl2.f', 'dlascl2.f', 'dla_wwaddw.f' +] + +# _zlasrc -- Double precision complex LAPACK routines +_zlasrc = [ + 'zbdsqr.f', 'zgbbrd.f', 'zgbcon.f', 'zgbequ.f', 'zgbrfs.f', 'zgbsv.f', + 'zgbsvx.f', 'zgbtf2.f', 'zgbtrf.f', 'zgbtrs.f', 'zgebak.f', 'zgebal.f', + 'zgebd2.f', 'zgebrd.f', 'zgecon.f', 'zgeequ.f', 'zgees.f', 'zgeesx.f', + 'zgeev.f', 'zgeevx.f', 'zgehd2.f', 'zgehrd.f', 'zgelq2.f', 'zgelqf.f', + 'zgels.f', 'zgelsd.f', 'zgelss.f', 'zgelsy.f', 'zgeql2.f', 'zgeqlf.f', + 'zgeqp3.f', 'zgeqr2.f', 'zgeqr2p.f', 'zgeqrf.f', 'zgeqrfp.f', 'zgerfs.f', + 'zgerq2.f', 'zgerqf.f', 'zgesc2.f', 'zgesdd.f', 'zgesv.f', 'zgesvd.f', + 'zgesvdx.f', 'zgesvx.f', 'zgesvj.f', 'zgejsv.f', 'zgsvj0.f', 'zgsvj1.f', + 'zgetc2.f', 'zgetf2.f', 'zgetrf.f', 'zgetrf2.f', 'zgetri.f', 'zgetrs.f', + 'zggbak.f', 'zggbal.f', 'zgges.f', 'zgges3.f', 'zggesx.f', 'zggev.f', + 'zggev3.f', 'zggevx.f', 'zggglm.f', 'zgghrd.f', 'zgghd3.f', 'zgglse.f', + 'zggqrf.f', 'zggrqf.f', 'zggsvd3.f', 'zggsvp3.f', 'zgtcon.f', 'zgtrfs.f', + 'zgtsv.f', 'zgtsvx.f', 'zgttrf.f', 'zgttrs.f', 'zgtts2.f', 'zhbev.f', + 'zhbevd.f', 'zhbevx.f', 'zhbgst.f', 'zhbgv.f', 'zhbgvd.f', 'zhbgvx.f', + 'zhbtrd.f', 'zhecon.f', 'zheev.f', 'zheevd.f', 'zheevr.f', 'zheevx.f', + 'zhegs2.f', 'zhegst.f', 'zhegv.f', 'zhegvd.f', 'zhegvx.f', 'zherfs.f', + 'zhesv.f', 'zhesvx.f', 'zhetd2.f', 'zhetf2.f', 'zhetrd.f', 'zhetrf.f', + 'zhetri.f', 'zhetri2.f', 'zhetri2x.f', 'zheswapr.f', 'zhetrs.f', + 'zhetrs2.f', 'zhetf2_rook.f', 'zhetrf_rook.f', 'zhetri_rook.f', + 'zhetrs_rook.f', 'zhecon_rook.f', 'zhesv_rook.f', 'zhetf2_rk.f', + 'zhetrf_rk.f', 'zhetri_3.f', 'zhetri_3x.f', 'zhetrs_3.f', 'zhecon_3.f', + 'zhesv_rk.f', 'zhesv_aa.f', 'zhetrf_aa.f', 'zhetrs_aa.f', + 'zhesv_aa_2stage.f', 'zhetrf_aa_2stage.f', 'zhetrs_aa_2stage.f', 'zhgeqz.f', + 'zhpcon.f', 'zhpev.f', 'zhpevd.f', 'zlaqz0.f', 'zlaqz1.f', 'zlaqz2.f', + 'zlaqz3.f', 'zhpevx.f', 'zhpgst.f', 'zhpgv.f', 'zhpgvd.f', 'zhpgvx.f', + 'zhprfs.f', 'zhpsv.f', 'zhpsvx.f', 'zhptrd.f', 'zhptrf.f', 'zhptri.f', + 'zhptrs.f', 'zhsein.f', 'zhseqr.f', 'zlabrd.f', 'zlacgv.f', 'zlacon.f', + 'zlacn2.f', 'zlacp2.f', 'zlacpy.f', 'zlacrm.f', 'zlacrt.f', 'zladiv.f', + 'zlaed0.f', 'zlaed7.f', 'zlaed8.f', 'zlaein.f', 'zlaesy.f', 'zlaev2.f', + 'zlags2.f', 'zlagtm.f', 'zlahef.f', 'zlahef_rook.f', 'zlahef_rk.f', + 'zlahef_aa.f', 'zlahqr.f', 'zlahr2.f', 'zlaic1.f', 'zlals0.f', 'zlalsa.f', + 'zlalsd.f', 'zlangb.f', 'zlange.f', 'zlangt.f', 'zlanhb.f', 'zlanhe.f', + 'zlanhp.f', 'zlanhs.f', 'zlanht.f', 'zlansb.f', 'zlansp.f', 'zlansy.f', + 'zlantb.f', 'zlantp.f', 'zlantr.f', 'zlapll.f', 'zlapmt.f', 'zlaqgb.f', + 'zlaqge.f', 'zlaqhb.f', 'zlaqhe.f', 'zlaqhp.f', 'zlaqp2.f', 'zlaqps.f', + 'zlaqsb.f', 'zlaqr0.f', 'zlaqr1.f', 'zlaqr2.f', 'zlaqr3.f', 'zlaqr4.f', + 'zlaqr5.f', 'zlaqsp.f', 'zlaqsy.f', 'zlar1v.f', 'zlar2v.f', 'ilazlr.f', + 'ilazlc.f', 'zlarcm.f', 'zlarf.f', 'zlarfb.f', 'zlarfb_gett.f', 'zlarfg.f', + 'zlarfgp.f', 'zlarft.f', 'zlarfx.f', 'zlarfy.f', 'zlargv.f', 'zlarnv.f', + 'zlarrv.f', 'zlartg.f90', 'zlartv.f', 'zlarz.f', 'zlarzb.f', 'zlarzt.f', + 'zlascl.f', 'zlaset.f', 'zlasr.f', 'zlassq.f90', 'zlaswp.f', 'zlasyf.f', + 'zlasyf_rook.f', 'zlasyf_rk.f', 'zlasyf_aa.f', 'zlatbs.f', 'zlatdf.f', + 'zlatps.f', 'zlatrd.f', 'zlatrs.f', 'zlatrz.f', 'zlauu2.f', 'zlauum.f', + 'zpbcon.f', 'zpbequ.f', 'zpbrfs.f', 'zpbstf.f', 'zpbsv.f', 'zpbsvx.f', + 'zpbtf2.f', 'zpbtrf.f', 'zpbtrs.f', 'zpocon.f', 'zpoequ.f', 'zporfs.f', + 'zposv.f', 'zposvx.f', 'zpotf2.f', 'zpotrf.f', 'zpotrf2.f', 'zpotri.f', + 'zpotrs.f', 'zpstrf.f', 'zpstf2.f', 'zppcon.f', 'zppequ.f', 'zpprfs.f', + 'zppsv.f', 'zppsvx.f', 'zpptrf.f', 'zpptri.f', 'zpptrs.f', 'zptcon.f', + 'zpteqr.f', 'zptrfs.f', 'zptsv.f', 'zptsvx.f', 'zpttrf.f', 'zpttrs.f', + 'zptts2.f', 'zrscl.f', 'zrot.f', 'zspcon.f', 'zspmv.f', 'zspr.f', + 'zsprfs.f', 'zspsv.f', 'zspsvx.f', 'zsptrf.f', 'zsptri.f', 'zsptrs.f', + 'zdrscl.f', 'zstedc.f', 'zstegr.f', 'zstein.f', 'zsteqr.f', 'zsycon.f', + 'zsymv.f', 'zsyr.f', 'zsyrfs.f', 'zsysv.f', 'zsysvx.f', 'zsytf2.f', + 'zsytrf.f', 'zsytri.f', 'zsytri2.f', 'zsytri2x.f', 'zsyswapr.f', 'zsytrs.f', + 'zsytrs2.f', 'zsyconv.f', 'zsyconvf.f', 'zsyconvf_rook.f', 'zsytf2_rook.f', + 'zsytrf_rook.f', 'zsytrs_rook.f', 'zsytrs_aa.f', 'zsytri_rook.f', + 'zsycon_rook.f', 'zsysv_rook.f', 'zsytf2_rk.f', 'zsytrf_rk.f', + 'zsytrf_aa.f', 'zsytrs_3.f', 'zsysv_aa_2stage.f', 'zsytrf_aa_2stage.f', + 'zsytrs_aa_2stage.f', 'zsytri_3.f', 'zsytri_3x.f', 'zsycon_3.f', + 'zsysv_rk.f', 'zsysv_aa.f', 'ztbcon.f', 'ztbrfs.f', 'ztbtrs.f', 'ztgevc.f', + 'ztgex2.f', 'ztgexc.f', 'ztgsen.f', 'ztgsja.f', 'ztgsna.f', 'ztgsy2.f', + 'ztgsyl.f', 'ztpcon.f', 'ztprfs.f', 'ztptri.f', 'ztptrs.f', 'ztrcon.f', + 'ztrevc.f', 'ztrevc3.f', 'ztrexc.f', 'ztrrfs.f', 'ztrsen.f', 'ztrsna.f', + 'ztrsyl.f', 'ztrti2.f', 'ztrtri.f', 'ztrtrs.f', 'ztzrzf.f', 'zung2l.f', + 'zung2r.f', 'zungbr.f', 'zunghr.f', 'zungl2.f', 'zunglq.f', 'zungql.f', + 'zungqr.f', 'zungr2.f', 'zungrq.f', 'zungtr.f', 'zungtsqr.f', + 'zungtsqr_row.f', 'zunm2l.f', 'zunm2r.f', 'zunmbr.f', 'zunmhr.f', + 'zunml2.f', 'zunm22.f', 'zunmlq.f', 'zunmql.f', 'zunmqr.f', 'zunmr2.f', + 'zunmr3.f', 'zunmrq.f', 'zunmrz.f', 'zunmtr.f', 'zupgtr.f', 'zupmtr.f', + 'izmax1.f', 'dzsum1.f', 'zstemr.f', 'zcgesv.f', 'zcposv.f', 'zlag2c.f', + 'clag2z.f', 'zlat2c.f', 'zhfrk.f', 'ztfttp.f', 'zlanhf.f', 'zpftrf.f', + 'zpftri.f', 'zpftrs.f', 'ztfsm.f', 'ztftri.f', 'ztfttr.f', 'ztpttf.f', + 'ztpttr.f', 'ztrttf.f', 'ztrttp.f', 'zgeequb.f', 'zgbequb.f', 'zsyequb.f', + 'zpoequb.f', 'zheequb.f', 'zbbcsd.f', 'zlapmr.f', 'zunbdb.f', 'zunbdb1.f', + 'zunbdb2.f', 'zunbdb3.f', 'zunbdb4.f', 'zunbdb5.f', 'zunbdb6.f', 'zuncsd.f', + 'zuncsd2by1.f', 'zgeqrt.f', 'zgeqrt2.f', 'zgeqrt3.f', 'zgemqrt.f', + 'ztpqrt.f', 'ztpqrt2.f', 'ztpmqrt.f', 'ztprfb.f', 'ztplqt.f', 'ztplqt2.f', + 'ztpmlqt.f', 'zgelqt.f', 'zgelqt3.f', 'zgemlqt.f', 'zgetsls.f', + 'zgetsqrhrt.f', 'zgeqr.f', 'zlatsqr.f', 'zlamtsqr.f', 'zgemqr.f', 'zgelq.f', + 'zlaswlq.f', 'zlamswlq.f', 'zgemlq.f', 'zunhr_col.f', + 'zlaunhr_col_getrfnp.f', 'zlaunhr_col_getrfnp2.f', 'zhetrd_2stage.f', + 'zhetrd_he2hb.f', 'zhetrd_hb2st.F', 'zhb2st_kernels.f', 'zheevd_2stage.f', + 'zheev_2stage.f', 'zheevx_2stage.f', 'zheevr_2stage.f', 'zhbev_2stage.f', + 'zhbevx_2stage.f', 'zhbevd_2stage.f', 'zhegv_2stage.f', 'zgesvdq.f', +] + +# _zxlasrc -- Double precision complex LAPACK routines using extra precision +_zxlasrc = [ + 'zgesvxx.f', 'zgerfsx.f', 'zla_gerfsx_extended.f', 'zla_geamv.f', + 'zla_gercond_c.f', 'zla_gercond_x.f', 'zla_gerpvgrw.f', 'zsysvxx.f', + 'zsyrfsx.f', 'zla_syrfsx_extended.f', 'zla_syamv.f', 'zla_syrcond_c.f', + 'zla_syrcond_x.f', 'zla_syrpvgrw.f', 'zposvxx.f', 'zporfsx.f', + 'zla_porfsx_extended.f', 'zla_porcond_c.f', 'zla_porcond_x.f', + 'zla_porpvgrw.f', 'zgbsvxx.f', 'zgbrfsx.f', 'zla_gbrfsx_extended.f', + 'zla_gbamv.f', 'zla_gbrcond_c.f', 'zla_gbrcond_x.f', 'zla_gbrpvgrw.f', + 'zhesvxx.f', 'zherfsx.f', 'zla_herfsx_extended.f', 'zla_heamv.f', + 'zla_hercond_c.f', 'zla_hercond_x.f', 'zla_herpvgrw.f', 'zla_lin_berr.f', + 'zlarscl2.f', 'zlascl2.f', 'zla_wwaddw.f' +] + +# Start making the lapack target +if use_xblas + _lapack_netlib_srcs += _sxlasrc + _dxlasrc + _cxlasrc + _zxlasrc + _deps = dependency('xblas') +else + _libs += netlib_blas +endif + +if prec == 's' or build_single or build_all_prec + _lapack_netlib_srcs += _slasrc + _dslasrc + _sclaux +endif + +if prec == 'd' or build_double or build_all_prec + _lapack_netlib_srcs += _dlasrc + _dslasrc + _dzlaux +endif + +if prec == 'c' or build_complex or build_all_prec + _lapack_netlib_srcs += _clasrc + _zclasrc + _sclaux +endif + +if prec == 'z' or build_complex16 or build_all_prec + _lapack_netlib_srcs += _zlasrc + _zclasrc + _dzlaux +endif + +# Create the blas library +netlib_lapack = library(_netlib_lapack_name, + sources: _lapack_netlib_srcs, + link_with: _libs, + version: lapack_version, + soversion: lapack_major_version, + install: true) diff --git a/lapack-netlib/meson.build b/lapack-netlib/meson.build index 460a2b559..cc34ee6d0 100644 --- a/lapack-netlib/meson.build +++ b/lapack-netlib/meson.build @@ -17,6 +17,7 @@ build_complex = get_option('build_complex') build_complex16 = get_option('build_complex16') build_all_prec = get_option('build_all_prec') use_c_lapack = get_option('use_c_lapack') +use_xblas = get_option('use_xblas') # Sub-directories subdir('BLAS') # Defines netlib_blas and _allblas diff --git a/meson_options.txt b/meson_options.txt index d659d33f7..e9cdb464d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -29,6 +29,8 @@ option('build_complex16', type: 'boolean', value: true, description: 'Build doub # From lapack-netlib option('realkind', type : 'string', value : 'd', description : 's: real32 d: real64 c: complex32 z: complex64') +option('use_xblas', type : 'boolean', value : false, + description : 'Build extended precision (needs XBLAS)') # Meson only # This is the equivalent of producing all precisions via make all inside lapack-netlib/blas/src