├── .github └── ISSUE_TEMPLATE.md ├── .gitignore ├── LICENSE.txt ├── README.md ├── all └── pom.xml ├── core └── pom.xml ├── generator ├── LICENSE.txt ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── fommil │ │ └── netlib │ │ └── generator │ │ ├── AbstractJavaGenerator.java │ │ ├── AbstractNetlibGenerator.java │ │ ├── F2jImplGenerator.java │ │ ├── F2jJavadocExtractor.java │ │ ├── JarMethodScanner.java │ │ ├── JavaInterfaceGenerator.java │ │ ├── NativeImplJavaGenerator.java │ │ └── NativeImplJniGenerator.java │ └── resources │ └── com │ └── github │ └── fommil │ └── netlib │ └── generator │ ├── netlib-common.stg │ ├── netlib-java.stg │ └── netlib-jni.stg ├── legacy ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── netlib │ ├── arpack │ └── ARPACK.java │ ├── blas │ └── BLAS.java │ └── lapack │ └── LAPACK.java ├── native_ref ├── java │ └── pom.xml ├── osx-x86_64 │ └── pom.xml ├── pom.xml ├── win-i686 │ └── pom.xml ├── win-x86_64 │ └── pom.xml └── xbuilds │ ├── linux-aarch64 │ └── pom.xml │ ├── linux-armhf │ ├── pom.xml │ └── rpi │ ├── linux-i686 │ └── pom.xml │ ├── linux-ppc64le │ └── pom.xml │ ├── linux-x86_64 │ └── pom.xml │ └── pom.xml ├── native_system ├── java │ └── pom.xml ├── osx-x86_64 │ └── pom.xml ├── pom.xml ├── win-i686 │ └── pom.xml ├── win-x86_64 │ └── pom.xml └── xbuilds │ ├── linux-aarch64 │ └── pom.xml │ ├── linux-armhf │ └── pom.xml │ ├── linux-i686 │ └── pom.xml │ ├── linux-ppc64le │ └── pom.xml │ ├── linux-x86_64 │ └── pom.xml │ └── pom.xml ├── netlib ├── ARPACK │ ├── arpack.h │ ├── debug.h │ ├── dgetv0.f │ ├── dlaqrb.f │ ├── dmout.f │ ├── dnaitr.f │ ├── dnapps.f │ ├── dnaup2.f │ ├── dnaupd.f │ ├── dnconv.f │ ├── dneigh.f │ ├── dneupd.f │ ├── dngets.f │ ├── dsaitr.f │ ├── dsapps.f │ ├── dsaup2.f │ ├── dsaupd.f │ ├── dsconv.f │ ├── dseigt.f │ ├── dsesrt.f │ ├── dseupd.f │ ├── dsgets.f │ ├── dsortc.f │ ├── dsortr.f │ ├── dstatn.f │ ├── dstats.f │ ├── dstqrb.f │ ├── dvout.f │ ├── icnteq.f │ ├── icopy.f │ ├── iset.f │ ├── iswap.f │ ├── ivout.f │ ├── second.f │ ├── sgetv0.f │ ├── slaqrb.f │ ├── smout.f │ ├── snaitr.f │ ├── snapps.f │ ├── snaup2.f │ ├── snaupd.f │ ├── snconv.f │ ├── sneigh.f │ ├── sneupd.f │ ├── sngets.f │ ├── ssaitr.f │ ├── ssapps.f │ ├── ssaup2.f │ ├── ssaupd.f │ ├── ssconv.f │ ├── sseigt.f │ ├── ssesrt.f │ ├── sseupd.f │ ├── ssgets.f │ ├── ssortc.f │ ├── ssortr.f │ ├── sstatn.f │ ├── sstats.f │ ├── sstqrb.f │ ├── stat.h │ ├── svout.f │ └── version.h ├── BLAS │ ├── dasum.f │ ├── daxpy.f │ ├── dcabs1.f │ ├── dcopy.f │ ├── ddot.f │ ├── dgbmv.f │ ├── dgemm.f │ ├── dgemv.f │ ├── dger.f │ ├── dnrm2.f │ ├── drot.f │ ├── drotg.f │ ├── drotm.f │ ├── drotmg.f │ ├── dsbmv.f │ ├── dscal.f │ ├── dsdot.f │ ├── dspmv.f │ ├── dspr.f │ ├── dspr2.f │ ├── dswap.f │ ├── dsymm.f │ ├── dsymv.f │ ├── dsyr.f │ ├── dsyr2.f │ ├── dsyr2k.f │ ├── dsyrk.f │ ├── dtbmv.f │ ├── dtbsv.f │ ├── dtpmv.f │ ├── dtpsv.f │ ├── dtrmm.f │ ├── dtrmv.f │ ├── dtrsm.f │ ├── dtrsv.f │ ├── dzasum.f │ ├── dznrm2.f │ ├── icamax.f │ ├── idamax.f │ ├── isamax.f │ ├── izamax.f │ ├── lsame.f │ ├── sasum.f │ ├── saxpy.f │ ├── scabs1.f │ ├── scasum.f │ ├── scnrm2.f │ ├── scopy.f │ ├── sdot.f │ ├── sdsdot.f │ ├── sgbmv.f │ ├── sgemm.f │ ├── sgemv.f │ ├── sger.f │ ├── snrm2.f │ ├── srot.f │ ├── srotg.f │ ├── srotm.f │ ├── srotmg.f │ ├── ssbmv.f │ ├── sscal.f │ ├── sspmv.f │ ├── sspr.f │ ├── sspr2.f │ ├── sswap.f │ ├── ssymm.f │ ├── ssymv.f │ ├── ssyr.f │ ├── ssyr2.f │ ├── ssyr2k.f │ ├── ssyrk.f │ ├── stbmv.f │ ├── stbsv.f │ ├── stpmv.f │ ├── stpsv.f │ ├── strmm.f │ ├── strmv.f │ ├── strsm.f │ ├── strsv.f │ └── xerbla.f ├── CBLAS │ ├── cblas.h │ ├── cblas_dasum.c │ ├── cblas_daxpy.c │ ├── cblas_dcopy.c │ ├── cblas_ddot.c │ ├── cblas_dgbmv.c │ ├── cblas_dgemm.c │ ├── cblas_dgemv.c │ ├── cblas_dger.c │ ├── cblas_dnrm2.c │ ├── cblas_drot.c │ ├── cblas_drotg.c │ ├── cblas_drotm.c │ ├── cblas_drotmg.c │ ├── cblas_dsbmv.c │ ├── cblas_dscal.c │ ├── cblas_dsdot.c │ ├── cblas_dspmv.c │ ├── cblas_dspr.c │ ├── cblas_dspr2.c │ ├── cblas_dswap.c │ ├── cblas_dsymm.c │ ├── cblas_dsymv.c │ ├── cblas_dsyr.c │ ├── cblas_dsyr2.c │ ├── cblas_dsyr2k.c │ ├── cblas_dsyrk.c │ ├── cblas_dtbmv.c │ ├── cblas_dtbsv.c │ ├── cblas_dtpmv.c │ ├── cblas_dtpsv.c │ ├── cblas_dtrmm.c │ ├── cblas_dtrmv.c │ ├── cblas_dtrsm.c │ ├── cblas_dtrsv.c │ ├── cblas_dzasum.c │ ├── cblas_dznrm2.c │ ├── cblas_f77.h │ ├── cblas_globals.c │ ├── cblas_icamax.c │ ├── cblas_idamax.c │ ├── cblas_isamax.c │ ├── cblas_izamax.c │ ├── cblas_sasum.c │ ├── cblas_saxpy.c │ ├── cblas_scasum.c │ ├── cblas_scnrm2.c │ ├── cblas_scopy.c │ ├── cblas_sdot.c │ ├── cblas_sdsdot.c │ ├── cblas_sgbmv.c │ ├── cblas_sgemm.c │ ├── cblas_sgemv.c │ ├── cblas_sger.c │ ├── cblas_snrm2.c │ ├── cblas_srot.c │ ├── cblas_srotg.c │ ├── cblas_srotm.c │ ├── cblas_srotmg.c │ ├── cblas_ssbmv.c │ ├── cblas_sscal.c │ ├── cblas_sspmv.c │ ├── cblas_sspr.c │ ├── cblas_sspr2.c │ ├── cblas_sswap.c │ ├── cblas_ssymm.c │ ├── cblas_ssymv.c │ ├── cblas_ssyr.c │ ├── cblas_ssyr2.c │ ├── cblas_ssyr2k.c │ ├── cblas_ssyrk.c │ ├── cblas_stbmv.c │ ├── cblas_stbsv.c │ ├── cblas_stpmv.c │ ├── cblas_stpsv.c │ ├── cblas_strmm.c │ ├── cblas_strmv.c │ ├── cblas_strsm.c │ ├── cblas_strsv.c │ ├── cblas_xerbla.c │ ├── dasumsub.f │ ├── ddotsub.f │ ├── dnrm2sub.f │ ├── dsdotsub.f │ ├── dzasumsub.f │ ├── dznrm2sub.f │ ├── icamaxsub.f │ ├── idamaxsub.f │ ├── isamaxsub.f │ ├── izamaxsub.f │ ├── sasumsub.f │ ├── scasumsub.f │ ├── scnrm2sub.f │ ├── sdotsub.f │ ├── sdsdotsub.f │ └── snrm2sub.f ├── JNI │ ├── netlib-jni.c │ └── netlib-jni.h ├── LAPACK │ ├── VARIANTS │ │ ├── cholesky │ │ │ ├── RL │ │ │ │ ├── dpotrf.f │ │ │ │ └── spotrf.f │ │ │ └── TOP │ │ │ │ ├── dpotrf.f │ │ │ │ └── spotrf.f │ │ ├── lu │ │ │ ├── CR │ │ │ │ ├── dgetrf.f │ │ │ │ └── sgetrf.f │ │ │ ├── LL │ │ │ │ ├── dgetrf.f │ │ │ │ └── sgetrf.f │ │ │ └── REC │ │ │ │ ├── dgetrf.f │ │ │ │ └── sgetrf.f │ │ └── qr │ │ │ └── LL │ │ │ ├── dgeqrf.f │ │ │ ├── sceil.f │ │ │ └── sgeqrf.f │ ├── chla_transtype.f │ ├── dbbcsd.f │ ├── dbdsdc.f │ ├── dbdsqr.f │ ├── ddisna.f │ ├── dgbbrd.f │ ├── dgbcon.f │ ├── dgbequ.f │ ├── dgbequb.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 │ ├── dgeequb.f │ ├── dgees.f │ ├── dgeesx.f │ ├── dgeev.f │ ├── dgeevx.f │ ├── dgegs.f │ ├── dgegv.f │ ├── dgehd2.f │ ├── dgehrd.f │ ├── dgejsv.f │ ├── dgelq2.f │ ├── dgelqf.f │ ├── dgels.f │ ├── dgelsd.f │ ├── dgelss.f │ ├── dgelsx.f │ ├── dgelsy.f │ ├── dgemqrt.f │ ├── dgeql2.f │ ├── dgeqlf.f │ ├── dgeqp3.f │ ├── dgeqpf.f │ ├── dgeqr2.f │ ├── dgeqr2p.f │ ├── dgeqrf.f │ ├── dgeqrfp.f │ ├── dgeqrt.f │ ├── dgeqrt2.f │ ├── dgeqrt3.f │ ├── dgerfs.f │ ├── dgerq2.f │ ├── dgerqf.f │ ├── dgesc2.f │ ├── dgesdd.f │ ├── dgesv.f │ ├── dgesvd.f │ ├── dgesvj.f │ ├── dgesvx.f │ ├── dgetc2.f │ ├── dgetf2.f │ ├── dgetrf.f │ ├── dgetri.f │ ├── dgetrs.f │ ├── dggbak.f │ ├── dggbal.f │ ├── dgges.f │ ├── dggesx.f │ ├── dggev.f │ ├── dggevx.f │ ├── dggglm.f │ ├── dgghrd.f │ ├── dgglse.f │ ├── dggqrf.f │ ├── dggrqf.f │ ├── dggsvd.f │ ├── dggsvp.f │ ├── dgsvj0.f │ ├── dgsvj1.f │ ├── dgtcon.f │ ├── dgtrfs.f │ ├── dgtsv.f │ ├── dgtsvx.f │ ├── dgttrf.f │ ├── dgttrs.f │ ├── dgtts2.f │ ├── dhgeqz.f │ ├── dhsein.f │ ├── dhseqr.f │ ├── disnan.f │ ├── dla_gbamv.f │ ├── dla_gbrcond.f │ ├── dla_gbrpvgrw.f │ ├── dla_geamv.f │ ├── dla_gercond.f │ ├── dla_gerpvgrw.f │ ├── dla_lin_berr.f │ ├── dla_porcond.f │ ├── dla_porpvgrw.f │ ├── dla_syamv.f │ ├── dla_syrcond.f │ ├── dla_syrpvgrw.f │ ├── dla_wwaddw.f │ ├── dlabad.f │ ├── dlabrd.f │ ├── dlacn2.f │ ├── dlacon.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 │ ├── dlaein.f │ ├── dlaev2.f │ ├── dlaexc.f │ ├── dlag2.f │ ├── dlag2s.f │ ├── dlagge.f │ ├── dlags2.f │ ├── dlagsy.f │ ├── dlagtf.f │ ├── dlagtm.f │ ├── dlagts.f │ ├── dlagv2.f │ ├── dlahilb.f │ ├── dlahqr.f │ ├── dlahr2.f │ ├── dlahrd.f │ ├── dlaic1.f │ ├── dlaisnan.f │ ├── dlakf2.f │ ├── dlaln2.f │ ├── dlals0.f │ ├── dlalsa.f │ ├── dlalsd.f │ ├── dlamch.f │ ├── dlamrg.f │ ├── dlaneg.f │ ├── dlangb.f │ ├── dlange.f │ ├── dlangt.f │ ├── dlanhs.f │ ├── dlansb.f │ ├── dlansf.f │ ├── dlansp.f │ ├── dlanst.f │ ├── dlansy.f │ ├── dlantb.f │ ├── dlantp.f │ ├── dlantr.f │ ├── dlanv2.f │ ├── dlapll.f │ ├── dlapmr.f │ ├── dlapmt.f │ ├── dlapy2.f │ ├── dlapy3.f │ ├── dlaqgb.f │ ├── dlaqge.f │ ├── dlaqp2.f │ ├── dlaqps.f │ ├── dlaqr0.f │ ├── dlaqr1.f │ ├── dlaqr2.f │ ├── dlaqr3.f │ ├── dlaqr4.f │ ├── dlaqr5.f │ ├── dlaqsb.f │ ├── dlaqsp.f │ ├── dlaqsy.f │ ├── dlaqtr.f │ ├── dlar1v.f │ ├── dlar2v.f │ ├── dlaran.f │ ├── dlarf.f │ ├── dlarfb.f │ ├── dlarfg.f │ ├── dlarfgp.f │ ├── dlarft.f │ ├── dlarfx.f │ ├── dlarge.f │ ├── dlargv.f │ ├── dlarnd.f │ ├── dlarnv.f │ ├── dlaror.f │ ├── dlarot.f │ ├── dlarra.f │ ├── dlarrb.f │ ├── dlarrc.f │ ├── dlarrd.f │ ├── dlarre.f │ ├── dlarrf.f │ ├── dlarrj.f │ ├── dlarrk.f │ ├── dlarrr.f │ ├── dlarrv.f │ ├── dlarscl2.f │ ├── dlartg.f │ ├── dlartgp.f │ ├── dlartgs.f │ ├── dlartv.f │ ├── dlaruv.f │ ├── dlarz.f │ ├── dlarzb.f │ ├── dlarzt.f │ ├── dlas2.f │ ├── dlascl.f │ ├── dlascl2.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.f │ ├── dlasv2.f │ ├── dlaswp.f │ ├── dlasy2.f │ ├── dlasyf.f │ ├── dlat2s.f │ ├── dlatbs.f │ ├── dlatdf.f │ ├── dlatm1.f │ ├── dlatm2.f │ ├── dlatm3.f │ ├── dlatm5.f │ ├── dlatm6.f │ ├── dlatm7.f │ ├── dlatme.f │ ├── dlatmr.f │ ├── dlatms.f │ ├── dlatmt.f │ ├── dlatps.f │ ├── dlatrd.f │ ├── dlatrs.f │ ├── dlatrz.f │ ├── dlatzm.f │ ├── dlauu2.f │ ├── dlauum.f │ ├── dopgtr.f │ ├── dopmtr.f │ ├── dorbdb.f │ ├── dorcsd.f │ ├── dorg2l.f │ ├── dorg2r.f │ ├── dorgbr.f │ ├── dorghr.f │ ├── dorgl2.f │ ├── dorglq.f │ ├── dorgql.f │ ├── dorgqr.f │ ├── dorgr2.f │ ├── dorgrq.f │ ├── dorgtr.f │ ├── dorm2l.f │ ├── dorm2r.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 │ ├── dpftrf.f │ ├── dpftri.f │ ├── dpftrs.f │ ├── dpocon.f │ ├── dpoequ.f │ ├── dpoequb.f │ ├── dporfs.f │ ├── dposv.f │ ├── dposvx.f │ ├── dpotf2.f │ ├── dpotrf.f │ ├── dpotri.f │ ├── dpotrs.f │ ├── dppcon.f │ ├── dppequ.f │ ├── dpprfs.f │ ├── dppsv.f │ ├── dppsvx.f │ ├── dpptrf.f │ ├── dpptri.f │ ├── dpptrs.f │ ├── dpstf2.f │ ├── dpstrf.f │ ├── dptcon.f │ ├── dpteqr.f │ ├── dptrfs.f │ ├── dptsv.f │ ├── dptsvx.f │ ├── dpttrf.f │ ├── dpttrs.f │ ├── dptts2.f │ ├── drscl.f │ ├── dsbev.f │ ├── dsbevd.f │ ├── dsbevx.f │ ├── dsbgst.f │ ├── dsbgv.f │ ├── dsbgvd.f │ ├── dsbgvx.f │ ├── dsbtrd.f │ ├── dsfrk.f │ ├── dsgesv.f │ ├── dspcon.f │ ├── dspev.f │ ├── dspevd.f │ ├── dspevx.f │ ├── dspgst.f │ ├── dspgv.f │ ├── dspgvd.f │ ├── dspgvx.f │ ├── dsposv.f │ ├── dsprfs.f │ ├── dspsv.f │ ├── dspsvx.f │ ├── dsptrd.f │ ├── dsptrf.f │ ├── dsptri.f │ ├── dsptrs.f │ ├── dstebz.f │ ├── dstedc.f │ ├── dstegr.f │ ├── dstein.f │ ├── dstemr.f │ ├── dsteqr.f │ ├── dsterf.f │ ├── dstev.f │ ├── dstevd.f │ ├── dstevr.f │ ├── dstevx.f │ ├── dsycon.f │ ├── dsyconv.f │ ├── dsyequb.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 │ ├── dsyswapr.f │ ├── dsytd2.f │ ├── dsytf2.f │ ├── dsytrd.f │ ├── dsytrf.f │ ├── dsytri.f │ ├── dsytri2.f │ ├── dsytri2x.f │ ├── dsytrs.f │ ├── dsytrs2.f │ ├── dtbcon.f │ ├── dtbrfs.f │ ├── dtbtrs.f │ ├── dtfsm.f │ ├── dtftri.f │ ├── dtfttp.f │ ├── dtfttr.f │ ├── dtgevc.f │ ├── dtgex2.f │ ├── dtgexc.f │ ├── dtgsen.f │ ├── dtgsja.f │ ├── dtgsna.f │ ├── dtgsy2.f │ ├── dtgsyl.f │ ├── dtpcon.f │ ├── dtpmqrt.f │ ├── dtpqrt.f │ ├── dtpqrt2.f │ ├── dtprfb.f │ ├── dtprfs.f │ ├── dtptri.f │ ├── dtptrs.f │ ├── dtpttf.f │ ├── dtpttr.f │ ├── dtrcon.f │ ├── dtrevc.f │ ├── dtrexc.f │ ├── dtrrfs.f │ ├── dtrsen.f │ ├── dtrsna.f │ ├── dtrsyl.f │ ├── dtrti2.f │ ├── dtrtri.f │ ├── dtrtrs.f │ ├── dtrttf.f │ ├── dtrttp.f │ ├── dtzrqf.f │ ├── dtzrzf.f │ ├── dzsum1.f │ ├── icmax1.f │ ├── ieeeck.f │ ├── ilaclc.f │ ├── ilaclr.f │ ├── iladiag.f │ ├── iladlc.f │ ├── iladlr.f │ ├── ilaenv.f │ ├── ilaprec.f │ ├── ilaslc.f │ ├── ilaslr.f │ ├── ilatrans.f │ ├── ilauplo.f │ ├── ilaver.f │ ├── ilazlc.f │ ├── ilazlr.f │ ├── iparmq.f │ ├── izmax1.f │ ├── lsamen.f │ ├── sbbcsd.f │ ├── sbdsdc.f │ ├── sbdsqr.f │ ├── scsum1.f │ ├── sdisna.f │ ├── sgbbrd.f │ ├── sgbcon.f │ ├── sgbequ.f │ ├── sgbequb.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 │ ├── sgeequb.f │ ├── sgees.f │ ├── sgeesx.f │ ├── sgeev.f │ ├── sgeevx.f │ ├── sgegs.f │ ├── sgegv.f │ ├── sgehd2.f │ ├── sgehrd.f │ ├── sgejsv.f │ ├── sgelq2.f │ ├── sgelqf.f │ ├── sgels.f │ ├── sgelsd.f │ ├── sgelss.f │ ├── sgelsx.f │ ├── sgelsy.f │ ├── sgemqrt.f │ ├── sgeql2.f │ ├── sgeqlf.f │ ├── sgeqp3.f │ ├── sgeqpf.f │ ├── sgeqr2.f │ ├── sgeqr2p.f │ ├── sgeqrf.f │ ├── sgeqrfp.f │ ├── sgeqrt.f │ ├── sgeqrt2.f │ ├── sgeqrt3.f │ ├── sgerfs.f │ ├── sgerq2.f │ ├── sgerqf.f │ ├── sgesc2.f │ ├── sgesdd.f │ ├── sgesv.f │ ├── sgesvd.f │ ├── sgesvj.f │ ├── sgesvx.f │ ├── sgetc2.f │ ├── sgetf2.f │ ├── sgetrf.f │ ├── sgetri.f │ ├── sgetrs.f │ ├── sggbak.f │ ├── sggbal.f │ ├── sgges.f │ ├── sggesx.f │ ├── sggev.f │ ├── sggevx.f │ ├── sggglm.f │ ├── sgghrd.f │ ├── sgglse.f │ ├── sggqrf.f │ ├── sggrqf.f │ ├── sggsvd.f │ ├── sggsvp.f │ ├── sgsvj0.f │ ├── sgsvj1.f │ ├── sgtcon.f │ ├── sgtrfs.f │ ├── sgtsv.f │ ├── sgtsvx.f │ ├── sgttrf.f │ ├── sgttrs.f │ ├── sgtts2.f │ ├── shgeqz.f │ ├── shsein.f │ ├── shseqr.f │ ├── sisnan.f │ ├── sla_gbamv.f │ ├── sla_gbrcond.f │ ├── sla_gbrpvgrw.f │ ├── sla_geamv.f │ ├── sla_gercond.f │ ├── sla_gerpvgrw.f │ ├── sla_lin_berr.f │ ├── sla_porcond.f │ ├── sla_porpvgrw.f │ ├── sla_syamv.f │ ├── sla_syrcond.f │ ├── sla_syrpvgrw.f │ ├── sla_wwaddw.f │ ├── slabad.f │ ├── slabrd.f │ ├── slacn2.f │ ├── slacon.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 │ ├── slaein.f │ ├── slaev2.f │ ├── slaexc.f │ ├── slag2.f │ ├── slag2d.f │ ├── slagge.f │ ├── slags2.f │ ├── slagsy.f │ ├── slagtf.f │ ├── slagtm.f │ ├── slagts.f │ ├── slagv2.f │ ├── slahilb.f │ ├── slahqr.f │ ├── slahr2.f │ ├── slahrd.f │ ├── slaic1.f │ ├── slaisnan.f │ ├── slakf2.f │ ├── slaln2.f │ ├── slals0.f │ ├── slalsa.f │ ├── slalsd.f │ ├── slamch.f │ ├── slamrg.f │ ├── slaneg.f │ ├── slangb.f │ ├── slange.f │ ├── slangt.f │ ├── slanhs.f │ ├── slansb.f │ ├── slansf.f │ ├── slansp.f │ ├── slanst.f │ ├── slansy.f │ ├── slantb.f │ ├── slantp.f │ ├── slantr.f │ ├── slanv2.f │ ├── slapll.f │ ├── slapmr.f │ ├── slapmt.f │ ├── slapy2.f │ ├── slapy3.f │ ├── slaqgb.f │ ├── slaqge.f │ ├── slaqp2.f │ ├── slaqps.f │ ├── slaqr0.f │ ├── slaqr1.f │ ├── slaqr2.f │ ├── slaqr3.f │ ├── slaqr4.f │ ├── slaqr5.f │ ├── slaqsb.f │ ├── slaqsp.f │ ├── slaqsy.f │ ├── slaqtr.f │ ├── slar1v.f │ ├── slar2v.f │ ├── slaran.f │ ├── slarf.f │ ├── slarfb.f │ ├── slarfg.f │ ├── slarfgp.f │ ├── slarft.f │ ├── slarfx.f │ ├── slarge.f │ ├── slargv.f │ ├── slarnd.f │ ├── slarnv.f │ ├── slaror.f │ ├── slarot.f │ ├── slarra.f │ ├── slarrb.f │ ├── slarrc.f │ ├── slarrd.f │ ├── slarre.f │ ├── slarrf.f │ ├── slarrj.f │ ├── slarrk.f │ ├── slarrr.f │ ├── slarrv.f │ ├── slarscl2.f │ ├── slartg.f │ ├── slartgp.f │ ├── slartgs.f │ ├── slartv.f │ ├── slaruv.f │ ├── slarz.f │ ├── slarzb.f │ ├── slarzt.f │ ├── slas2.f │ ├── slascl.f │ ├── slascl2.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.f │ ├── slasv2.f │ ├── slaswp.f │ ├── slasy2.f │ ├── slasyf.f │ ├── slatbs.f │ ├── slatdf.f │ ├── slatm1.f │ ├── slatm2.f │ ├── slatm3.f │ ├── slatm5.f │ ├── slatm6.f │ ├── slatm7.f │ ├── slatme.f │ ├── slatmr.f │ ├── slatms.f │ ├── slatmt.f │ ├── slatps.f │ ├── slatrd.f │ ├── slatrs.f │ ├── slatrz.f │ ├── slatzm.f │ ├── slauu2.f │ ├── slauum.f │ ├── sopgtr.f │ ├── sopmtr.f │ ├── sorbdb.f │ ├── sorcsd.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 │ ├── 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 │ ├── spftrf.f │ ├── spftri.f │ ├── spftrs.f │ ├── spocon.f │ ├── spoequ.f │ ├── spoequb.f │ ├── sporfs.f │ ├── sposv.f │ ├── sposvx.f │ ├── spotf2.f │ ├── spotrf.f │ ├── spotri.f │ ├── spotrs.f │ ├── sppcon.f │ ├── sppequ.f │ ├── spprfs.f │ ├── sppsv.f │ ├── sppsvx.f │ ├── spptrf.f │ ├── spptri.f │ ├── spptrs.f │ ├── spstf2.f │ ├── spstrf.f │ ├── sptcon.f │ ├── spteqr.f │ ├── sptrfs.f │ ├── sptsv.f │ ├── sptsvx.f │ ├── spttrf.f │ ├── spttrs.f │ ├── sptts2.f │ ├── srscl.f │ ├── ssbev.f │ ├── ssbevd.f │ ├── ssbevx.f │ ├── ssbgst.f │ ├── ssbgv.f │ ├── ssbgvd.f │ ├── ssbgvx.f │ ├── ssbtrd.f │ ├── ssfrk.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 │ ├── sstebz.f │ ├── sstedc.f │ ├── sstegr.f │ ├── sstein.f │ ├── sstemr.f │ ├── ssteqr.f │ ├── ssterf.f │ ├── sstev.f │ ├── sstevd.f │ ├── sstevr.f │ ├── sstevx.f │ ├── ssycon.f │ ├── ssyconv.f │ ├── ssyequb.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 │ ├── ssyswapr.f │ ├── ssytd2.f │ ├── ssytf2.f │ ├── ssytrd.f │ ├── ssytrf.f │ ├── ssytri.f │ ├── ssytri2.f │ ├── ssytri2x.f │ ├── ssytrs.f │ ├── ssytrs2.f │ ├── stbcon.f │ ├── stbrfs.f │ ├── stbtrs.f │ ├── stfsm.f │ ├── stftri.f │ ├── stfttp.f │ ├── stfttr.f │ ├── stgevc.f │ ├── stgex2.f │ ├── stgexc.f │ ├── stgsen.f │ ├── stgsja.f │ ├── stgsna.f │ ├── stgsy2.f │ ├── stgsyl.f │ ├── stpcon.f │ ├── stpmqrt.f │ ├── stpqrt.f │ ├── stpqrt2.f │ ├── stprfb.f │ ├── stprfs.f │ ├── stptri.f │ ├── stptrs.f │ ├── stpttf.f │ ├── stpttr.f │ ├── strcon.f │ ├── strevc.f │ ├── strexc.f │ ├── strrfs.f │ ├── strsen.f │ ├── strsna.f │ ├── strsyl.f │ ├── strti2.f │ ├── strtri.f │ ├── strtrs.f │ ├── strttf.f │ ├── strttp.f │ ├── stzrqf.f │ ├── stzrzf.f │ └── xerbla_array.f ├── LAPACKE │ ├── lapacke.h │ ├── lapacke_config.h │ ├── lapacke_d_nancheck.c │ ├── lapacke_dbbcsd.c │ ├── lapacke_dbbcsd_work.c │ ├── lapacke_dbdsdc.c │ ├── lapacke_dbdsdc_work.c │ ├── lapacke_dbdsqr.c │ ├── lapacke_dbdsqr_work.c │ ├── lapacke_ddisna.c │ ├── lapacke_ddisna_work.c │ ├── lapacke_dgb_nancheck.c │ ├── lapacke_dgb_trans.c │ ├── lapacke_dgbbrd.c │ ├── lapacke_dgbbrd_work.c │ ├── lapacke_dgbcon.c │ ├── lapacke_dgbcon_work.c │ ├── lapacke_dgbequ.c │ ├── lapacke_dgbequ_work.c │ ├── lapacke_dgbequb.c │ ├── lapacke_dgbequb_work.c │ ├── lapacke_dgbrfs.c │ ├── lapacke_dgbrfs_work.c │ ├── lapacke_dgbsv.c │ ├── lapacke_dgbsv_work.c │ ├── lapacke_dgbsvx.c │ ├── lapacke_dgbsvx_work.c │ ├── lapacke_dgbtrf.c │ ├── lapacke_dgbtrf_work.c │ ├── lapacke_dgbtrs.c │ ├── lapacke_dgbtrs_work.c │ ├── lapacke_dge_nancheck.c │ ├── lapacke_dge_trans.c │ ├── lapacke_dgebak.c │ ├── lapacke_dgebak_work.c │ ├── lapacke_dgebal.c │ ├── lapacke_dgebal_work.c │ ├── lapacke_dgebrd.c │ ├── lapacke_dgebrd_work.c │ ├── lapacke_dgecon.c │ ├── lapacke_dgecon_work.c │ ├── lapacke_dgeequ.c │ ├── lapacke_dgeequ_work.c │ ├── lapacke_dgeequb.c │ ├── lapacke_dgeequb_work.c │ ├── lapacke_dgees.c │ ├── lapacke_dgees_work.c │ ├── lapacke_dgeesx.c │ ├── lapacke_dgeesx_work.c │ ├── lapacke_dgeev.c │ ├── lapacke_dgeev_work.c │ ├── lapacke_dgeevx.c │ ├── lapacke_dgeevx_work.c │ ├── lapacke_dgehrd.c │ ├── lapacke_dgehrd_work.c │ ├── lapacke_dgejsv.c │ ├── lapacke_dgejsv_work.c │ ├── lapacke_dgelq2.c │ ├── lapacke_dgelq2_work.c │ ├── lapacke_dgelqf.c │ ├── lapacke_dgelqf_work.c │ ├── lapacke_dgels.c │ ├── lapacke_dgels_work.c │ ├── lapacke_dgelsd.c │ ├── lapacke_dgelsd_work.c │ ├── lapacke_dgelss.c │ ├── lapacke_dgelss_work.c │ ├── lapacke_dgelsy.c │ ├── lapacke_dgelsy_work.c │ ├── lapacke_dgemqrt.c │ ├── lapacke_dgemqrt_work.c │ ├── lapacke_dgeqlf.c │ ├── lapacke_dgeqlf_work.c │ ├── lapacke_dgeqp3.c │ ├── lapacke_dgeqp3_work.c │ ├── lapacke_dgeqpf.c │ ├── lapacke_dgeqpf_work.c │ ├── lapacke_dgeqr2.c │ ├── lapacke_dgeqr2_work.c │ ├── lapacke_dgeqrf.c │ ├── lapacke_dgeqrf_work.c │ ├── lapacke_dgeqrfp.c │ ├── lapacke_dgeqrfp_work.c │ ├── lapacke_dgeqrt.c │ ├── lapacke_dgeqrt2.c │ ├── lapacke_dgeqrt2_work.c │ ├── lapacke_dgeqrt3.c │ ├── lapacke_dgeqrt3_work.c │ ├── lapacke_dgeqrt_work.c │ ├── lapacke_dgerfs.c │ ├── lapacke_dgerfs_work.c │ ├── lapacke_dgerqf.c │ ├── lapacke_dgerqf_work.c │ ├── lapacke_dgesdd.c │ ├── lapacke_dgesdd_work.c │ ├── lapacke_dgesv.c │ ├── lapacke_dgesv_work.c │ ├── lapacke_dgesvd.c │ ├── lapacke_dgesvd_work.c │ ├── lapacke_dgesvj.c │ ├── lapacke_dgesvj_work.c │ ├── lapacke_dgesvx.c │ ├── lapacke_dgesvx_work.c │ ├── lapacke_dgetf2.c │ ├── lapacke_dgetf2_work.c │ ├── lapacke_dgetrf.c │ ├── lapacke_dgetrf_work.c │ ├── lapacke_dgetri.c │ ├── lapacke_dgetri_work.c │ ├── lapacke_dgetrs.c │ ├── lapacke_dgetrs_work.c │ ├── lapacke_dgg_nancheck.c │ ├── lapacke_dgg_trans.c │ ├── lapacke_dggbak.c │ ├── lapacke_dggbak_work.c │ ├── lapacke_dggbal.c │ ├── lapacke_dggbal_work.c │ ├── lapacke_dgges.c │ ├── lapacke_dgges_work.c │ ├── lapacke_dggesx.c │ ├── lapacke_dggesx_work.c │ ├── lapacke_dggev.c │ ├── lapacke_dggev_work.c │ ├── lapacke_dggevx.c │ ├── lapacke_dggevx_work.c │ ├── lapacke_dggglm.c │ ├── lapacke_dggglm_work.c │ ├── lapacke_dgghrd.c │ ├── lapacke_dgghrd_work.c │ ├── lapacke_dgglse.c │ ├── lapacke_dgglse_work.c │ ├── lapacke_dggqrf.c │ ├── lapacke_dggqrf_work.c │ ├── lapacke_dggrqf.c │ ├── lapacke_dggrqf_work.c │ ├── lapacke_dggsvd.c │ ├── lapacke_dggsvd_work.c │ ├── lapacke_dggsvp.c │ ├── lapacke_dggsvp_work.c │ ├── lapacke_dgt_nancheck.c │ ├── lapacke_dgtcon.c │ ├── lapacke_dgtcon_work.c │ ├── lapacke_dgtrfs.c │ ├── lapacke_dgtrfs_work.c │ ├── lapacke_dgtsv.c │ ├── lapacke_dgtsv_work.c │ ├── lapacke_dgtsvx.c │ ├── lapacke_dgtsvx_work.c │ ├── lapacke_dgttrf.c │ ├── lapacke_dgttrf_work.c │ ├── lapacke_dgttrs.c │ ├── lapacke_dgttrs_work.c │ ├── lapacke_dhgeqz.c │ ├── lapacke_dhgeqz_work.c │ ├── lapacke_dhs_nancheck.c │ ├── lapacke_dhs_trans.c │ ├── lapacke_dhsein.c │ ├── lapacke_dhsein_work.c │ ├── lapacke_dhseqr.c │ ├── lapacke_dhseqr_work.c │ ├── lapacke_dlacpy.c │ ├── lapacke_dlacpy_work.c │ ├── lapacke_dlag2s.c │ ├── lapacke_dlag2s_work.c │ ├── lapacke_dlagge.c │ ├── lapacke_dlagge_work.c │ ├── lapacke_dlagsy.c │ ├── lapacke_dlagsy_work.c │ ├── lapacke_dlamch.c │ ├── lapacke_dlamch_work.c │ ├── lapacke_dlange.c │ ├── lapacke_dlange_work.c │ ├── lapacke_dlansy.c │ ├── lapacke_dlansy_work.c │ ├── lapacke_dlantr.c │ ├── lapacke_dlantr_work.c │ ├── lapacke_dlapmr.c │ ├── lapacke_dlapmr_work.c │ ├── lapacke_dlapy2.c │ ├── lapacke_dlapy2_work.c │ ├── lapacke_dlapy3.c │ ├── lapacke_dlapy3_work.c │ ├── lapacke_dlarfb.c │ ├── lapacke_dlarfb_work.c │ ├── lapacke_dlarfg.c │ ├── lapacke_dlarfg_work.c │ ├── lapacke_dlarft.c │ ├── lapacke_dlarft_work.c │ ├── lapacke_dlarfx.c │ ├── lapacke_dlarfx_work.c │ ├── lapacke_dlarnv.c │ ├── lapacke_dlarnv_work.c │ ├── lapacke_dlartgp.c │ ├── lapacke_dlartgp_work.c │ ├── lapacke_dlartgs.c │ ├── lapacke_dlartgs_work.c │ ├── lapacke_dlaset.c │ ├── lapacke_dlaset_work.c │ ├── lapacke_dlasrt.c │ ├── lapacke_dlasrt_work.c │ ├── lapacke_dlaswp.c │ ├── lapacke_dlaswp_work.c │ ├── lapacke_dlatms.c │ ├── lapacke_dlatms_work.c │ ├── lapacke_dlauum.c │ ├── lapacke_dlauum_work.c │ ├── lapacke_dopgtr.c │ ├── lapacke_dopgtr_work.c │ ├── lapacke_dopmtr.c │ ├── lapacke_dopmtr_work.c │ ├── lapacke_dorbdb.c │ ├── lapacke_dorbdb_work.c │ ├── lapacke_dorcsd.c │ ├── lapacke_dorcsd_work.c │ ├── lapacke_dorgbr.c │ ├── lapacke_dorgbr_work.c │ ├── lapacke_dorghr.c │ ├── lapacke_dorghr_work.c │ ├── lapacke_dorglq.c │ ├── lapacke_dorglq_work.c │ ├── lapacke_dorgql.c │ ├── lapacke_dorgql_work.c │ ├── lapacke_dorgqr.c │ ├── lapacke_dorgqr_work.c │ ├── lapacke_dorgrq.c │ ├── lapacke_dorgrq_work.c │ ├── lapacke_dorgtr.c │ ├── lapacke_dorgtr_work.c │ ├── lapacke_dormbr.c │ ├── lapacke_dormbr_work.c │ ├── lapacke_dormhr.c │ ├── lapacke_dormhr_work.c │ ├── lapacke_dormlq.c │ ├── lapacke_dormlq_work.c │ ├── lapacke_dormql.c │ ├── lapacke_dormql_work.c │ ├── lapacke_dormqr.c │ ├── lapacke_dormqr_work.c │ ├── lapacke_dormrq.c │ ├── lapacke_dormrq_work.c │ ├── lapacke_dormrz.c │ ├── lapacke_dormrz_work.c │ ├── lapacke_dormtr.c │ ├── lapacke_dormtr_work.c │ ├── lapacke_dpb_nancheck.c │ ├── lapacke_dpb_trans.c │ ├── lapacke_dpbcon.c │ ├── lapacke_dpbcon_work.c │ ├── lapacke_dpbequ.c │ ├── lapacke_dpbequ_work.c │ ├── lapacke_dpbrfs.c │ ├── lapacke_dpbrfs_work.c │ ├── lapacke_dpbstf.c │ ├── lapacke_dpbstf_work.c │ ├── lapacke_dpbsv.c │ ├── lapacke_dpbsv_work.c │ ├── lapacke_dpbsvx.c │ ├── lapacke_dpbsvx_work.c │ ├── lapacke_dpbtrf.c │ ├── lapacke_dpbtrf_work.c │ ├── lapacke_dpbtrs.c │ ├── lapacke_dpbtrs_work.c │ ├── lapacke_dpf_nancheck.c │ ├── lapacke_dpf_trans.c │ ├── lapacke_dpftrf.c │ ├── lapacke_dpftrf_work.c │ ├── lapacke_dpftri.c │ ├── lapacke_dpftri_work.c │ ├── lapacke_dpftrs.c │ ├── lapacke_dpftrs_work.c │ ├── lapacke_dpo_nancheck.c │ ├── lapacke_dpo_trans.c │ ├── lapacke_dpocon.c │ ├── lapacke_dpocon_work.c │ ├── lapacke_dpoequ.c │ ├── lapacke_dpoequ_work.c │ ├── lapacke_dpoequb.c │ ├── lapacke_dpoequb_work.c │ ├── lapacke_dporfs.c │ ├── lapacke_dporfs_work.c │ ├── lapacke_dposv.c │ ├── lapacke_dposv_work.c │ ├── lapacke_dposvx.c │ ├── lapacke_dposvx_work.c │ ├── lapacke_dpotrf.c │ ├── lapacke_dpotrf_work.c │ ├── lapacke_dpotri.c │ ├── lapacke_dpotri_work.c │ ├── lapacke_dpotrs.c │ ├── lapacke_dpotrs_work.c │ ├── lapacke_dpp_nancheck.c │ ├── lapacke_dpp_trans.c │ ├── lapacke_dppcon.c │ ├── lapacke_dppcon_work.c │ ├── lapacke_dppequ.c │ ├── lapacke_dppequ_work.c │ ├── lapacke_dpprfs.c │ ├── lapacke_dpprfs_work.c │ ├── lapacke_dppsv.c │ ├── lapacke_dppsv_work.c │ ├── lapacke_dppsvx.c │ ├── lapacke_dppsvx_work.c │ ├── lapacke_dpptrf.c │ ├── lapacke_dpptrf_work.c │ ├── lapacke_dpptri.c │ ├── lapacke_dpptri_work.c │ ├── lapacke_dpptrs.c │ ├── lapacke_dpptrs_work.c │ ├── lapacke_dpstrf.c │ ├── lapacke_dpstrf_work.c │ ├── lapacke_dpt_nancheck.c │ ├── lapacke_dptcon.c │ ├── lapacke_dptcon_work.c │ ├── lapacke_dpteqr.c │ ├── lapacke_dpteqr_work.c │ ├── lapacke_dptrfs.c │ ├── lapacke_dptrfs_work.c │ ├── lapacke_dptsv.c │ ├── lapacke_dptsv_work.c │ ├── lapacke_dptsvx.c │ ├── lapacke_dptsvx_work.c │ ├── lapacke_dpttrf.c │ ├── lapacke_dpttrf_work.c │ ├── lapacke_dpttrs.c │ ├── lapacke_dpttrs_work.c │ ├── lapacke_dsb_nancheck.c │ ├── lapacke_dsb_trans.c │ ├── lapacke_dsbev.c │ ├── lapacke_dsbev_work.c │ ├── lapacke_dsbevd.c │ ├── lapacke_dsbevd_work.c │ ├── lapacke_dsbevx.c │ ├── lapacke_dsbevx_work.c │ ├── lapacke_dsbgst.c │ ├── lapacke_dsbgst_work.c │ ├── lapacke_dsbgv.c │ ├── lapacke_dsbgv_work.c │ ├── lapacke_dsbgvd.c │ ├── lapacke_dsbgvd_work.c │ ├── lapacke_dsbgvx.c │ ├── lapacke_dsbgvx_work.c │ ├── lapacke_dsbtrd.c │ ├── lapacke_dsbtrd_work.c │ ├── lapacke_dsfrk.c │ ├── lapacke_dsfrk_work.c │ ├── lapacke_dsgesv.c │ ├── lapacke_dsgesv_work.c │ ├── lapacke_dsp_nancheck.c │ ├── lapacke_dsp_trans.c │ ├── lapacke_dspcon.c │ ├── lapacke_dspcon_work.c │ ├── lapacke_dspev.c │ ├── lapacke_dspev_work.c │ ├── lapacke_dspevd.c │ ├── lapacke_dspevd_work.c │ ├── lapacke_dspevx.c │ ├── lapacke_dspevx_work.c │ ├── lapacke_dspgst.c │ ├── lapacke_dspgst_work.c │ ├── lapacke_dspgv.c │ ├── lapacke_dspgv_work.c │ ├── lapacke_dspgvd.c │ ├── lapacke_dspgvd_work.c │ ├── lapacke_dspgvx.c │ ├── lapacke_dspgvx_work.c │ ├── lapacke_dsposv.c │ ├── lapacke_dsposv_work.c │ ├── lapacke_dsprfs.c │ ├── lapacke_dsprfs_work.c │ ├── lapacke_dspsv.c │ ├── lapacke_dspsv_work.c │ ├── lapacke_dspsvx.c │ ├── lapacke_dspsvx_work.c │ ├── lapacke_dsptrd.c │ ├── lapacke_dsptrd_work.c │ ├── lapacke_dsptrf.c │ ├── lapacke_dsptrf_work.c │ ├── lapacke_dsptri.c │ ├── lapacke_dsptri_work.c │ ├── lapacke_dsptrs.c │ ├── lapacke_dsptrs_work.c │ ├── lapacke_dst_nancheck.c │ ├── lapacke_dstebz.c │ ├── lapacke_dstebz_work.c │ ├── lapacke_dstedc.c │ ├── lapacke_dstedc_work.c │ ├── lapacke_dstegr.c │ ├── lapacke_dstegr_work.c │ ├── lapacke_dstein.c │ ├── lapacke_dstein_work.c │ ├── lapacke_dstemr.c │ ├── lapacke_dstemr_work.c │ ├── lapacke_dsteqr.c │ ├── lapacke_dsteqr_work.c │ ├── lapacke_dsterf.c │ ├── lapacke_dsterf_work.c │ ├── lapacke_dstev.c │ ├── lapacke_dstev_work.c │ ├── lapacke_dstevd.c │ ├── lapacke_dstevd_work.c │ ├── lapacke_dstevr.c │ ├── lapacke_dstevr_work.c │ ├── lapacke_dstevx.c │ ├── lapacke_dstevx_work.c │ ├── lapacke_dsy_nancheck.c │ ├── lapacke_dsy_trans.c │ ├── lapacke_dsycon.c │ ├── lapacke_dsycon_work.c │ ├── lapacke_dsyconv.c │ ├── lapacke_dsyconv_work.c │ ├── lapacke_dsyequb.c │ ├── lapacke_dsyequb_work.c │ ├── lapacke_dsyev.c │ ├── lapacke_dsyev_work.c │ ├── lapacke_dsyevd.c │ ├── lapacke_dsyevd_work.c │ ├── lapacke_dsyevr.c │ ├── lapacke_dsyevr_work.c │ ├── lapacke_dsyevx.c │ ├── lapacke_dsyevx_work.c │ ├── lapacke_dsygst.c │ ├── lapacke_dsygst_work.c │ ├── lapacke_dsygv.c │ ├── lapacke_dsygv_work.c │ ├── lapacke_dsygvd.c │ ├── lapacke_dsygvd_work.c │ ├── lapacke_dsygvx.c │ ├── lapacke_dsygvx_work.c │ ├── lapacke_dsyrfs.c │ ├── lapacke_dsyrfs_work.c │ ├── lapacke_dsysv.c │ ├── lapacke_dsysv_work.c │ ├── lapacke_dsysvx.c │ ├── lapacke_dsysvx_work.c │ ├── lapacke_dsyswapr.c │ ├── lapacke_dsyswapr_work.c │ ├── lapacke_dsytrd.c │ ├── lapacke_dsytrd_work.c │ ├── lapacke_dsytrf.c │ ├── lapacke_dsytrf_work.c │ ├── lapacke_dsytri.c │ ├── lapacke_dsytri2.c │ ├── lapacke_dsytri2_work.c │ ├── lapacke_dsytri2x.c │ ├── lapacke_dsytri2x_work.c │ ├── lapacke_dsytri_work.c │ ├── lapacke_dsytrs.c │ ├── lapacke_dsytrs2.c │ ├── lapacke_dsytrs2_work.c │ ├── lapacke_dsytrs_work.c │ ├── lapacke_dtb_nancheck.c │ ├── lapacke_dtb_trans.c │ ├── lapacke_dtbcon.c │ ├── lapacke_dtbcon_work.c │ ├── lapacke_dtbrfs.c │ ├── lapacke_dtbrfs_work.c │ ├── lapacke_dtbtrs.c │ ├── lapacke_dtbtrs_work.c │ ├── lapacke_dtf_nancheck.c │ ├── lapacke_dtf_trans.c │ ├── lapacke_dtfsm.c │ ├── lapacke_dtfsm_work.c │ ├── lapacke_dtftri.c │ ├── lapacke_dtftri_work.c │ ├── lapacke_dtfttp.c │ ├── lapacke_dtfttp_work.c │ ├── lapacke_dtfttr.c │ ├── lapacke_dtfttr_work.c │ ├── lapacke_dtgevc.c │ ├── lapacke_dtgevc_work.c │ ├── lapacke_dtgexc.c │ ├── lapacke_dtgexc_work.c │ ├── lapacke_dtgsen.c │ ├── lapacke_dtgsen_work.c │ ├── lapacke_dtgsja.c │ ├── lapacke_dtgsja_work.c │ ├── lapacke_dtgsna.c │ ├── lapacke_dtgsna_work.c │ ├── lapacke_dtgsyl.c │ ├── lapacke_dtgsyl_work.c │ ├── lapacke_dtp_nancheck.c │ ├── lapacke_dtp_trans.c │ ├── lapacke_dtpcon.c │ ├── lapacke_dtpcon_work.c │ ├── lapacke_dtpmqrt.c │ ├── lapacke_dtpmqrt_work.c │ ├── lapacke_dtpqrt.c │ ├── lapacke_dtpqrt2.c │ ├── lapacke_dtpqrt2_work.c │ ├── lapacke_dtpqrt_work.c │ ├── lapacke_dtprfb.c │ ├── lapacke_dtprfb_work.c │ ├── lapacke_dtprfs.c │ ├── lapacke_dtprfs_work.c │ ├── lapacke_dtptri.c │ ├── lapacke_dtptri_work.c │ ├── lapacke_dtptrs.c │ ├── lapacke_dtptrs_work.c │ ├── lapacke_dtpttf.c │ ├── lapacke_dtpttf_work.c │ ├── lapacke_dtpttr.c │ ├── lapacke_dtpttr_work.c │ ├── lapacke_dtr_nancheck.c │ ├── lapacke_dtr_trans.c │ ├── lapacke_dtrcon.c │ ├── lapacke_dtrcon_work.c │ ├── lapacke_dtrevc.c │ ├── lapacke_dtrevc_work.c │ ├── lapacke_dtrexc.c │ ├── lapacke_dtrexc_work.c │ ├── lapacke_dtrrfs.c │ ├── lapacke_dtrrfs_work.c │ ├── lapacke_dtrsen.c │ ├── lapacke_dtrsen_work.c │ ├── lapacke_dtrsna.c │ ├── lapacke_dtrsna_work.c │ ├── lapacke_dtrsyl.c │ ├── lapacke_dtrsyl_work.c │ ├── lapacke_dtrtri.c │ ├── lapacke_dtrtri_work.c │ ├── lapacke_dtrtrs.c │ ├── lapacke_dtrtrs_work.c │ ├── lapacke_dtrttf.c │ ├── lapacke_dtrttf_work.c │ ├── lapacke_dtrttp.c │ ├── lapacke_dtrttp_work.c │ ├── lapacke_dtzrzf.c │ ├── lapacke_dtzrzf_work.c │ ├── lapacke_ilaver.c │ ├── lapacke_lsame.c │ ├── lapacke_make_complex_double.c │ ├── lapacke_make_complex_float.c │ ├── lapacke_mangling.h │ ├── lapacke_mangling_with_flags.h │ ├── lapacke_s_nancheck.c │ ├── lapacke_sbbcsd.c │ ├── lapacke_sbbcsd_work.c │ ├── lapacke_sbdsdc.c │ ├── lapacke_sbdsdc_work.c │ ├── lapacke_sbdsqr.c │ ├── lapacke_sbdsqr_work.c │ ├── lapacke_sdisna.c │ ├── lapacke_sdisna_work.c │ ├── lapacke_sgb_nancheck.c │ ├── lapacke_sgb_trans.c │ ├── lapacke_sgbbrd.c │ ├── lapacke_sgbbrd_work.c │ ├── lapacke_sgbcon.c │ ├── lapacke_sgbcon_work.c │ ├── lapacke_sgbequ.c │ ├── lapacke_sgbequ_work.c │ ├── lapacke_sgbequb.c │ ├── lapacke_sgbequb_work.c │ ├── lapacke_sgbrfs.c │ ├── lapacke_sgbrfs_work.c │ ├── lapacke_sgbsv.c │ ├── lapacke_sgbsv_work.c │ ├── lapacke_sgbsvx.c │ ├── lapacke_sgbsvx_work.c │ ├── lapacke_sgbtrf.c │ ├── lapacke_sgbtrf_work.c │ ├── lapacke_sgbtrs.c │ ├── lapacke_sgbtrs_work.c │ ├── lapacke_sge_nancheck.c │ ├── lapacke_sge_trans.c │ ├── lapacke_sgebak.c │ ├── lapacke_sgebak_work.c │ ├── lapacke_sgebal.c │ ├── lapacke_sgebal_work.c │ ├── lapacke_sgebrd.c │ ├── lapacke_sgebrd_work.c │ ├── lapacke_sgecon.c │ ├── lapacke_sgecon_work.c │ ├── lapacke_sgeequ.c │ ├── lapacke_sgeequ_work.c │ ├── lapacke_sgeequb.c │ ├── lapacke_sgeequb_work.c │ ├── lapacke_sgees.c │ ├── lapacke_sgees_work.c │ ├── lapacke_sgeesx.c │ ├── lapacke_sgeesx_work.c │ ├── lapacke_sgeev.c │ ├── lapacke_sgeev_work.c │ ├── lapacke_sgeevx.c │ ├── lapacke_sgeevx_work.c │ ├── lapacke_sgehrd.c │ ├── lapacke_sgehrd_work.c │ ├── lapacke_sgejsv.c │ ├── lapacke_sgejsv_work.c │ ├── lapacke_sgelq2.c │ ├── lapacke_sgelq2_work.c │ ├── lapacke_sgelqf.c │ ├── lapacke_sgelqf_work.c │ ├── lapacke_sgels.c │ ├── lapacke_sgels_work.c │ ├── lapacke_sgelsd.c │ ├── lapacke_sgelsd_work.c │ ├── lapacke_sgelss.c │ ├── lapacke_sgelss_work.c │ ├── lapacke_sgelsy.c │ ├── lapacke_sgelsy_work.c │ ├── lapacke_sgemqrt.c │ ├── lapacke_sgemqrt_work.c │ ├── lapacke_sgeqlf.c │ ├── lapacke_sgeqlf_work.c │ ├── lapacke_sgeqp3.c │ ├── lapacke_sgeqp3_work.c │ ├── lapacke_sgeqpf.c │ ├── lapacke_sgeqpf_work.c │ ├── lapacke_sgeqr2.c │ ├── lapacke_sgeqr2_work.c │ ├── lapacke_sgeqrf.c │ ├── lapacke_sgeqrf_work.c │ ├── lapacke_sgeqrfp.c │ ├── lapacke_sgeqrfp_work.c │ ├── lapacke_sgeqrt.c │ ├── lapacke_sgeqrt2.c │ ├── lapacke_sgeqrt2_work.c │ ├── lapacke_sgeqrt3.c │ ├── lapacke_sgeqrt3_work.c │ ├── lapacke_sgeqrt_work.c │ ├── lapacke_sgerfs.c │ ├── lapacke_sgerfs_work.c │ ├── lapacke_sgerqf.c │ ├── lapacke_sgerqf_work.c │ ├── lapacke_sgesdd.c │ ├── lapacke_sgesdd_work.c │ ├── lapacke_sgesv.c │ ├── lapacke_sgesv_work.c │ ├── lapacke_sgesvd.c │ ├── lapacke_sgesvd_work.c │ ├── lapacke_sgesvj.c │ ├── lapacke_sgesvj_work.c │ ├── lapacke_sgesvx.c │ ├── lapacke_sgesvx_work.c │ ├── lapacke_sgetf2.c │ ├── lapacke_sgetf2_work.c │ ├── lapacke_sgetrf.c │ ├── lapacke_sgetrf_work.c │ ├── lapacke_sgetri.c │ ├── lapacke_sgetri_work.c │ ├── lapacke_sgetrs.c │ ├── lapacke_sgetrs_work.c │ ├── lapacke_sgg_nancheck.c │ ├── lapacke_sgg_trans.c │ ├── lapacke_sggbak.c │ ├── lapacke_sggbak_work.c │ ├── lapacke_sggbal.c │ ├── lapacke_sggbal_work.c │ ├── lapacke_sgges.c │ ├── lapacke_sgges_work.c │ ├── lapacke_sggesx.c │ ├── lapacke_sggesx_work.c │ ├── lapacke_sggev.c │ ├── lapacke_sggev_work.c │ ├── lapacke_sggevx.c │ ├── lapacke_sggevx_work.c │ ├── lapacke_sggglm.c │ ├── lapacke_sggglm_work.c │ ├── lapacke_sgghrd.c │ ├── lapacke_sgghrd_work.c │ ├── lapacke_sgglse.c │ ├── lapacke_sgglse_work.c │ ├── lapacke_sggqrf.c │ ├── lapacke_sggqrf_work.c │ ├── lapacke_sggrqf.c │ ├── lapacke_sggrqf_work.c │ ├── lapacke_sggsvd.c │ ├── lapacke_sggsvd_work.c │ ├── lapacke_sggsvp.c │ ├── lapacke_sggsvp_work.c │ ├── lapacke_sgt_nancheck.c │ ├── lapacke_sgtcon.c │ ├── lapacke_sgtcon_work.c │ ├── lapacke_sgtrfs.c │ ├── lapacke_sgtrfs_work.c │ ├── lapacke_sgtsv.c │ ├── lapacke_sgtsv_work.c │ ├── lapacke_sgtsvx.c │ ├── lapacke_sgtsvx_work.c │ ├── lapacke_sgttrf.c │ ├── lapacke_sgttrf_work.c │ ├── lapacke_sgttrs.c │ ├── lapacke_sgttrs_work.c │ ├── lapacke_shgeqz.c │ ├── lapacke_shgeqz_work.c │ ├── lapacke_shs_nancheck.c │ ├── lapacke_shs_trans.c │ ├── lapacke_shsein.c │ ├── lapacke_shsein_work.c │ ├── lapacke_shseqr.c │ ├── lapacke_shseqr_work.c │ ├── lapacke_slacpy.c │ ├── lapacke_slacpy_work.c │ ├── lapacke_slag2d.c │ ├── lapacke_slag2d_work.c │ ├── lapacke_slagge.c │ ├── lapacke_slagge_work.c │ ├── lapacke_slagsy.c │ ├── lapacke_slagsy_work.c │ ├── lapacke_slamch.c │ ├── lapacke_slamch_work.c │ ├── lapacke_slange.c │ ├── lapacke_slange_work.c │ ├── lapacke_slansy.c │ ├── lapacke_slansy_work.c │ ├── lapacke_slantr.c │ ├── lapacke_slantr_work.c │ ├── lapacke_slapmr.c │ ├── lapacke_slapmr_work.c │ ├── lapacke_slapy2.c │ ├── lapacke_slapy2_work.c │ ├── lapacke_slapy3.c │ ├── lapacke_slapy3_work.c │ ├── lapacke_slarfb.c │ ├── lapacke_slarfb_work.c │ ├── lapacke_slarfg.c │ ├── lapacke_slarfg_work.c │ ├── lapacke_slarft.c │ ├── lapacke_slarft_work.c │ ├── lapacke_slarfx.c │ ├── lapacke_slarfx_work.c │ ├── lapacke_slarnv.c │ ├── lapacke_slarnv_work.c │ ├── lapacke_slartgp.c │ ├── lapacke_slartgp_work.c │ ├── lapacke_slartgs.c │ ├── lapacke_slartgs_work.c │ ├── lapacke_slaset.c │ ├── lapacke_slaset_work.c │ ├── lapacke_slasrt.c │ ├── lapacke_slasrt_work.c │ ├── lapacke_slaswp.c │ ├── lapacke_slaswp_work.c │ ├── lapacke_slatms.c │ ├── lapacke_slatms_work.c │ ├── lapacke_slauum.c │ ├── lapacke_slauum_work.c │ ├── lapacke_sopgtr.c │ ├── lapacke_sopgtr_work.c │ ├── lapacke_sopmtr.c │ ├── lapacke_sopmtr_work.c │ ├── lapacke_sorbdb.c │ ├── lapacke_sorbdb_work.c │ ├── lapacke_sorcsd.c │ ├── lapacke_sorcsd_work.c │ ├── lapacke_sorgbr.c │ ├── lapacke_sorgbr_work.c │ ├── lapacke_sorghr.c │ ├── lapacke_sorghr_work.c │ ├── lapacke_sorglq.c │ ├── lapacke_sorglq_work.c │ ├── lapacke_sorgql.c │ ├── lapacke_sorgql_work.c │ ├── lapacke_sorgqr.c │ ├── lapacke_sorgqr_work.c │ ├── lapacke_sorgrq.c │ ├── lapacke_sorgrq_work.c │ ├── lapacke_sorgtr.c │ ├── lapacke_sorgtr_work.c │ ├── lapacke_sormbr.c │ ├── lapacke_sormbr_work.c │ ├── lapacke_sormhr.c │ ├── lapacke_sormhr_work.c │ ├── lapacke_sormlq.c │ ├── lapacke_sormlq_work.c │ ├── lapacke_sormql.c │ ├── lapacke_sormql_work.c │ ├── lapacke_sormqr.c │ ├── lapacke_sormqr_work.c │ ├── lapacke_sormrq.c │ ├── lapacke_sormrq_work.c │ ├── lapacke_sormrz.c │ ├── lapacke_sormrz_work.c │ ├── lapacke_sormtr.c │ ├── lapacke_sormtr_work.c │ ├── lapacke_spb_nancheck.c │ ├── lapacke_spb_trans.c │ ├── lapacke_spbcon.c │ ├── lapacke_spbcon_work.c │ ├── lapacke_spbequ.c │ ├── lapacke_spbequ_work.c │ ├── lapacke_spbrfs.c │ ├── lapacke_spbrfs_work.c │ ├── lapacke_spbstf.c │ ├── lapacke_spbstf_work.c │ ├── lapacke_spbsv.c │ ├── lapacke_spbsv_work.c │ ├── lapacke_spbsvx.c │ ├── lapacke_spbsvx_work.c │ ├── lapacke_spbtrf.c │ ├── lapacke_spbtrf_work.c │ ├── lapacke_spbtrs.c │ ├── lapacke_spbtrs_work.c │ ├── lapacke_spf_nancheck.c │ ├── lapacke_spf_trans.c │ ├── lapacke_spftrf.c │ ├── lapacke_spftrf_work.c │ ├── lapacke_spftri.c │ ├── lapacke_spftri_work.c │ ├── lapacke_spftrs.c │ ├── lapacke_spftrs_work.c │ ├── lapacke_spo_nancheck.c │ ├── lapacke_spo_trans.c │ ├── lapacke_spocon.c │ ├── lapacke_spocon_work.c │ ├── lapacke_spoequ.c │ ├── lapacke_spoequ_work.c │ ├── lapacke_spoequb.c │ ├── lapacke_spoequb_work.c │ ├── lapacke_sporfs.c │ ├── lapacke_sporfs_work.c │ ├── lapacke_sposv.c │ ├── lapacke_sposv_work.c │ ├── lapacke_sposvx.c │ ├── lapacke_sposvx_work.c │ ├── lapacke_spotrf.c │ ├── lapacke_spotrf_work.c │ ├── lapacke_spotri.c │ ├── lapacke_spotri_work.c │ ├── lapacke_spotrs.c │ ├── lapacke_spotrs_work.c │ ├── lapacke_spp_nancheck.c │ ├── lapacke_spp_trans.c │ ├── lapacke_sppcon.c │ ├── lapacke_sppcon_work.c │ ├── lapacke_sppequ.c │ ├── lapacke_sppequ_work.c │ ├── lapacke_spprfs.c │ ├── lapacke_spprfs_work.c │ ├── lapacke_sppsv.c │ ├── lapacke_sppsv_work.c │ ├── lapacke_sppsvx.c │ ├── lapacke_sppsvx_work.c │ ├── lapacke_spptrf.c │ ├── lapacke_spptrf_work.c │ ├── lapacke_spptri.c │ ├── lapacke_spptri_work.c │ ├── lapacke_spptrs.c │ ├── lapacke_spptrs_work.c │ ├── lapacke_spstrf.c │ ├── lapacke_spstrf_work.c │ ├── lapacke_spt_nancheck.c │ ├── lapacke_sptcon.c │ ├── lapacke_sptcon_work.c │ ├── lapacke_spteqr.c │ ├── lapacke_spteqr_work.c │ ├── lapacke_sptrfs.c │ ├── lapacke_sptrfs_work.c │ ├── lapacke_sptsv.c │ ├── lapacke_sptsv_work.c │ ├── lapacke_sptsvx.c │ ├── lapacke_sptsvx_work.c │ ├── lapacke_spttrf.c │ ├── lapacke_spttrf_work.c │ ├── lapacke_spttrs.c │ ├── lapacke_spttrs_work.c │ ├── lapacke_ssb_nancheck.c │ ├── lapacke_ssb_trans.c │ ├── lapacke_ssbev.c │ ├── lapacke_ssbev_work.c │ ├── lapacke_ssbevd.c │ ├── lapacke_ssbevd_work.c │ ├── lapacke_ssbevx.c │ ├── lapacke_ssbevx_work.c │ ├── lapacke_ssbgst.c │ ├── lapacke_ssbgst_work.c │ ├── lapacke_ssbgv.c │ ├── lapacke_ssbgv_work.c │ ├── lapacke_ssbgvd.c │ ├── lapacke_ssbgvd_work.c │ ├── lapacke_ssbgvx.c │ ├── lapacke_ssbgvx_work.c │ ├── lapacke_ssbtrd.c │ ├── lapacke_ssbtrd_work.c │ ├── lapacke_ssfrk.c │ ├── lapacke_ssfrk_work.c │ ├── lapacke_ssp_nancheck.c │ ├── lapacke_ssp_trans.c │ ├── lapacke_sspcon.c │ ├── lapacke_sspcon_work.c │ ├── lapacke_sspev.c │ ├── lapacke_sspev_work.c │ ├── lapacke_sspevd.c │ ├── lapacke_sspevd_work.c │ ├── lapacke_sspevx.c │ ├── lapacke_sspevx_work.c │ ├── lapacke_sspgst.c │ ├── lapacke_sspgst_work.c │ ├── lapacke_sspgv.c │ ├── lapacke_sspgv_work.c │ ├── lapacke_sspgvd.c │ ├── lapacke_sspgvd_work.c │ ├── lapacke_sspgvx.c │ ├── lapacke_sspgvx_work.c │ ├── lapacke_ssprfs.c │ ├── lapacke_ssprfs_work.c │ ├── lapacke_sspsv.c │ ├── lapacke_sspsv_work.c │ ├── lapacke_sspsvx.c │ ├── lapacke_sspsvx_work.c │ ├── lapacke_ssptrd.c │ ├── lapacke_ssptrd_work.c │ ├── lapacke_ssptrf.c │ ├── lapacke_ssptrf_work.c │ ├── lapacke_ssptri.c │ ├── lapacke_ssptri_work.c │ ├── lapacke_ssptrs.c │ ├── lapacke_ssptrs_work.c │ ├── lapacke_sst_nancheck.c │ ├── lapacke_sstebz.c │ ├── lapacke_sstebz_work.c │ ├── lapacke_sstedc.c │ ├── lapacke_sstedc_work.c │ ├── lapacke_sstegr.c │ ├── lapacke_sstegr_work.c │ ├── lapacke_sstein.c │ ├── lapacke_sstein_work.c │ ├── lapacke_sstemr.c │ ├── lapacke_sstemr_work.c │ ├── lapacke_ssteqr.c │ ├── lapacke_ssteqr_work.c │ ├── lapacke_ssterf.c │ ├── lapacke_ssterf_work.c │ ├── lapacke_sstev.c │ ├── lapacke_sstev_work.c │ ├── lapacke_sstevd.c │ ├── lapacke_sstevd_work.c │ ├── lapacke_sstevr.c │ ├── lapacke_sstevr_work.c │ ├── lapacke_sstevx.c │ ├── lapacke_sstevx_work.c │ ├── lapacke_ssy_nancheck.c │ ├── lapacke_ssy_trans.c │ ├── lapacke_ssycon.c │ ├── lapacke_ssycon_work.c │ ├── lapacke_ssyconv.c │ ├── lapacke_ssyconv_work.c │ ├── lapacke_ssyequb.c │ ├── lapacke_ssyequb_work.c │ ├── lapacke_ssyev.c │ ├── lapacke_ssyev_work.c │ ├── lapacke_ssyevd.c │ ├── lapacke_ssyevd_work.c │ ├── lapacke_ssyevr.c │ ├── lapacke_ssyevr_work.c │ ├── lapacke_ssyevx.c │ ├── lapacke_ssyevx_work.c │ ├── lapacke_ssygst.c │ ├── lapacke_ssygst_work.c │ ├── lapacke_ssygv.c │ ├── lapacke_ssygv_work.c │ ├── lapacke_ssygvd.c │ ├── lapacke_ssygvd_work.c │ ├── lapacke_ssygvx.c │ ├── lapacke_ssygvx_work.c │ ├── lapacke_ssyrfs.c │ ├── lapacke_ssyrfs_work.c │ ├── lapacke_ssysv.c │ ├── lapacke_ssysv_work.c │ ├── lapacke_ssysvx.c │ ├── lapacke_ssysvx_work.c │ ├── lapacke_ssyswapr.c │ ├── lapacke_ssyswapr_work.c │ ├── lapacke_ssytrd.c │ ├── lapacke_ssytrd_work.c │ ├── lapacke_ssytrf.c │ ├── lapacke_ssytrf_work.c │ ├── lapacke_ssytri.c │ ├── lapacke_ssytri2.c │ ├── lapacke_ssytri2_work.c │ ├── lapacke_ssytri2x.c │ ├── lapacke_ssytri2x_work.c │ ├── lapacke_ssytri_work.c │ ├── lapacke_ssytrs.c │ ├── lapacke_ssytrs2.c │ ├── lapacke_ssytrs2_work.c │ ├── lapacke_ssytrs_work.c │ ├── lapacke_stb_nancheck.c │ ├── lapacke_stb_trans.c │ ├── lapacke_stbcon.c │ ├── lapacke_stbcon_work.c │ ├── lapacke_stbrfs.c │ ├── lapacke_stbrfs_work.c │ ├── lapacke_stbtrs.c │ ├── lapacke_stbtrs_work.c │ ├── lapacke_stf_nancheck.c │ ├── lapacke_stf_trans.c │ ├── lapacke_stfsm.c │ ├── lapacke_stfsm_work.c │ ├── lapacke_stftri.c │ ├── lapacke_stftri_work.c │ ├── lapacke_stfttp.c │ ├── lapacke_stfttp_work.c │ ├── lapacke_stfttr.c │ ├── lapacke_stfttr_work.c │ ├── lapacke_stgevc.c │ ├── lapacke_stgevc_work.c │ ├── lapacke_stgexc.c │ ├── lapacke_stgexc_work.c │ ├── lapacke_stgsen.c │ ├── lapacke_stgsen_work.c │ ├── lapacke_stgsja.c │ ├── lapacke_stgsja_work.c │ ├── lapacke_stgsna.c │ ├── lapacke_stgsna_work.c │ ├── lapacke_stgsyl.c │ ├── lapacke_stgsyl_work.c │ ├── lapacke_stp_nancheck.c │ ├── lapacke_stp_trans.c │ ├── lapacke_stpcon.c │ ├── lapacke_stpcon_work.c │ ├── lapacke_stpmqrt.c │ ├── lapacke_stpmqrt_work.c │ ├── lapacke_stpqrt2.c │ ├── lapacke_stpqrt2_work.c │ ├── lapacke_stprfb.c │ ├── lapacke_stprfb_work.c │ ├── lapacke_stprfs.c │ ├── lapacke_stprfs_work.c │ ├── lapacke_stptri.c │ ├── lapacke_stptri_work.c │ ├── lapacke_stptrs.c │ ├── lapacke_stptrs_work.c │ ├── lapacke_stpttf.c │ ├── lapacke_stpttf_work.c │ ├── lapacke_stpttr.c │ ├── lapacke_stpttr_work.c │ ├── lapacke_str_nancheck.c │ ├── lapacke_str_trans.c │ ├── lapacke_strcon.c │ ├── lapacke_strcon_work.c │ ├── lapacke_strevc.c │ ├── lapacke_strevc_work.c │ ├── lapacke_strexc.c │ ├── lapacke_strexc_work.c │ ├── lapacke_strrfs.c │ ├── lapacke_strrfs_work.c │ ├── lapacke_strsen.c │ ├── lapacke_strsen_work.c │ ├── lapacke_strsna.c │ ├── lapacke_strsna_work.c │ ├── lapacke_strsyl.c │ ├── lapacke_strsyl_work.c │ ├── lapacke_strtri.c │ ├── lapacke_strtri_work.c │ ├── lapacke_strtrs.c │ ├── lapacke_strtrs_work.c │ ├── lapacke_strttf.c │ ├── lapacke_strttf_work.c │ ├── lapacke_strttp.c │ ├── lapacke_strttp_work.c │ ├── lapacke_stzrzf.c │ ├── lapacke_stzrzf_work.c │ ├── lapacke_utils.h │ └── lapacke_xerbla.c ├── README └── symbol.map ├── perf ├── logging.properties ├── pom.xml ├── results │ ├── linux-arm-avian-ddot-f2jblas.csv.gz │ ├── linux-arm-avian-dgemm-f2jblas.csv.gz │ ├── linux-arm-avian-dgetri-f2jblas.csv.gz │ ├── linux-arm-avian-linpack-f2jblas.csv.gz │ ├── linux-arm-ddot-CBLAS.csv.gz │ ├── linux-arm-ddot-atlas.csv.gz │ ├── linux-arm-ddot-nativerefblas.csv.gz │ ├── linux-arm-ddot-nativesystemblas.csv.gz │ ├── linux-arm-dgemm-CBLAS.csv.gz │ ├── linux-arm-dgemm-atlas.csv.gz │ ├── linux-arm-dgemm-nativerefblas.csv.gz │ ├── linux-arm-dgemm-nativesystemblas.csv.gz │ ├── linux-arm-dgetri-CBLAS.csv.gz │ ├── linux-arm-dgetri-atlas.csv.gz │ ├── linux-arm-dgetri-nativerefblas.csv.gz │ ├── linux-arm-dgetri-nativesystemblas.csv.gz │ ├── linux-arm-jamvm-ddot-f2jblas.csv.gz │ ├── linux-arm-jamvm-dgemm-f2jblas.csv.gz │ ├── linux-arm-jamvm-dgetri-f2jblas.csv.gz │ ├── linux-arm-jamvm-linpack-f2jblas.csv.gz │ ├── linux-arm-jdk7-ddot-f2jblas.csv.gz │ ├── linux-arm-jdk7-dgemm-f2jblas.csv.gz │ ├── linux-arm-jdk7-dgetri-f2jblas.csv.gz │ ├── linux-arm-jdk7-linpack-f2jblas.csv.gz │ ├── linux-arm-jdk8-ddot-f2jblas.csv.gz │ ├── linux-arm-jdk8-dgemm-f2jblas.csv.gz │ ├── linux-arm-jdk8-dgetri-f2jblas.csv.gz │ ├── linux-arm-jdk8-linpack-f2jblas.csv.gz │ ├── linux-arm-linpack-nativerefblas.csv.gz │ ├── linux-arm-linpack-nativesystemblas.csv.gz │ ├── mac_os_x-x86_64-ddot-CBLAS.csv.gz │ ├── mac_os_x-x86_64-ddot-atlas.csv.gz │ ├── mac_os_x-x86_64-ddot-cuda.csv.gz │ ├── mac_os_x-x86_64-ddot-cuda_nooh.csv.gz │ ├── mac_os_x-x86_64-ddot-f2jblas.csv.gz │ ├── mac_os_x-x86_64-ddot-mkl.csv.gz │ ├── mac_os_x-x86_64-ddot-nativerefblas.csv.gz │ ├── mac_os_x-x86_64-ddot-nativesystemblas.csv.gz │ ├── mac_os_x-x86_64-ddot-veclib.csv.gz │ ├── mac_os_x-x86_64-dgemm-CBLAS.csv.gz │ ├── mac_os_x-x86_64-dgemm-atlas.csv.gz │ ├── mac_os_x-x86_64-dgemm-cuda.csv.gz │ ├── mac_os_x-x86_64-dgemm-cuda_nooh.csv.gz │ ├── mac_os_x-x86_64-dgemm-f2jblas.csv.gz │ ├── mac_os_x-x86_64-dgemm-mkl.csv.gz │ ├── mac_os_x-x86_64-dgemm-nativerefblas.csv.gz │ ├── mac_os_x-x86_64-dgemm-nativesystemblas.csv.gz │ ├── mac_os_x-x86_64-dgemm-veclib.csv.gz │ ├── mac_os_x-x86_64-dgetri-CBLAS.csv.gz │ ├── mac_os_x-x86_64-dgetri-atlas.csv.gz │ ├── mac_os_x-x86_64-dgetri-f2jblas.csv.gz │ ├── mac_os_x-x86_64-dgetri-mkl.csv.gz │ ├── mac_os_x-x86_64-dgetri-nativerefblas.csv.gz │ ├── mac_os_x-x86_64-dgetri-nativesystemblas.csv.gz │ ├── mac_os_x-x86_64-dgetri-veclib.csv.gz │ ├── mac_os_x-x86_64-dsaupd-f2jblas.csv.gz │ ├── mac_os_x-x86_64-dsaupd-nativerefblas.csv.gz │ ├── mac_os_x-x86_64-dsaupd-nativesystemblas.csv.gz │ ├── mac_os_x-x86_64-linpack-f2jblas.csv.gz │ ├── mac_os_x-x86_64-linpack-nativerefblas.csv.gz │ ├── mac_os_x-x86_64-linpack-nativesystemblas.csv.gz │ └── plot.R └── src │ ├── main │ ├── c │ │ ├── clwrapper.c │ │ ├── common.c │ │ ├── common.h │ │ ├── cudaddottest.c │ │ ├── cudadgemmtest.c │ │ ├── cudawrapper.c │ │ ├── ddottest.c │ │ ├── dgemmtest.c │ │ └── dgetritest.c │ └── java │ │ └── com │ │ └── github │ │ └── fommil │ │ └── netlib │ │ ├── Benchmark.java │ │ ├── Benchmarks.java │ │ ├── Ddot.java │ │ ├── Dgemm.java │ │ ├── Dgetri.java │ │ ├── Dsaupd.java │ │ └── Linpack.java │ └── test │ └── java │ └── com │ └── github │ └── fommil │ └── netlib │ ├── BLASTest.java │ └── LAPACKTest.java └── pom.xml /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | If you require support or wish to ensure the continuation of this library, you must get your company to respond to the Call For Funding 2 | 3 | https://github.com/fommil/netlib-java/wiki/CallForFunding 4 | 5 | I do not have the inclination to provide gratis assistance and this ticket will probably be closed without further comment. 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | 3 | # Package Files # 4 | *.jar 5 | *.war 6 | *.ear 7 | *.iml 8 | 9 | -------------------------------------------------------------------------------- /legacy/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | com.github.fommil.netlib 9 | parent 10 | 1.2-SNAPSHOT 11 | 12 | 13 | com.googlecode.netlib-java 14 | netlib-java 15 | jar 16 | 17 | 18 | 19 | ${project.parent.groupId} 20 | core 21 | ${project.parent.version} 22 | 23 | 24 | org.projectlombok 25 | lombok 26 | 27 | 28 | 29 | 30 | 31 | 32 | org.apache.maven.plugins 33 | maven-compiler-plugin 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /legacy/src/main/java/org/netlib/arpack/ARPACK.java: -------------------------------------------------------------------------------- 1 | package org.netlib.arpack; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Delegate; 5 | import lombok.NoArgsConstructor; 6 | import lombok.extern.java.Log; 7 | 8 | /** 9 | * @deprecated use {@link com.github.fommil.netlib.ARPACK} 10 | */ 11 | @Deprecated 12 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 13 | @Log 14 | public class ARPACK extends com.github.fommil.netlib.ARPACK { 15 | 16 | private static final ARPACK INSTANCE = new ARPACK(); 17 | 18 | /** 19 | * @return 20 | * @deprecated use {@link com.github.fommil.netlib.BLAS#getInstance()} 21 | */ 22 | @Deprecated 23 | public static ARPACK getInstance() { 24 | log.warning("this API is deprecated and will be removed. Instead, use com.github.fommil.netlib.ARPACK"); 25 | return INSTANCE; 26 | } 27 | 28 | @Delegate 29 | private final com.github.fommil.netlib.ARPACK DELEGATE = com.github.fommil.netlib.ARPACK.getInstance(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /legacy/src/main/java/org/netlib/blas/BLAS.java: -------------------------------------------------------------------------------- 1 | package org.netlib.blas; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Delegate; 5 | import lombok.NoArgsConstructor; 6 | import lombok.extern.java.Log; 7 | 8 | /** 9 | * @deprecated use {@link com.github.fommil.netlib.BLAS} 10 | */ 11 | @Deprecated 12 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 13 | @Log 14 | public class BLAS extends com.github.fommil.netlib.BLAS { 15 | 16 | private static final BLAS INSTANCE = new BLAS(); 17 | 18 | /** 19 | * @return 20 | * @deprecated use {@link com.github.fommil.netlib.BLAS#getInstance()} 21 | */ 22 | @Deprecated 23 | public static BLAS getInstance() { 24 | log.warning("this API is deprecated and will be removed. Instead, use com.github.fommil.netlib.BLAS"); 25 | return INSTANCE; 26 | } 27 | 28 | @Delegate 29 | private final com.github.fommil.netlib.BLAS DELEGATE = com.github.fommil.netlib.BLAS.getInstance(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /legacy/src/main/java/org/netlib/lapack/LAPACK.java: -------------------------------------------------------------------------------- 1 | package org.netlib.lapack; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Delegate; 5 | import lombok.NoArgsConstructor; 6 | import lombok.extern.java.Log; 7 | 8 | /** 9 | * @deprecated use {@link com.github.fommil.netlib.LAPACK} 10 | */ 11 | @Deprecated 12 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 13 | @Log 14 | public class LAPACK extends com.github.fommil.netlib.LAPACK { 15 | 16 | private static final LAPACK INSTANCE = new LAPACK(); 17 | 18 | /** 19 | * @return 20 | * @deprecated use {@link com.github.fommil.netlib.LAPACK#getInstance()} 21 | */ 22 | @Deprecated 23 | public static LAPACK getInstance() { 24 | log.warning("this API is deprecated and will be removed. Instead, use com.github.fommil.netlib.LAPACK"); 25 | return INSTANCE; 26 | } 27 | 28 | @Delegate 29 | private final com.github.fommil.netlib.LAPACK DELEGATE = com.github.fommil.netlib.LAPACK.getInstance(); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /native_ref/xbuilds/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 12 | 13 | 14 | com.github.fommil.netlib 15 | native_ref 16 | 1.2-SNAPSHOT 17 | 18 | 19 | native_ref-xbuilds 20 | pom 21 | 22 | 23 | 24 | aarch64-profile 25 | 26 | aarch64 27 | 28 | 29 | linux-aarch64 30 | 31 | 32 | 33 | ppc64le-profile 34 | 35 | ppc64le 36 | 37 | 38 | linux-ppc64le 39 | 40 | 41 | 42 | default-profile 43 | 44 | true 45 | 46 | 47 | linux-x86_64 48 | linux-i686 49 | linux-armhf 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /native_system/xbuilds/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 12 | 13 | 14 | com.github.fommil.netlib 15 | native_system 16 | 1.2-SNAPSHOT 17 | 18 | 19 | native_system-xbuilds 20 | pom 21 | 22 | 23 | 24 | aarch64-profile 25 | 26 | aarch64 27 | 28 | 29 | linux-aarch64 30 | 31 | 32 | 33 | ppc64le-profile 34 | 35 | ppc64le 36 | 37 | 38 | linux-ppc64le 39 | 40 | 41 | 42 | default-profile 43 | 44 | true 45 | 46 | 47 | linux-x86_64 48 | linux-i686 49 | linux-armhf 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /netlib/ARPACK/debug.h: -------------------------------------------------------------------------------- 1 | c 2 | c\SCCS Information: @(#) 3 | c FILE: debug.h SID: 2.3 DATE OF SID: 11/16/95 RELEASE: 2 4 | c 5 | c %---------------------------------% 6 | c | See debug.doc for documentation | 7 | c %---------------------------------% 8 | integer logfil, ndigit, mgetv0, 9 | & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd, 10 | & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd, 11 | & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd 12 | common /debug/ 13 | & logfil, ndigit, mgetv0, 14 | & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd, 15 | & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd, 16 | & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd 17 | -------------------------------------------------------------------------------- /netlib/ARPACK/dstatn.f: -------------------------------------------------------------------------------- 1 | c 2 | c %---------------------------------------------% 3 | c | Initialize statistic and timing information | 4 | c | for nonsymmetric Arnoldi code. | 5 | c %---------------------------------------------% 6 | c 7 | c\Author 8 | c Danny Sorensen Phuong Vu 9 | c Richard Lehoucq CRPC / Rice University 10 | c Dept. of Computational & Houston, Texas 11 | c Applied Mathematics 12 | c Rice University 13 | c Houston, Texas 14 | c 15 | c\SCCS Information: @(#) 16 | c FILE: statn.F SID: 2.4 DATE OF SID: 4/20/96 RELEASE: 2 17 | c 18 | subroutine dstatn 19 | c 20 | c %--------------------------------% 21 | c | See stat.doc for documentation | 22 | c %--------------------------------% 23 | c 24 | include 'stat.h' 25 | c 26 | c %-----------------------% 27 | c | Executable Statements | 28 | c %-----------------------% 29 | c 30 | nopx = 0 31 | nbx = 0 32 | nrorth = 0 33 | nitref = 0 34 | nrstrt = 0 35 | c 36 | tnaupd = 0.0D+0 37 | tnaup2 = 0.0D+0 38 | tnaitr = 0.0D+0 39 | tneigh = 0.0D+0 40 | tngets = 0.0D+0 41 | tnapps = 0.0D+0 42 | tnconv = 0.0D+0 43 | titref = 0.0D+0 44 | tgetv0 = 0.0D+0 45 | trvec = 0.0D+0 46 | c 47 | c %----------------------------------------------------% 48 | c | User time including reverse communication overhead | 49 | c %----------------------------------------------------% 50 | c 51 | tmvopx = 0.0D+0 52 | tmvbx = 0.0D+0 53 | c 54 | return 55 | c 56 | c 57 | c %---------------% 58 | c | End of dstatn | 59 | c %---------------% 60 | c 61 | end 62 | -------------------------------------------------------------------------------- /netlib/ARPACK/dstats.f: -------------------------------------------------------------------------------- 1 | c 2 | c\SCCS Information: @(#) 3 | c FILE: stats.F SID: 2.1 DATE OF SID: 4/19/96 RELEASE: 2 4 | c %---------------------------------------------% 5 | c | Initialize statistic and timing information | 6 | c | for symmetric Arnoldi code. | 7 | c %---------------------------------------------% 8 | 9 | subroutine dstats 10 | 11 | c %--------------------------------% 12 | c | See stat.doc for documentation | 13 | c %--------------------------------% 14 | include 'stat.h' 15 | 16 | c %-----------------------% 17 | c | Executable Statements | 18 | c %-----------------------% 19 | 20 | nopx = 0 21 | nbx = 0 22 | nrorth = 0 23 | nitref = 0 24 | nrstrt = 0 25 | 26 | tsaupd = 0.0D+0 27 | tsaup2 = 0.0D+0 28 | tsaitr = 0.0D+0 29 | tseigt = 0.0D+0 30 | tsgets = 0.0D+0 31 | tsapps = 0.0D+0 32 | tsconv = 0.0D+0 33 | titref = 0.0D+0 34 | tgetv0 = 0.0D+0 35 | trvec = 0.0D+0 36 | 37 | c %----------------------------------------------------% 38 | c | User time including reverse communication overhead | 39 | c %----------------------------------------------------% 40 | tmvopx = 0.0D+0 41 | tmvbx = 0.0D+0 42 | 43 | return 44 | c 45 | c End of dstats 46 | c 47 | end 48 | -------------------------------------------------------------------------------- /netlib/ARPACK/icnteq.f: -------------------------------------------------------------------------------- 1 | c 2 | c----------------------------------------------------------------------- 3 | c 4 | c Count the number of elements equal to a specified integer value. 5 | c 6 | integer function icnteq (n, array, value) 7 | c 8 | integer n, value 9 | integer array(*) 10 | c 11 | k = 0 12 | do 10 i = 1, n 13 | if (array(i) .eq. value) k = k + 1 14 | 10 continue 15 | icnteq = k 16 | c 17 | return 18 | end 19 | -------------------------------------------------------------------------------- /netlib/ARPACK/icopy.f: -------------------------------------------------------------------------------- 1 | *-------------------------------------------------------------------- 2 | *\Documentation 3 | * 4 | *\Name: ICOPY 5 | * 6 | *\Description: 7 | * ICOPY copies an integer vector lx to an integer vector ly. 8 | * 9 | *\Usage: 10 | * call icopy ( n, lx, inc, ly, incy ) 11 | * 12 | *\Arguments: 13 | * n integer (input) 14 | * On entry, n is the number of elements of lx to be 15 | c copied to ly. 16 | * 17 | * lx integer array (input) 18 | * On entry, lx is the integer vector to be copied. 19 | * 20 | * incx integer (input) 21 | * On entry, incx is the increment between elements of lx. 22 | * 23 | * ly integer array (input) 24 | * On exit, ly is the integer vector that contains the 25 | * copy of lx. 26 | * 27 | * incy integer (input) 28 | * On entry, incy is the increment between elements of ly. 29 | * 30 | *\Enddoc 31 | * 32 | *-------------------------------------------------------------------- 33 | * 34 | subroutine icopy( n, lx, incx, ly, incy ) 35 | * 36 | * ---------------------------- 37 | * Specifications for arguments 38 | * ---------------------------- 39 | integer incx, incy, n 40 | integer lx( 1 ), ly( 1 ) 41 | * 42 | * ---------------------------------- 43 | * Specifications for local variables 44 | * ---------------------------------- 45 | integer i, ix, iy 46 | * 47 | * -------------------------- 48 | * First executable statement 49 | * -------------------------- 50 | if( n.le.0 ) 51 | $ return 52 | if( incx.eq.1 .and. incy.eq.1 ) 53 | $ go to 20 54 | c 55 | c.....code for unequal increments or equal increments 56 | c not equal to 1 57 | ix = 1 58 | iy = 1 59 | if( incx.lt.0 ) 60 | $ ix = ( -n+1 )*incx + 1 61 | if( incy.lt.0 ) 62 | $ iy = ( -n+1 )*incy + 1 63 | do 10 i = 1, n 64 | ly( iy ) = lx( ix ) 65 | ix = ix + incx 66 | iy = iy + incy 67 | 10 continue 68 | return 69 | c 70 | c.....code for both increments equal to 1 71 | c 72 | 20 continue 73 | do 30 i = 1, n 74 | ly( i ) = lx( i ) 75 | 30 continue 76 | return 77 | end 78 | -------------------------------------------------------------------------------- /netlib/ARPACK/iset.f: -------------------------------------------------------------------------------- 1 | c 2 | c----------------------------------------------------------------------- 3 | c 4 | c Only work with increment equal to 1 right now. 5 | c 6 | subroutine iset (n, value, array, inc) 7 | c 8 | integer n, value, inc 9 | integer array(*) 10 | c 11 | do 10 i = 1, n 12 | array(i) = value 13 | 10 continue 14 | c 15 | return 16 | end 17 | -------------------------------------------------------------------------------- /netlib/ARPACK/iswap.f: -------------------------------------------------------------------------------- 1 | subroutine iswap (n,sx,incx,sy,incy) 2 | c 3 | c interchanges two vectors. 4 | c uses unrolled loops for increments equal to 1. 5 | c jack dongarra, linpack, 3/11/78. 6 | c 7 | integer sx(1),sy(1),stemp 8 | integer i,incx,incy,ix,iy,m,mp1,n 9 | c 10 | if(n.le.0)return 11 | if(incx.eq.1.and.incy.eq.1)go to 20 12 | c 13 | c code for unequal increments or equal increments not equal 14 | c to 1 15 | c 16 | ix = 1 17 | iy = 1 18 | if(incx.lt.0)ix = (-n+1)*incx + 1 19 | if(incy.lt.0)iy = (-n+1)*incy + 1 20 | do 10 i = 1,n 21 | stemp = sx(ix) 22 | sx(ix) = sy(iy) 23 | sy(iy) = stemp 24 | ix = ix + incx 25 | iy = iy + incy 26 | 10 continue 27 | return 28 | c 29 | c code for both increments equal to 1 30 | c 31 | c 32 | c clean-up loop 33 | c 34 | 20 m = mod(n,3) 35 | if( m .eq. 0 ) go to 40 36 | do 30 i = 1,m 37 | stemp = sx(i) 38 | sx(i) = sy(i) 39 | sy(i) = stemp 40 | 30 continue 41 | if( n .lt. 3 ) return 42 | 40 mp1 = m + 1 43 | do 50 i = mp1,n,3 44 | stemp = sx(i) 45 | sx(i) = sy(i) 46 | sy(i) = stemp 47 | stemp = sx(i + 1) 48 | sx(i + 1) = sy(i + 1) 49 | sy(i + 1) = stemp 50 | stemp = sx(i + 2) 51 | sx(i + 2) = sy(i + 2) 52 | sy(i + 2) = stemp 53 | 50 continue 54 | return 55 | end 56 | -------------------------------------------------------------------------------- /netlib/ARPACK/second.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE ARSCND( T ) 2 | * 3 | REAL T 4 | * 5 | * -- LAPACK auxiliary routine (preliminary version) -- 6 | * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., 7 | * Courant Institute, Argonne National Lab, and Rice University 8 | * July 26, 1991 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * SECOND returns the user time for a process in seconds. 14 | * This version gets the time from the system function ETIME. 15 | * 16 | * .. Local Scalars .. 17 | REAL T1 18 | * .. 19 | * .. Local Arrays .. 20 | REAL TARRAY( 2 ) 21 | * .. 22 | * .. External Functions .. 23 | REAL ETIME 24 | INTRINSIC ETIME 25 | * .. 26 | * .. Executable Statements .. 27 | * 28 | 29 | T1 = ETIME( TARRAY ) 30 | T = TARRAY( 1 ) 31 | 32 | RETURN 33 | * 34 | * End of ARSCND 35 | * 36 | END 37 | -------------------------------------------------------------------------------- /netlib/ARPACK/sstatn.f: -------------------------------------------------------------------------------- 1 | c 2 | c %---------------------------------------------% 3 | c | Initialize statistic and timing information | 4 | c | for nonsymmetric Arnoldi code. | 5 | c %---------------------------------------------% 6 | c 7 | c\Author 8 | c Danny Sorensen Phuong Vu 9 | c Richard Lehoucq CRPC / Rice University 10 | c Dept. of Computational & Houston, Texas 11 | c Applied Mathematics 12 | c Rice University 13 | c Houston, Texas 14 | c 15 | c\SCCS Information: @(#) 16 | c FILE: statn.F SID: 2.4 DATE OF SID: 4/20/96 RELEASE: 2 17 | c 18 | subroutine sstatn 19 | c 20 | c %--------------------------------% 21 | c | See stat.doc for documentation | 22 | c %--------------------------------% 23 | c 24 | include 'stat.h' 25 | c 26 | c %-----------------------% 27 | c | Executable Statements | 28 | c %-----------------------% 29 | c 30 | nopx = 0 31 | nbx = 0 32 | nrorth = 0 33 | nitref = 0 34 | nrstrt = 0 35 | c 36 | tnaupd = 0.0E+0 37 | tnaup2 = 0.0E+0 38 | tnaitr = 0.0E+0 39 | tneigh = 0.0E+0 40 | tngets = 0.0E+0 41 | tnapps = 0.0E+0 42 | tnconv = 0.0E+0 43 | titref = 0.0E+0 44 | tgetv0 = 0.0E+0 45 | trvec = 0.0E+0 46 | c 47 | c %----------------------------------------------------% 48 | c | User time including reverse communication overhead | 49 | c %----------------------------------------------------% 50 | c 51 | tmvopx = 0.0E+0 52 | tmvbx = 0.0E+0 53 | c 54 | return 55 | c 56 | c 57 | c %---------------% 58 | c | End of sstatn | 59 | c %---------------% 60 | c 61 | end 62 | -------------------------------------------------------------------------------- /netlib/ARPACK/sstats.f: -------------------------------------------------------------------------------- 1 | c 2 | c\SCCS Information: @(#) 3 | c FILE: stats.F SID: 2.1 DATE OF SID: 4/19/96 RELEASE: 2 4 | c %---------------------------------------------% 5 | c | Initialize statistic and timing information | 6 | c | for symmetric Arnoldi code. | 7 | c %---------------------------------------------% 8 | 9 | subroutine sstats 10 | 11 | c %--------------------------------% 12 | c | See stat.doc for documentation | 13 | c %--------------------------------% 14 | include 'stat.h' 15 | 16 | c %-----------------------% 17 | c | Executable Statements | 18 | c %-----------------------% 19 | 20 | nopx = 0 21 | nbx = 0 22 | nrorth = 0 23 | nitref = 0 24 | nrstrt = 0 25 | 26 | tsaupd = 0.0E+0 27 | tsaup2 = 0.0E+0 28 | tsaitr = 0.0E+0 29 | tseigt = 0.0E+0 30 | tsgets = 0.0E+0 31 | tsapps = 0.0E+0 32 | tsconv = 0.0E+0 33 | titref = 0.0E+0 34 | tgetv0 = 0.0E+0 35 | trvec = 0.0E+0 36 | 37 | c %----------------------------------------------------% 38 | c | User time including reverse communication overhead | 39 | c %----------------------------------------------------% 40 | tmvopx = 0.0E+0 41 | tmvbx = 0.0E+0 42 | 43 | return 44 | c 45 | c End of sstats 46 | c 47 | end 48 | -------------------------------------------------------------------------------- /netlib/ARPACK/stat.h: -------------------------------------------------------------------------------- 1 | c %--------------------------------% 2 | c | See stat.doc for documentation | 3 | c %--------------------------------% 4 | c 5 | c\SCCS Information: @(#) 6 | c FILE: stat.h SID: 2.2 DATE OF SID: 11/16/95 RELEASE: 2 7 | c 8 | real t0, t1, t2, t3, t4, t5 9 | save t0, t1, t2, t3, t4, t5 10 | c 11 | integer nopx, nbx, nrorth, nitref, nrstrt 12 | real tsaupd, tsaup2, tsaitr, tseigt, tsgets, tsapps, tsconv, 13 | & tnaupd, tnaup2, tnaitr, tneigh, tngets, tnapps, tnconv, 14 | & tcaupd, tcaup2, tcaitr, tceigh, tcgets, tcapps, tcconv, 15 | & tmvopx, tmvbx, tgetv0, titref, trvec 16 | common /timing/ 17 | & nopx, nbx, nrorth, nitref, nrstrt, 18 | & tsaupd, tsaup2, tsaitr, tseigt, tsgets, tsapps, tsconv, 19 | & tnaupd, tnaup2, tnaitr, tneigh, tngets, tnapps, tnconv, 20 | & tcaupd, tcaup2, tcaitr, tceigh, tcgets, tcapps, tcconv, 21 | & tmvopx, tmvbx, tgetv0, titref, trvec 22 | -------------------------------------------------------------------------------- /netlib/ARPACK/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | In the current version, the parameter KAPPA in the Kahan's test 4 | for orthogonality is set to 0.717, the same as used by Gragg & Reichel. 5 | However computational experience indicates that this is a little too 6 | strict and will frequently force reorthogonalization when it is not 7 | necessary to do so. 8 | 9 | Also the "moving boundary" idea is not currently activated in the nonsymmetric 10 | code since it is not conclusive that it's the right thing to do all the time. 11 | Requires further investigation. 12 | 13 | As of 02/01/93 Richard Lehoucq assumes software control of the codes from 14 | Phuong Vu. On 03/01/93 all the *.F files were migrated SCCS. The 1.1 version 15 | of codes are those received from Phuong Vu. The frozen version of 07/08/92 16 | is now considered version 1.1. 17 | 18 | Version 2.1 contains two new symmetric routines, sesrt and seupd. 19 | Changes as well as bug fixes for version 1.1 codes that were only corrected 20 | for programming bugs are version 1.2. These 1.2 versions will also be in version 2.1. 21 | Subroutine [d,s]saupd now requires slightly more workspace. See [d,s]saupd for the 22 | details. 23 | 24 | \SCCS Information: @(#) 25 | FILE: version.h SID: 2.3 DATE OF SID: 11/16/95 RELEASE: 2 26 | 27 | */ 28 | 29 | #define VERSION_NUMBER ' 2.1' 30 | #define VERSION_DATE ' 11/15/95' 31 | -------------------------------------------------------------------------------- /netlib/BLAS/dasum.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DASUM(N,DX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION DX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DASUM takes the sum of the absolute values. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, linpack, 3/11/78. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DTEMP 25 | INTEGER I,M,MP1,NINCX 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC DABS,MOD 29 | * .. 30 | DASUM = 0.0d0 31 | DTEMP = 0.0d0 32 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 33 | IF (INCX.EQ.1) THEN 34 | * code for increment equal to 1 35 | * 36 | * 37 | * clean-up loop 38 | * 39 | M = MOD(N,6) 40 | IF (M.NE.0) THEN 41 | DO I = 1,M 42 | DTEMP = DTEMP + DABS(DX(I)) 43 | END DO 44 | IF (N.LT.6) THEN 45 | DASUM = DTEMP 46 | RETURN 47 | END IF 48 | END IF 49 | MP1 = M + 1 50 | DO I = MP1,N,6 51 | DTEMP = DTEMP + DABS(DX(I)) + DABS(DX(I+1)) + 52 | $ DABS(DX(I+2)) + DABS(DX(I+3)) + 53 | $ DABS(DX(I+4)) + DABS(DX(I+5)) 54 | END DO 55 | ELSE 56 | * 57 | * code for increment not equal to 1 58 | * 59 | NINCX = N*INCX 60 | DO I = 1,NINCX,INCX 61 | DTEMP = DTEMP + DABS(DX(I)) 62 | END DO 63 | END IF 64 | DASUM = DTEMP 65 | RETURN 66 | END 67 | -------------------------------------------------------------------------------- /netlib/BLAS/daxpy.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DAXPY(N,DA,DX,INCX,DY,INCY) 2 | * .. Scalar Arguments .. 3 | DOUBLE PRECISION DA 4 | INTEGER INCX,INCY,N 5 | * .. 6 | * .. Array Arguments .. 7 | DOUBLE PRECISION DX(*),DY(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * DAXPY constant times a vector plus a vector. 14 | * uses unrolled loops for increments equal to one. 15 | * 16 | * Further Details 17 | * =============== 18 | * 19 | * jack dongarra, linpack, 3/11/78. 20 | * modified 12/3/93, array(1) declarations changed to array(*) 21 | * 22 | * ===================================================================== 23 | * 24 | * .. Local Scalars .. 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | IF (N.LE.0) RETURN 31 | IF (DA.EQ.0.0d0) RETURN 32 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 33 | * 34 | * code for both increments equal to 1 35 | * 36 | * 37 | * clean-up loop 38 | * 39 | M = MOD(N,4) 40 | IF (M.NE.0) THEN 41 | DO I = 1,M 42 | DY(I) = DY(I) + DA*DX(I) 43 | END DO 44 | END IF 45 | IF (N.LT.4) RETURN 46 | MP1 = M + 1 47 | DO I = MP1,N,4 48 | DY(I) = DY(I) + DA*DX(I) 49 | DY(I+1) = DY(I+1) + DA*DX(I+1) 50 | DY(I+2) = DY(I+2) + DA*DX(I+2) 51 | DY(I+3) = DY(I+3) + DA*DX(I+3) 52 | END DO 53 | ELSE 54 | * 55 | * code for unequal increments or equal increments 56 | * not equal to 1 57 | * 58 | IX = 1 59 | IY = 1 60 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 61 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 62 | DO I = 1,N 63 | DY(IY) = DY(IY) + DA*DX(IX) 64 | IX = IX + INCX 65 | IY = IY + INCY 66 | END DO 67 | END IF 68 | RETURN 69 | END 70 | -------------------------------------------------------------------------------- /netlib/BLAS/dcabs1.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DCABS1(Z) 2 | * .. Scalar Arguments .. 3 | DOUBLE COMPLEX Z 4 | * .. 5 | * .. 6 | * Purpose 7 | * ======= 8 | * 9 | * DCABS1 computes absolute value of a double complex number 10 | * 11 | * ===================================================================== 12 | * 13 | * .. Intrinsic Functions .. 14 | INTRINSIC ABS,DBLE,DIMAG 15 | * 16 | DCABS1 = ABS(DBLE(Z)) + ABS(DIMAG(Z)) 17 | RETURN 18 | END 19 | -------------------------------------------------------------------------------- /netlib/BLAS/dcopy.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DCOPY(N,DX,INCX,DY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION DX(*),DY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DCOPY copies a vector, x, to a vector, y. 13 | * uses unrolled loops for increments equal to one. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | INTEGER I,IX,IY,M,MP1 25 | * .. 26 | * .. Intrinsic Functions .. 27 | INTRINSIC MOD 28 | * .. 29 | IF (N.LE.0) RETURN 30 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 31 | * 32 | * code for both increments equal to 1 33 | * 34 | * 35 | * clean-up loop 36 | * 37 | M = MOD(N,7) 38 | IF (M.NE.0) THEN 39 | DO I = 1,M 40 | DY(I) = DX(I) 41 | END DO 42 | IF (N.LT.7) RETURN 43 | END IF 44 | MP1 = M + 1 45 | DO I = MP1,N,7 46 | DY(I) = DX(I) 47 | DY(I+1) = DX(I+1) 48 | DY(I+2) = DX(I+2) 49 | DY(I+3) = DX(I+3) 50 | DY(I+4) = DX(I+4) 51 | DY(I+5) = DX(I+5) 52 | DY(I+6) = DX(I+6) 53 | END DO 54 | ELSE 55 | * 56 | * code for unequal increments or equal increments 57 | * not equal to 1 58 | * 59 | IX = 1 60 | IY = 1 61 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 62 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 63 | DO I = 1,N 64 | DY(IY) = DX(IX) 65 | IX = IX + INCX 66 | IY = IY + INCY 67 | END DO 68 | END IF 69 | RETURN 70 | END 71 | -------------------------------------------------------------------------------- /netlib/BLAS/ddot.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DDOT(N,DX,INCX,DY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION DX(*),DY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DDOT forms the dot product of two vectors. 13 | * uses unrolled loops for increments equal to one. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DTEMP 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | DDOT = 0.0d0 31 | DTEMP = 0.0d0 32 | IF (N.LE.0) RETURN 33 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 34 | * 35 | * code for both increments equal to 1 36 | * 37 | * 38 | * clean-up loop 39 | * 40 | M = MOD(N,5) 41 | IF (M.NE.0) THEN 42 | DO I = 1,M 43 | DTEMP = DTEMP + DX(I)*DY(I) 44 | END DO 45 | IF (N.LT.5) THEN 46 | DDOT=DTEMP 47 | RETURN 48 | END IF 49 | END IF 50 | MP1 = M + 1 51 | DO I = MP1,N,5 52 | DTEMP = DTEMP + DX(I)*DY(I) + DX(I+1)*DY(I+1) + 53 | $ DX(I+2)*DY(I+2) + DX(I+3)*DY(I+3) + DX(I+4)*DY(I+4) 54 | END DO 55 | ELSE 56 | * 57 | * code for unequal increments or equal increments 58 | * not equal to 1 59 | * 60 | IX = 1 61 | IY = 1 62 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 63 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 64 | DO I = 1,N 65 | DTEMP = DTEMP + DX(IX)*DY(IY) 66 | IX = IX + INCX 67 | IY = IY + INCY 68 | END DO 69 | END IF 70 | DDOT = DTEMP 71 | RETURN 72 | END 73 | -------------------------------------------------------------------------------- /netlib/BLAS/dnrm2.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION X(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DNRM2 returns the euclidean norm of a vector via the function 13 | * name, so that 14 | * 15 | * DNRM2 := sqrt( x'*x ) 16 | * 17 | * Further Details 18 | * =============== 19 | * 20 | * -- This version written on 25-October-1982. 21 | * Modified on 14-October-1993 to inline the call to DLASSQ. 22 | * Sven Hammarling, Nag Ltd. 23 | * 24 | * ===================================================================== 25 | * 26 | * .. Parameters .. 27 | DOUBLE PRECISION ONE,ZERO 28 | PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) 29 | * .. 30 | * .. Local Scalars .. 31 | DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ 32 | INTEGER IX 33 | * .. 34 | * .. Intrinsic Functions .. 35 | INTRINSIC ABS,SQRT 36 | * .. 37 | IF (N.LT.1 .OR. INCX.LT.1) THEN 38 | NORM = ZERO 39 | ELSE IF (N.EQ.1) THEN 40 | NORM = ABS(X(1)) 41 | ELSE 42 | SCALE = ZERO 43 | SSQ = ONE 44 | * The following loop is equivalent to this call to the LAPACK 45 | * auxiliary routine: 46 | * CALL DLASSQ( N, X, INCX, SCALE, SSQ ) 47 | * 48 | DO 10 IX = 1,1 + (N-1)*INCX,INCX 49 | IF (X(IX).NE.ZERO) THEN 50 | ABSXI = ABS(X(IX)) 51 | IF (SCALE.LT.ABSXI) THEN 52 | SSQ = ONE + SSQ* (SCALE/ABSXI)**2 53 | SCALE = ABSXI 54 | ELSE 55 | SSQ = SSQ + (ABSXI/SCALE)**2 56 | END IF 57 | END IF 58 | 10 CONTINUE 59 | NORM = SCALE*SQRT(SSQ) 60 | END IF 61 | * 62 | DNRM2 = NORM 63 | RETURN 64 | * 65 | * End of DNRM2. 66 | * 67 | END 68 | -------------------------------------------------------------------------------- /netlib/BLAS/drot.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DROT(N,DX,INCX,DY,INCY,C,S) 2 | * .. Scalar Arguments .. 3 | DOUBLE PRECISION C,S 4 | INTEGER INCX,INCY,N 5 | * .. 6 | * .. Array Arguments .. 7 | DOUBLE PRECISION DX(*),DY(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * DROT applies a plane rotation. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DTEMP 25 | INTEGER I,IX,IY 26 | * .. 27 | IF (N.LE.0) RETURN 28 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 29 | * 30 | * code for both increments equal to 1 31 | * 32 | DO I = 1,N 33 | DTEMP = C*DX(I) + S*DY(I) 34 | DY(I) = C*DY(I) - S*DX(I) 35 | DX(I) = DTEMP 36 | END DO 37 | ELSE 38 | * 39 | * code for unequal increments or equal increments not equal 40 | * to 1 41 | * 42 | IX = 1 43 | IY = 1 44 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 45 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 46 | DO I = 1,N 47 | DTEMP = C*DX(IX) + S*DY(IY) 48 | DY(IY) = C*DY(IY) - S*DX(IX) 49 | DX(IX) = DTEMP 50 | IX = IX + INCX 51 | IY = IY + INCY 52 | END DO 53 | END IF 54 | RETURN 55 | END 56 | -------------------------------------------------------------------------------- /netlib/BLAS/drotg.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DROTG(DA,DB,C,S) 2 | * .. Scalar Arguments .. 3 | DOUBLE PRECISION C,DA,DB,S 4 | * .. 5 | * 6 | * Purpose 7 | * ======= 8 | * 9 | * DROTG construct givens plane rotation. 10 | * 11 | * Further Details 12 | * =============== 13 | * 14 | * jack dongarra, linpack, 3/11/78. 15 | * 16 | * ===================================================================== 17 | * 18 | * .. Local Scalars .. 19 | DOUBLE PRECISION R,ROE,SCALE,Z 20 | * .. 21 | * .. Intrinsic Functions .. 22 | INTRINSIC DABS,DSIGN,DSQRT 23 | * .. 24 | ROE = DB 25 | IF (DABS(DA).GT.DABS(DB)) ROE = DA 26 | SCALE = DABS(DA) + DABS(DB) 27 | IF (SCALE.EQ.0.0d0) THEN 28 | C = 1.0d0 29 | S = 0.0d0 30 | R = 0.0d0 31 | Z = 0.0d0 32 | ELSE 33 | R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2) 34 | R = DSIGN(1.0d0,ROE)*R 35 | C = DA/R 36 | S = DB/R 37 | Z = 1.0d0 38 | IF (DABS(DA).GT.DABS(DB)) Z = S 39 | IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C 40 | END IF 41 | DA = R 42 | DB = Z 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /netlib/BLAS/dscal.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DSCAL(N,DA,DX,INCX) 2 | * .. Scalar Arguments .. 3 | DOUBLE PRECISION DA 4 | INTEGER INCX,N 5 | * .. 6 | * .. Array Arguments .. 7 | DOUBLE PRECISION DX(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * DSCAL scales a vector by a constant. 14 | * uses unrolled loops for increment equal to one. 15 | * 16 | * Further Details 17 | * =============== 18 | * 19 | * jack dongarra, linpack, 3/11/78. 20 | * modified 3/93 to return if incx .le. 0. 21 | * modified 12/3/93, array(1) declarations changed to array(*) 22 | * 23 | * ===================================================================== 24 | * 25 | * .. Local Scalars .. 26 | INTEGER I,M,MP1,NINCX 27 | * .. 28 | * .. Intrinsic Functions .. 29 | INTRINSIC MOD 30 | * .. 31 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 32 | IF (INCX.EQ.1) THEN 33 | * 34 | * code for increment equal to 1 35 | * 36 | * 37 | * clean-up loop 38 | * 39 | M = MOD(N,5) 40 | IF (M.NE.0) THEN 41 | DO I = 1,M 42 | DX(I) = DA*DX(I) 43 | END DO 44 | IF (N.LT.5) RETURN 45 | END IF 46 | MP1 = M + 1 47 | DO I = MP1,N,5 48 | DX(I) = DA*DX(I) 49 | DX(I+1) = DA*DX(I+1) 50 | DX(I+2) = DA*DX(I+2) 51 | DX(I+3) = DA*DX(I+3) 52 | DX(I+4) = DA*DX(I+4) 53 | END DO 54 | ELSE 55 | * 56 | * code for increment not equal to 1 57 | * 58 | NINCX = N*INCX 59 | DO I = 1,NINCX,INCX 60 | DX(I) = DA*DX(I) 61 | END DO 62 | END IF 63 | RETURN 64 | END 65 | -------------------------------------------------------------------------------- /netlib/BLAS/dswap.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE DSWAP(N,DX,INCX,DY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION DX(*),DY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * interchanges two vectors. 13 | * uses unrolled loops for increments equal one. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DTEMP 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | IF (N.LE.0) RETURN 31 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 32 | * 33 | * code for both increments equal to 1 34 | * 35 | * 36 | * clean-up loop 37 | * 38 | M = MOD(N,3) 39 | IF (M.NE.0) THEN 40 | DO I = 1,M 41 | DTEMP = DX(I) 42 | DX(I) = DY(I) 43 | DY(I) = DTEMP 44 | END DO 45 | IF (N.LT.3) RETURN 46 | END IF 47 | MP1 = M + 1 48 | DO I = MP1,N,3 49 | DTEMP = DX(I) 50 | DX(I) = DY(I) 51 | DY(I) = DTEMP 52 | DTEMP = DX(I+1) 53 | DX(I+1) = DY(I+1) 54 | DY(I+1) = DTEMP 55 | DTEMP = DX(I+2) 56 | DX(I+2) = DY(I+2) 57 | DY(I+2) = DTEMP 58 | END DO 59 | ELSE 60 | * 61 | * code for unequal increments or equal increments not equal 62 | * to 1 63 | * 64 | IX = 1 65 | IY = 1 66 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 67 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 68 | DO I = 1,N 69 | DTEMP = DX(IX) 70 | DX(IX) = DY(IY) 71 | DY(IY) = DTEMP 72 | IX = IX + INCX 73 | IY = IY + INCY 74 | END DO 75 | END IF 76 | RETURN 77 | END 78 | -------------------------------------------------------------------------------- /netlib/BLAS/dzasum.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DZASUM(N,ZX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE COMPLEX ZX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DZASUM takes the sum of the absolute values. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, 3/11/78. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION STEMP 25 | INTEGER I,NINCX 26 | * .. 27 | * .. External Functions .. 28 | DOUBLE PRECISION DCABS1 29 | EXTERNAL DCABS1 30 | * .. 31 | DZASUM = 0.0d0 32 | STEMP = 0.0d0 33 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 34 | IF (INCX.EQ.1) THEN 35 | * 36 | * code for increment equal to 1 37 | * 38 | DO I = 1,N 39 | STEMP = STEMP + DCABS1(ZX(I)) 40 | END DO 41 | ELSE 42 | * 43 | * code for increment not equal to 1 44 | * 45 | NINCX = N*INCX 46 | DO I = 1,NINCX,INCX 47 | STEMP = STEMP + DCABS1(ZX(I)) 48 | END DO 49 | END IF 50 | DZASUM = STEMP 51 | RETURN 52 | END 53 | -------------------------------------------------------------------------------- /netlib/BLAS/dznrm2.f: -------------------------------------------------------------------------------- 1 | DOUBLE PRECISION FUNCTION DZNRM2(N,X,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE COMPLEX X(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * DZNRM2 returns the euclidean norm of a vector via the function 13 | * name, so that 14 | * 15 | * DZNRM2 := sqrt( x**H*x ) 16 | * 17 | * Further Details 18 | * =============== 19 | * 20 | * -- This version written on 25-October-1982. 21 | * Modified on 14-October-1993 to inline the call to ZLASSQ. 22 | * Sven Hammarling, Nag Ltd. 23 | * 24 | * ===================================================================== 25 | * 26 | * .. Parameters .. 27 | DOUBLE PRECISION ONE,ZERO 28 | PARAMETER (ONE=1.0D+0,ZERO=0.0D+0) 29 | * .. 30 | * .. Local Scalars .. 31 | DOUBLE PRECISION NORM,SCALE,SSQ,TEMP 32 | INTEGER IX 33 | * .. 34 | * .. Intrinsic Functions .. 35 | INTRINSIC ABS,DBLE,DIMAG,SQRT 36 | * .. 37 | IF (N.LT.1 .OR. INCX.LT.1) THEN 38 | NORM = ZERO 39 | ELSE 40 | SCALE = ZERO 41 | SSQ = ONE 42 | * The following loop is equivalent to this call to the LAPACK 43 | * auxiliary routine: 44 | * CALL ZLASSQ( N, X, INCX, SCALE, SSQ ) 45 | * 46 | DO 10 IX = 1,1 + (N-1)*INCX,INCX 47 | IF (DBLE(X(IX)).NE.ZERO) THEN 48 | TEMP = ABS(DBLE(X(IX))) 49 | IF (SCALE.LT.TEMP) THEN 50 | SSQ = ONE + SSQ* (SCALE/TEMP)**2 51 | SCALE = TEMP 52 | ELSE 53 | SSQ = SSQ + (TEMP/SCALE)**2 54 | END IF 55 | END IF 56 | IF (DIMAG(X(IX)).NE.ZERO) THEN 57 | TEMP = ABS(DIMAG(X(IX))) 58 | IF (SCALE.LT.TEMP) THEN 59 | SSQ = ONE + SSQ* (SCALE/TEMP)**2 60 | SCALE = TEMP 61 | ELSE 62 | SSQ = SSQ + (TEMP/SCALE)**2 63 | END IF 64 | END IF 65 | 10 CONTINUE 66 | NORM = SCALE*SQRT(SSQ) 67 | END IF 68 | * 69 | DZNRM2 = NORM 70 | RETURN 71 | * 72 | * End of DZNRM2. 73 | * 74 | END 75 | -------------------------------------------------------------------------------- /netlib/BLAS/icamax.f: -------------------------------------------------------------------------------- 1 | INTEGER FUNCTION ICAMAX(N,CX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | COMPLEX CX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * ICAMAX finds the index of element having max. absolute value. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, linpack, 3/11/78. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | REAL SMAX 25 | INTEGER I,IX 26 | * .. 27 | * .. External Functions .. 28 | REAL SCABS1 29 | EXTERNAL SCABS1 30 | * .. 31 | ICAMAX = 0 32 | IF (N.LT.1 .OR. INCX.LE.0) RETURN 33 | ICAMAX = 1 34 | IF (N.EQ.1) RETURN 35 | IF (INCX.EQ.1) THEN 36 | * 37 | * code for increment equal to 1 38 | * 39 | SMAX = SCABS1(CX(1)) 40 | DO I = 2,N 41 | IF (SCABS1(CX(I)).GT.SMAX) THEN 42 | ICAMAX = I 43 | SMAX = SCABS1(CX(I)) 44 | END IF 45 | END DO 46 | ELSE 47 | * 48 | * code for increment not equal to 1 49 | * 50 | IX = 1 51 | SMAX = SCABS1(CX(1)) 52 | IX = IX + INCX 53 | DO I = 2,N 54 | IF (SCABS1(CX(IX)).GT.SMAX) THEN 55 | ICAMAX = I 56 | SMAX = SCABS1(CX(IX)) 57 | END IF 58 | IX = IX + INCX 59 | END DO 60 | END IF 61 | RETURN 62 | END 63 | -------------------------------------------------------------------------------- /netlib/BLAS/idamax.f: -------------------------------------------------------------------------------- 1 | INTEGER FUNCTION IDAMAX(N,DX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE PRECISION DX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * IDAMAX finds the index of element having max. absolute value. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, linpack, 3/11/78. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DMAX 25 | INTEGER I,IX 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC DABS 29 | * .. 30 | IDAMAX = 0 31 | IF (N.LT.1 .OR. INCX.LE.0) RETURN 32 | IDAMAX = 1 33 | IF (N.EQ.1) RETURN 34 | IF (INCX.EQ.1) THEN 35 | * 36 | * code for increment equal to 1 37 | * 38 | DMAX = DABS(DX(1)) 39 | DO I = 2,N 40 | IF (DABS(DX(I)).GT.DMAX) THEN 41 | IDAMAX = I 42 | DMAX = DABS(DX(I)) 43 | END IF 44 | END DO 45 | ELSE 46 | * 47 | * code for increment not equal to 1 48 | * 49 | IX = 1 50 | DMAX = DABS(DX(1)) 51 | IX = IX + INCX 52 | DO I = 2,N 53 | IF (DABS(DX(IX)).GT.DMAX) THEN 54 | IDAMAX = I 55 | DMAX = DABS(DX(IX)) 56 | END IF 57 | IX = IX + INCX 58 | END DO 59 | END IF 60 | RETURN 61 | END 62 | -------------------------------------------------------------------------------- /netlib/BLAS/isamax.f: -------------------------------------------------------------------------------- 1 | INTEGER FUNCTION ISAMAX(N,SX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL SX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * ISAMAX finds the index of element having max. absolute value. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, linpack, 3/11/78. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | REAL SMAX 25 | INTEGER I,IX 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC ABS 29 | * .. 30 | ISAMAX = 0 31 | IF (N.LT.1 .OR. INCX.LE.0) RETURN 32 | ISAMAX = 1 33 | IF (N.EQ.1) RETURN 34 | IF (INCX.EQ.1) THEN 35 | * 36 | * code for increment equal to 1 37 | * 38 | SMAX = ABS(SX(1)) 39 | DO I = 2,N 40 | IF (ABS(SX(I)).GT.SMAX) THEN 41 | ISAMAX = I 42 | SMAX = ABS(SX(I)) 43 | END IF 44 | END DO 45 | ELSE 46 | * 47 | * code for increment not equal to 1 48 | * 49 | IX = 1 50 | SMAX = ABS(SX(1)) 51 | IX = IX + INCX 52 | DO I = 2,N 53 | IF (ABS(SX(IX)).GT.SMAX) THEN 54 | ISAMAX = I 55 | SMAX = ABS(SX(IX)) 56 | END IF 57 | IX = IX + INCX 58 | END DO 59 | END IF 60 | RETURN 61 | END 62 | -------------------------------------------------------------------------------- /netlib/BLAS/izamax.f: -------------------------------------------------------------------------------- 1 | INTEGER FUNCTION IZAMAX(N,ZX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | DOUBLE COMPLEX ZX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * IZAMAX finds the index of element having max. absolute value. 13 | * 14 | * Further Details 15 | * =============== 16 | * 17 | * jack dongarra, 1/15/85. 18 | * modified 3/93 to return if incx .le. 0. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | DOUBLE PRECISION DMAX 25 | INTEGER I,IX 26 | * .. 27 | * .. External Functions .. 28 | DOUBLE PRECISION DCABS1 29 | EXTERNAL DCABS1 30 | * .. 31 | IZAMAX = 0 32 | IF (N.LT.1 .OR. INCX.LE.0) RETURN 33 | IZAMAX = 1 34 | IF (N.EQ.1) RETURN 35 | IF (INCX.EQ.1) THEN 36 | * 37 | * code for increment equal to 1 38 | * 39 | DMAX = DCABS1(ZX(1)) 40 | DO I = 2,N 41 | IF (DCABS1(ZX(I)).GT.DMAX) THEN 42 | IZAMAX = I 43 | DMAX = DCABS1(ZX(I)) 44 | END IF 45 | END DO 46 | ELSE 47 | * 48 | * code for increment not equal to 1 49 | * 50 | IX = 1 51 | DMAX = DCABS1(ZX(1)) 52 | IX = IX + INCX 53 | DO I = 2,N 54 | IF (DCABS1(ZX(IX)).GT.DMAX) THEN 55 | IZAMAX = I 56 | DMAX = DCABS1(ZX(IX)) 57 | END IF 58 | IX = IX + INCX 59 | END DO 60 | END IF 61 | RETURN 62 | END 63 | -------------------------------------------------------------------------------- /netlib/BLAS/sasum.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SASUM(N,SX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL SX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SASUM takes the sum of the absolute values. 13 | * uses unrolled loops for increment equal to one. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 3/93 to return if incx .le. 0. 20 | * modified 12/3/93, array(1) declarations changed to array(*) 21 | * 22 | * ===================================================================== 23 | * 24 | * .. Local Scalars .. 25 | REAL STEMP 26 | INTEGER I,M,MP1,NINCX 27 | * .. 28 | * .. Intrinsic Functions .. 29 | INTRINSIC ABS,MOD 30 | * .. 31 | SASUM = 0.0e0 32 | STEMP = 0.0e0 33 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 34 | IF (INCX.EQ.1) THEN 35 | * code for increment equal to 1 36 | * 37 | * 38 | * clean-up loop 39 | * 40 | M = MOD(N,6) 41 | IF (M.NE.0) THEN 42 | DO I = 1,M 43 | STEMP = STEMP + ABS(SX(I)) 44 | END DO 45 | IF (N.LT.6) THEN 46 | SASUM = STEMP 47 | RETURN 48 | END IF 49 | END IF 50 | MP1 = M + 1 51 | DO I = MP1,N,6 52 | STEMP = STEMP + ABS(SX(I)) + ABS(SX(I+1)) + 53 | $ ABS(SX(I+2)) + ABS(SX(I+3)) + 54 | $ ABS(SX(I+4)) + ABS(SX(I+5)) 55 | END DO 56 | ELSE 57 | * 58 | * code for increment not equal to 1 59 | * 60 | NINCX = N*INCX 61 | DO I = 1,NINCX,INCX 62 | STEMP = STEMP + ABS(SX(I)) 63 | END DO 64 | END IF 65 | SASUM = STEMP 66 | RETURN 67 | END 68 | -------------------------------------------------------------------------------- /netlib/BLAS/saxpy.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SAXPY(N,SA,SX,INCX,SY,INCY) 2 | * .. Scalar Arguments .. 3 | REAL SA 4 | INTEGER INCX,INCY,N 5 | * .. 6 | * .. Array Arguments .. 7 | REAL SX(*),SY(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * SAXPY constant times a vector plus a vector. 14 | * uses unrolled loops for increments equal to one. 15 | * 16 | * Further Details 17 | * =============== 18 | * 19 | * jack dongarra, linpack, 3/11/78. 20 | * modified 12/3/93, array(1) declarations changed to array(*) 21 | * 22 | * ===================================================================== 23 | * 24 | * .. Local Scalars .. 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | IF (N.LE.0) RETURN 31 | IF (SA.EQ.0.0) RETURN 32 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 33 | * 34 | * code for both increments equal to 1 35 | * 36 | * 37 | * clean-up loop 38 | * 39 | M = MOD(N,4) 40 | IF (M.NE.0) THEN 41 | DO I = 1,M 42 | SY(I) = SY(I) + SA*SX(I) 43 | END DO 44 | END IF 45 | IF (N.LT.4) RETURN 46 | MP1 = M + 1 47 | DO I = MP1,N,4 48 | SY(I) = SY(I) + SA*SX(I) 49 | SY(I+1) = SY(I+1) + SA*SX(I+1) 50 | SY(I+2) = SY(I+2) + SA*SX(I+2) 51 | SY(I+3) = SY(I+3) + SA*SX(I+3) 52 | END DO 53 | ELSE 54 | * 55 | * code for unequal increments or equal increments 56 | * not equal to 1 57 | * 58 | IX = 1 59 | IY = 1 60 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 61 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 62 | DO I = 1,N 63 | SY(IY) = SY(IY) + SA*SX(IX) 64 | IX = IX + INCX 65 | IY = IY + INCY 66 | END DO 67 | END IF 68 | RETURN 69 | END 70 | -------------------------------------------------------------------------------- /netlib/BLAS/scabs1.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SCABS1(Z) 2 | * .. Scalar Arguments .. 3 | COMPLEX Z 4 | * .. 5 | * 6 | * Purpose 7 | * ======= 8 | * 9 | * SCABS1 computes absolute value of a complex number 10 | * 11 | * ===================================================================== 12 | * 13 | * .. Intrinsic Functions .. 14 | INTRINSIC ABS,AIMAG,REAL 15 | * .. 16 | SCABS1 = ABS(REAL(Z)) + ABS(AIMAG(Z)) 17 | RETURN 18 | END 19 | -------------------------------------------------------------------------------- /netlib/BLAS/scasum.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SCASUM(N,CX,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | COMPLEX CX(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SCASUM takes the sum of the absolute values of a complex vector and 13 | * returns a single precision result. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 3/93 to return if incx .le. 0. 20 | * modified 12/3/93, array(1) declarations changed to array(*) 21 | * 22 | * ===================================================================== 23 | * 24 | * .. Local Scalars .. 25 | REAL STEMP 26 | INTEGER I,NINCX 27 | * .. 28 | * .. Intrinsic Functions .. 29 | INTRINSIC ABS,AIMAG,REAL 30 | * .. 31 | SCASUM = 0.0e0 32 | STEMP = 0.0e0 33 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 34 | IF (INCX.EQ.1) THEN 35 | * 36 | * code for increment equal to 1 37 | * 38 | DO I = 1,N 39 | STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I))) 40 | END DO 41 | ELSE 42 | * 43 | * code for increment not equal to 1 44 | * 45 | NINCX = N*INCX 46 | DO I = 1,NINCX,INCX 47 | STEMP = STEMP + ABS(REAL(CX(I))) + ABS(AIMAG(CX(I))) 48 | END DO 49 | END IF 50 | SCASUM = STEMP 51 | RETURN 52 | END 53 | -------------------------------------------------------------------------------- /netlib/BLAS/scnrm2.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SCNRM2(N,X,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | COMPLEX X(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SCNRM2 returns the euclidean norm of a vector via the function 13 | * name, so that 14 | * 15 | * SCNRM2 := sqrt( x**H*x ) 16 | * 17 | * Further Details 18 | * =============== 19 | * 20 | * -- This version written on 25-October-1982. 21 | * Modified on 14-October-1993 to inline the call to CLASSQ. 22 | * Sven Hammarling, Nag Ltd. 23 | * 24 | * ===================================================================== 25 | * 26 | * .. Parameters .. 27 | REAL ONE,ZERO 28 | PARAMETER (ONE=1.0E+0,ZERO=0.0E+0) 29 | * .. 30 | * .. Local Scalars .. 31 | REAL NORM,SCALE,SSQ,TEMP 32 | INTEGER IX 33 | * .. 34 | * .. Intrinsic Functions .. 35 | INTRINSIC ABS,AIMAG,REAL,SQRT 36 | * .. 37 | IF (N.LT.1 .OR. INCX.LT.1) THEN 38 | NORM = ZERO 39 | ELSE 40 | SCALE = ZERO 41 | SSQ = ONE 42 | * The following loop is equivalent to this call to the LAPACK 43 | * auxiliary routine: 44 | * CALL CLASSQ( N, X, INCX, SCALE, SSQ ) 45 | * 46 | DO 10 IX = 1,1 + (N-1)*INCX,INCX 47 | IF (REAL(X(IX)).NE.ZERO) THEN 48 | TEMP = ABS(REAL(X(IX))) 49 | IF (SCALE.LT.TEMP) THEN 50 | SSQ = ONE + SSQ* (SCALE/TEMP)**2 51 | SCALE = TEMP 52 | ELSE 53 | SSQ = SSQ + (TEMP/SCALE)**2 54 | END IF 55 | END IF 56 | IF (AIMAG(X(IX)).NE.ZERO) THEN 57 | TEMP = ABS(AIMAG(X(IX))) 58 | IF (SCALE.LT.TEMP) THEN 59 | SSQ = ONE + SSQ* (SCALE/TEMP)**2 60 | SCALE = TEMP 61 | ELSE 62 | SSQ = SSQ + (TEMP/SCALE)**2 63 | END IF 64 | END IF 65 | 10 CONTINUE 66 | NORM = SCALE*SQRT(SSQ) 67 | END IF 68 | * 69 | SCNRM2 = NORM 70 | RETURN 71 | * 72 | * End of SCNRM2. 73 | * 74 | END 75 | -------------------------------------------------------------------------------- /netlib/BLAS/scopy.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SCOPY(N,SX,INCX,SY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL SX(*),SY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SCOPY copies a vector, x, to a vector, y. 13 | * uses unrolled loops for increments equal to 1. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | INTEGER I,IX,IY,M,MP1 25 | * .. 26 | * .. Intrinsic Functions .. 27 | INTRINSIC MOD 28 | * .. 29 | IF (N.LE.0) RETURN 30 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 31 | * 32 | * code for both increments equal to 1 33 | * 34 | * 35 | * clean-up loop 36 | * 37 | M = MOD(N,7) 38 | IF (M.NE.0) THEN 39 | DO I = 1,M 40 | SY(I) = SX(I) 41 | END DO 42 | IF (N.LT.7) RETURN 43 | END IF 44 | MP1 = M + 1 45 | DO I = MP1,N,7 46 | SY(I) = SX(I) 47 | SY(I+1) = SX(I+1) 48 | SY(I+2) = SX(I+2) 49 | SY(I+3) = SX(I+3) 50 | SY(I+4) = SX(I+4) 51 | SY(I+5) = SX(I+5) 52 | SY(I+6) = SX(I+6) 53 | END DO 54 | ELSE 55 | * 56 | * code for unequal increments or equal increments 57 | * not equal to 1 58 | * 59 | IX = 1 60 | IY = 1 61 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 62 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 63 | DO I = 1,N 64 | SY(IY) = SX(IX) 65 | IX = IX + INCX 66 | IY = IY + INCY 67 | END DO 68 | END IF 69 | RETURN 70 | END 71 | -------------------------------------------------------------------------------- /netlib/BLAS/sdot.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SDOT(N,SX,INCX,SY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL SX(*),SY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SDOT forms the dot product of two vectors. 13 | * uses unrolled loops for increments equal to one. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | REAL STEMP 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | STEMP = 0.0e0 31 | SDOT = 0.0e0 32 | IF (N.LE.0) RETURN 33 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 34 | * 35 | * code for both increments equal to 1 36 | * 37 | * 38 | * clean-up loop 39 | * 40 | M = MOD(N,5) 41 | IF (M.NE.0) THEN 42 | DO I = 1,M 43 | STEMP = STEMP + SX(I)*SY(I) 44 | END DO 45 | IF (N.LT.5) THEN 46 | SDOT=STEMP 47 | RETURN 48 | END IF 49 | END IF 50 | MP1 = M + 1 51 | DO I = MP1,N,5 52 | STEMP = STEMP + SX(I)*SY(I) + SX(I+1)*SY(I+1) + 53 | $ SX(I+2)*SY(I+2) + SX(I+3)*SY(I+3) + SX(I+4)*SY(I+4) 54 | END DO 55 | ELSE 56 | * 57 | * code for unequal increments or equal increments 58 | * not equal to 1 59 | * 60 | IX = 1 61 | IY = 1 62 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 63 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 64 | DO I = 1,N 65 | STEMP = STEMP + SX(IX)*SY(IY) 66 | IX = IX + INCX 67 | IY = IY + INCY 68 | END DO 69 | END IF 70 | SDOT = STEMP 71 | RETURN 72 | END 73 | -------------------------------------------------------------------------------- /netlib/BLAS/snrm2.f: -------------------------------------------------------------------------------- 1 | REAL FUNCTION SNRM2(N,X,INCX) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL X(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * SNRM2 returns the euclidean norm of a vector via the function 13 | * name, so that 14 | * 15 | * SNRM2 := sqrt( x'*x ). 16 | * 17 | * Further Details 18 | * =============== 19 | * 20 | * -- This version written on 25-October-1982. 21 | * Modified on 14-October-1993 to inline the call to SLASSQ. 22 | * Sven Hammarling, Nag Ltd. 23 | * 24 | * ===================================================================== 25 | * 26 | * .. Parameters .. 27 | REAL ONE,ZERO 28 | PARAMETER (ONE=1.0E+0,ZERO=0.0E+0) 29 | * .. 30 | * .. Local Scalars .. 31 | REAL ABSXI,NORM,SCALE,SSQ 32 | INTEGER IX 33 | * .. 34 | * .. Intrinsic Functions .. 35 | INTRINSIC ABS,SQRT 36 | * .. 37 | IF (N.LT.1 .OR. INCX.LT.1) THEN 38 | NORM = ZERO 39 | ELSE IF (N.EQ.1) THEN 40 | NORM = ABS(X(1)) 41 | ELSE 42 | SCALE = ZERO 43 | SSQ = ONE 44 | * The following loop is equivalent to this call to the LAPACK 45 | * auxiliary routine: 46 | * CALL SLASSQ( N, X, INCX, SCALE, SSQ ) 47 | * 48 | DO 10 IX = 1,1 + (N-1)*INCX,INCX 49 | IF (X(IX).NE.ZERO) THEN 50 | ABSXI = ABS(X(IX)) 51 | IF (SCALE.LT.ABSXI) THEN 52 | SSQ = ONE + SSQ* (SCALE/ABSXI)**2 53 | SCALE = ABSXI 54 | ELSE 55 | SSQ = SSQ + (ABSXI/SCALE)**2 56 | END IF 57 | END IF 58 | 10 CONTINUE 59 | NORM = SCALE*SQRT(SSQ) 60 | END IF 61 | * 62 | SNRM2 = NORM 63 | RETURN 64 | * 65 | * End of SNRM2. 66 | * 67 | END 68 | -------------------------------------------------------------------------------- /netlib/BLAS/srot.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SROT(N,SX,INCX,SY,INCY,C,S) 2 | * .. Scalar Arguments .. 3 | REAL C,S 4 | INTEGER INCX,INCY,N 5 | * .. 6 | * .. Array Arguments .. 7 | REAL SX(*),SY(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * applies a plane rotation. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | REAL STEMP 25 | INTEGER I,IX,IY 26 | * .. 27 | IF (N.LE.0) RETURN 28 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 29 | * 30 | * code for both increments equal to 1 31 | * 32 | DO I = 1,N 33 | STEMP = C*SX(I) + S*SY(I) 34 | SY(I) = C*SY(I) - S*SX(I) 35 | SX(I) = STEMP 36 | END DO 37 | ELSE 38 | * 39 | * code for unequal increments or equal increments not equal 40 | * to 1 41 | * 42 | IX = 1 43 | IY = 1 44 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 45 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 46 | DO I = 1,N 47 | STEMP = C*SX(IX) + S*SY(IY) 48 | SY(IY) = C*SY(IY) - S*SX(IX) 49 | SX(IX) = STEMP 50 | IX = IX + INCX 51 | IY = IY + INCY 52 | END DO 53 | END IF 54 | RETURN 55 | END 56 | -------------------------------------------------------------------------------- /netlib/BLAS/srotg.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SROTG(SA,SB,C,S) 2 | * .. Scalar Arguments .. 3 | REAL C,S,SA,SB 4 | * .. 5 | * 6 | * Purpose 7 | * ======= 8 | * 9 | * SROTG construct givens plane rotation. 10 | * 11 | * Further Details 12 | * =============== 13 | * 14 | * jack dongarra, linpack, 3/11/78. 15 | * 16 | * ===================================================================== 17 | * 18 | * .. Local Scalars .. 19 | REAL R,ROE,SCALE,Z 20 | * .. 21 | * .. Intrinsic Functions .. 22 | INTRINSIC ABS,SIGN,SQRT 23 | * .. 24 | ROE = SB 25 | IF (ABS(SA).GT.ABS(SB)) ROE = SA 26 | SCALE = ABS(SA) + ABS(SB) 27 | IF (SCALE.EQ.0.0) THEN 28 | C = 1.0 29 | S = 0.0 30 | R = 0.0 31 | Z = 0.0 32 | ELSE 33 | R = SCALE*SQRT((SA/SCALE)**2+ (SB/SCALE)**2) 34 | R = SIGN(1.0,ROE)*R 35 | C = SA/R 36 | S = SB/R 37 | Z = 1.0 38 | IF (ABS(SA).GT.ABS(SB)) Z = S 39 | IF (ABS(SB).GE.ABS(SA) .AND. C.NE.0.0) Z = 1.0/C 40 | END IF 41 | SA = R 42 | SB = Z 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /netlib/BLAS/sscal.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SSCAL(N,SA,SX,INCX) 2 | * .. Scalar Arguments .. 3 | REAL SA 4 | INTEGER INCX,N 5 | * .. 6 | * .. Array Arguments .. 7 | REAL SX(*) 8 | * .. 9 | * 10 | * Purpose 11 | * ======= 12 | * 13 | * scales a vector by a constant. 14 | * uses unrolled loops for increment equal to 1. 15 | * 16 | * Further Details 17 | * =============== 18 | * 19 | * jack dongarra, linpack, 3/11/78. 20 | * modified 3/93 to return if incx .le. 0. 21 | * modified 12/3/93, array(1) declarations changed to array(*) 22 | * 23 | * ===================================================================== 24 | * 25 | * .. Local Scalars .. 26 | INTEGER I,M,MP1,NINCX 27 | * .. 28 | * .. Intrinsic Functions .. 29 | INTRINSIC MOD 30 | * .. 31 | IF (N.LE.0 .OR. INCX.LE.0) RETURN 32 | IF (INCX.EQ.1) THEN 33 | * 34 | * code for increment equal to 1 35 | * 36 | * 37 | * clean-up loop 38 | * 39 | M = MOD(N,5) 40 | IF (M.NE.0) THEN 41 | DO I = 1,M 42 | SX(I) = SA*SX(I) 43 | END DO 44 | IF (N.LT.5) RETURN 45 | END IF 46 | MP1 = M + 1 47 | DO I = MP1,N,5 48 | SX(I) = SA*SX(I) 49 | SX(I+1) = SA*SX(I+1) 50 | SX(I+2) = SA*SX(I+2) 51 | SX(I+3) = SA*SX(I+3) 52 | SX(I+4) = SA*SX(I+4) 53 | END DO 54 | ELSE 55 | * 56 | * code for increment not equal to 1 57 | * 58 | NINCX = N*INCX 59 | DO I = 1,NINCX,INCX 60 | SX(I) = SA*SX(I) 61 | END DO 62 | END IF 63 | RETURN 64 | END 65 | -------------------------------------------------------------------------------- /netlib/BLAS/sswap.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE SSWAP(N,SX,INCX,SY,INCY) 2 | * .. Scalar Arguments .. 3 | INTEGER INCX,INCY,N 4 | * .. 5 | * .. Array Arguments .. 6 | REAL SX(*),SY(*) 7 | * .. 8 | * 9 | * Purpose 10 | * ======= 11 | * 12 | * interchanges two vectors. 13 | * uses unrolled loops for increments equal to 1. 14 | * 15 | * Further Details 16 | * =============== 17 | * 18 | * jack dongarra, linpack, 3/11/78. 19 | * modified 12/3/93, array(1) declarations changed to array(*) 20 | * 21 | * ===================================================================== 22 | * 23 | * .. Local Scalars .. 24 | REAL STEMP 25 | INTEGER I,IX,IY,M,MP1 26 | * .. 27 | * .. Intrinsic Functions .. 28 | INTRINSIC MOD 29 | * .. 30 | IF (N.LE.0) RETURN 31 | IF (INCX.EQ.1 .AND. INCY.EQ.1) THEN 32 | * 33 | * code for both increments equal to 1 34 | * 35 | * 36 | * clean-up loop 37 | * 38 | M = MOD(N,3) 39 | IF (M.NE.0) THEN 40 | DO I = 1,M 41 | STEMP = SX(I) 42 | SX(I) = SY(I) 43 | SY(I) = STEMP 44 | END DO 45 | IF (N.LT.3) RETURN 46 | END IF 47 | MP1 = M + 1 48 | DO I = MP1,N,3 49 | STEMP = SX(I) 50 | SX(I) = SY(I) 51 | SY(I) = STEMP 52 | STEMP = SX(I+1) 53 | SX(I+1) = SY(I+1) 54 | SY(I+1) = STEMP 55 | STEMP = SX(I+2) 56 | SX(I+2) = SY(I+2) 57 | SY(I+2) = STEMP 58 | END DO 59 | ELSE 60 | * 61 | * code for unequal increments or equal increments not equal 62 | * to 1 63 | * 64 | IX = 1 65 | IY = 1 66 | IF (INCX.LT.0) IX = (-N+1)*INCX + 1 67 | IF (INCY.LT.0) IY = (-N+1)*INCY + 1 68 | DO I = 1,N 69 | STEMP = SX(IX) 70 | SX(IX) = SY(IY) 71 | SY(IY) = STEMP 72 | IX = IX + INCX 73 | IY = IY + INCY 74 | END DO 75 | END IF 76 | RETURN 77 | END 78 | -------------------------------------------------------------------------------- /netlib/BLAS/xerbla.f: -------------------------------------------------------------------------------- 1 | SUBROUTINE XERBLA( SRNAME, INFO ) 2 | * 3 | * -- LAPACK auxiliary routine (preliminary version) -- 4 | * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. 5 | * November 2006 6 | * 7 | * .. Scalar Arguments .. 8 | CHARACTER*(*) SRNAME 9 | INTEGER INFO 10 | * .. 11 | * 12 | * Purpose 13 | * ======= 14 | * 15 | * XERBLA is an error handler for the LAPACK routines. 16 | * It is called by an LAPACK routine if an input parameter has an 17 | * invalid value. A message is printed and execution stops. 18 | * 19 | * Installers may consider modifying the STOP statement in order to 20 | * call system-specific exception-handling facilities. 21 | * 22 | * Arguments 23 | * ========= 24 | * 25 | * SRNAME (input) CHARACTER*(*) 26 | * The name of the routine which called XERBLA. 27 | * 28 | * INFO (input) INTEGER 29 | * The position of the invalid parameter in the parameter list 30 | * of the calling routine. 31 | * 32 | * ===================================================================== 33 | * 34 | * .. Intrinsic Functions .. 35 | INTRINSIC LEN_TRIM 36 | * .. 37 | * .. Executable Statements .. 38 | * 39 | WRITE( *, FMT = 9999 )SRNAME( 1:LEN_TRIM( SRNAME ) ), INFO 40 | * 41 | STOP 42 | * 43 | 9999 FORMAT( ' ** On entry to ', A, ' parameter number ', I2, ' had ', 44 | $ 'an illegal value' ) 45 | * 46 | * End of XERBLA 47 | * 48 | END 49 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dasum.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dasum.c 3 | * 4 | * The program is a C interface to dasum. 5 | * It calls the fortran wrapper before calling dasum. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_dasum( const int N, const double *X, const int incX) 13 | { 14 | double asum; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_dasum_sub( &F77_N, X, &F77_incX, &asum); 22 | return asum; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_daxpy.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_daxpy.c 3 | * 4 | * The program is a C interface to daxpy. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_daxpy( const int N, const double alpha, const double *X, 12 | const int incX, double *Y, const int incY) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_daxpy( &F77_N, &alpha, X, &F77_incX, Y, &F77_incY); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dcopy.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dcopy.c 3 | * 4 | * The program is a C interface to dcopy. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_dcopy( const int N, const double *X, 12 | const int incX, double *Y, const int incY) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_dcopy( &F77_N, X, &F77_incX, Y, &F77_incY); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_ddot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_ddot.c 3 | * 4 | * The program is a C interface to ddot. 5 | * It calls the fortran wrapper before calling ddot. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_ddot( const int N, const double *X, 13 | const int incX, const double *Y, const int incY) 14 | { 15 | double dot; 16 | #ifdef F77_INT 17 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_N N 20 | #define F77_incX incX 21 | #define F77_incY incY 22 | #endif 23 | F77_ddot_sub( &F77_N, X, &F77_incX, Y, &F77_incY, &dot); 24 | return dot; 25 | } 26 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dger.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dger.c 4 | * This program is a C interface to dger. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N, 13 | const double alpha, const double *X, const int incX, 14 | const double *Y, const int incY, double *A, const int lda) 15 | { 16 | #ifdef F77_INT 17 | F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_M M 20 | #define F77_N N 21 | #define F77_incX incX 22 | #define F77_incY incY 23 | #define F77_lda lda 24 | #endif 25 | 26 | extern int CBLAS_CallFromC; 27 | extern int RowMajorStrg; 28 | RowMajorStrg = 0; 29 | 30 | CBLAS_CallFromC = 1; 31 | if (order == CblasColMajor) 32 | { 33 | F77_dger( &F77_M, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 34 | &F77_lda); 35 | } 36 | else if (order == CblasRowMajor) 37 | { 38 | RowMajorStrg = 1; 39 | F77_dger( &F77_N, &F77_M ,&alpha, Y, &F77_incY, X, &F77_incX, A, 40 | &F77_lda); 41 | 42 | } 43 | else cblas_xerbla(1, "cblas_dger", "Illegal Order setting, %d\n", order); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dnrm2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dnrm2.c 3 | * 4 | * The program is a C interface to dnrm2. 5 | * It calls the fortranwrapper before calling dnrm2. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_dnrm2( const int N, const double *X, const int incX) 13 | { 14 | double nrm2; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_dnrm2_sub( &F77_N, X, &F77_incX, &nrm2); 22 | return nrm2; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_drot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_drot.c 3 | * 4 | * The program is a C interface to drot. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_drot(const int N, double *X, const int incX, 12 | double *Y, const int incY, const double c, const double s) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_drot(&F77_N, X, &F77_incX, Y, &F77_incY, &c, &s); 22 | return; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_drotg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_drotg.c 3 | * 4 | * The program is a C interface to drotg. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_drotg( double *a, double *b, double *c, double *s) 12 | { 13 | F77_drotg(a,b,c,s); 14 | } 15 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_drotm.c: -------------------------------------------------------------------------------- 1 | #include "cblas.h" 2 | #include "cblas_f77.h" 3 | void cblas_drotm( const int N, double *X, const int incX, double *Y, 4 | const int incY, const double *P) 5 | { 6 | #ifdef F77_INT 7 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 8 | #else 9 | #define F77_N N 10 | #define F77_incX incX 11 | #define F77_incY incY 12 | #endif 13 | F77_drotm( &F77_N, X, &F77_incX, Y, &F77_incY, P); 14 | } 15 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_drotmg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_drotmg.c 3 | * 4 | * The program is a C interface to drotmg. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_drotmg( double *d1, double *d2, double *b1, 12 | const double b2, double *p) 13 | { 14 | F77_drotmg(d1,d2,b1,&b2,p); 15 | } 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dsbmv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dsbmv.c 4 | * This program is a C interface to dsbmv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dsbmv(const enum CBLAS_ORDER order, 13 | const enum CBLAS_UPLO Uplo, const int N, const int K, 14 | const double alpha, const double *A, const int lda, 15 | const double *X, const int incX, const double beta, 16 | double *Y, const int incY) 17 | { 18 | char UL; 19 | #ifdef F77_CHAR 20 | F77_CHAR F77_UL; 21 | #else 22 | #define F77_UL &UL 23 | #endif 24 | #ifdef F77_INT 25 | F77_INT F77_N=N, F77_K=K, F77_lda=lda, F77_incX=incX, F77_incY=incY; 26 | #else 27 | #define F77_N N 28 | #define F77_K K 29 | #define F77_lda lda 30 | #define F77_incX incX 31 | #define F77_incY incY 32 | #endif 33 | extern int CBLAS_CallFromC; 34 | extern int RowMajorStrg; 35 | RowMajorStrg = 0; 36 | 37 | CBLAS_CallFromC = 1; 38 | if (order == CblasColMajor) 39 | { 40 | if (Uplo == CblasUpper) UL = 'U'; 41 | else if (Uplo == CblasLower) UL = 'L'; 42 | else 43 | { 44 | cblas_xerbla(2, "cblas_dsbmv","Illegal Uplo setting, %d\n",Uplo ); 45 | CBLAS_CallFromC = 0; 46 | RowMajorStrg = 0; 47 | return; 48 | } 49 | #ifdef F77_CHAR 50 | F77_UL = C2F_CHAR(&UL); 51 | #endif 52 | F77_dsbmv(F77_UL, &F77_N, &F77_K, &alpha, A, &F77_lda, X, 53 | &F77_incX, &beta, Y, &F77_incY); 54 | } 55 | else if (order == CblasRowMajor) 56 | { 57 | RowMajorStrg = 1; 58 | if (Uplo == CblasUpper) UL = 'L'; 59 | else if (Uplo == CblasLower) UL = 'U'; 60 | else 61 | { 62 | cblas_xerbla(2, "cblas_dsbmv","Illegal Uplo setting, %d\n", Uplo); 63 | CBLAS_CallFromC = 0; 64 | RowMajorStrg = 0; 65 | return; 66 | } 67 | #ifdef F77_CHAR 68 | F77_UL = C2F_CHAR(&UL); 69 | #endif 70 | F77_dsbmv(F77_UL, &F77_N, &F77_K, &alpha, 71 | A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); 72 | } 73 | else cblas_xerbla(1, "cblas_dsbmv", "Illegal Order setting, %d\n", order); 74 | CBLAS_CallFromC = 0; 75 | RowMajorStrg = 0; 76 | return; 77 | } 78 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dscal.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dscal.c 3 | * 4 | * The program is a C interface to dscal. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_dscal( const int N, const double alpha, double *X, 12 | const int incX) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #endif 20 | F77_dscal( &F77_N, &alpha, X, &F77_incX); 21 | } 22 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dsdot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dsdot.c 3 | * 4 | * The program is a C interface to dsdot. 5 | * It calls fthe fortran wrapper before calling dsdot. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_dsdot( const int N, const float *X, 13 | const int incX, const float *Y, const int incY) 14 | { 15 | double dot; 16 | #ifdef F77_INT 17 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_N N 20 | #define F77_incX incX 21 | #define F77_incY incY 22 | #endif 23 | F77_dsdot_sub( &F77_N, X, &F77_incX, Y, &F77_incY, &dot); 24 | return dot; 25 | } 26 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dspmv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dspmv.c 4 | * This program is a C interface to dspmv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | 11 | #include "cblas.h" 12 | #include "cblas_f77.h" 13 | void cblas_dspmv(const enum CBLAS_ORDER order, 14 | const enum CBLAS_UPLO Uplo, const int N, 15 | const double alpha, const double *AP, 16 | const double *X, const int incX, const double beta, 17 | double *Y, const int incY) 18 | { 19 | char UL; 20 | #ifdef F77_CHAR 21 | F77_CHAR F77_UL; 22 | #else 23 | #define F77_UL &UL 24 | #endif 25 | #ifdef F77_INT 26 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 27 | #else 28 | #define F77_N N 29 | #define F77_incX incX 30 | #define F77_incY incY 31 | #endif 32 | extern int CBLAS_CallFromC; 33 | extern int RowMajorStrg; 34 | RowMajorStrg = 0; 35 | 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | if (Uplo == CblasUpper) UL = 'U'; 40 | else if (Uplo == CblasLower) UL = 'L'; 41 | else 42 | { 43 | cblas_xerbla(2, "cblas_dspmv","Illegal Uplo setting, %d\n",Uplo ); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | #ifdef F77_CHAR 49 | F77_UL = C2F_CHAR(&UL); 50 | #endif 51 | F77_dspmv(F77_UL, &F77_N, &alpha, AP, X, 52 | &F77_incX, &beta, Y, &F77_incY); 53 | } 54 | else if (order == CblasRowMajor) 55 | { 56 | RowMajorStrg = 1; 57 | if (Uplo == CblasUpper) UL = 'L'; 58 | else if (Uplo == CblasLower) UL = 'U'; 59 | else 60 | { 61 | cblas_xerbla(2, "cblas_dspmv","Illegal Uplo setting, %d\n", Uplo); 62 | CBLAS_CallFromC = 0; 63 | RowMajorStrg = 0; 64 | return; 65 | } 66 | #ifdef F77_CHAR 67 | F77_UL = C2F_CHAR(&UL); 68 | #endif 69 | F77_dspmv(F77_UL, &F77_N, &alpha, 70 | AP, X,&F77_incX, &beta, Y, &F77_incY); 71 | } 72 | else cblas_xerbla(1, "cblas_dspmv", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dspr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dspr.c 4 | * This program is a C interface to dspr. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const double alpha, const double *X, 14 | const int incX, double *Ap) 15 | { 16 | char UL; 17 | #ifdef F77_CHAR 18 | F77_CHAR F77_UL; 19 | #else 20 | #define F77_UL &UL 21 | #endif 22 | 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_incX=incX; 25 | #else 26 | #define F77_N N 27 | #define F77_incX incX 28 | #endif 29 | extern int CBLAS_CallFromC; 30 | extern int RowMajorStrg; 31 | RowMajorStrg = 0; 32 | CBLAS_CallFromC = 1; 33 | if (order == CblasColMajor) 34 | { 35 | if (Uplo == CblasLower) UL = 'L'; 36 | else if (Uplo == CblasUpper) UL = 'U'; 37 | else 38 | { 39 | cblas_xerbla(2, "cblas_dspr","Illegal Uplo setting, %d\n",Uplo ); 40 | CBLAS_CallFromC = 0; 41 | RowMajorStrg = 0; 42 | return; 43 | } 44 | #ifdef F77_CHAR 45 | F77_UL = C2F_CHAR(&UL); 46 | #endif 47 | 48 | F77_dspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); 49 | 50 | } else if (order == CblasRowMajor) 51 | { 52 | RowMajorStrg = 1; 53 | if (Uplo == CblasLower) UL = 'U'; 54 | else if (Uplo == CblasUpper) UL = 'L'; 55 | else 56 | { 57 | cblas_xerbla(2, "cblas_dspr","Illegal Uplo setting, %d\n",Uplo ); 58 | CBLAS_CallFromC = 0; 59 | RowMajorStrg = 0; 60 | return; 61 | } 62 | #ifdef F77_CHAR 63 | F77_UL = C2F_CHAR(&UL); 64 | #endif 65 | F77_dspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); 66 | } else cblas_xerbla(1, "cblas_dspr", "Illegal Order setting, %d\n", order); 67 | CBLAS_CallFromC = 0; 68 | RowMajorStrg = 0; 69 | return; 70 | } 71 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dspr2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dspr2.c 3 | * The program is a C interface to dspr2. 4 | * 5 | * Keita Teranishi 5/20/98 6 | * 7 | */ 8 | #include "cblas.h" 9 | #include "cblas_f77.h" 10 | void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 11 | const int N, const double alpha, const double *X, 12 | const int incX, const double *Y, const int incY, double *A) 13 | { 14 | char UL; 15 | #ifdef F77_CHAR 16 | F77_CHAR F77_UL; 17 | #else 18 | #define F77_UL &UL 19 | #endif 20 | 21 | #ifdef F77_INT 22 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 23 | #else 24 | #define F77_N N 25 | #define F77_incX incX 26 | #define F77_incY incY 27 | #endif 28 | 29 | extern int CBLAS_CallFromC; 30 | extern int RowMajorStrg; 31 | RowMajorStrg = 0; 32 | CBLAS_CallFromC = 1; 33 | if (order == CblasColMajor) 34 | { 35 | if (Uplo == CblasLower) UL = 'L'; 36 | else if (Uplo == CblasUpper) UL = 'U'; 37 | else 38 | { 39 | cblas_xerbla(2, "cblas_dspr2","Illegal Uplo setting, %d\n",Uplo ); 40 | CBLAS_CallFromC = 0; 41 | RowMajorStrg = 0; 42 | return; 43 | } 44 | #ifdef F77_CHAR 45 | F77_UL = C2F_CHAR(&UL); 46 | #endif 47 | 48 | F77_dspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); 49 | 50 | } else if (order == CblasRowMajor) 51 | { 52 | RowMajorStrg = 1; 53 | if (Uplo == CblasLower) UL = 'U'; 54 | else if (Uplo == CblasUpper) UL = 'L'; 55 | else 56 | { 57 | cblas_xerbla(2, "cblas_dspr2","Illegal Uplo setting, %d\n",Uplo ); 58 | CBLAS_CallFromC = 0; 59 | RowMajorStrg = 0; 60 | return; 61 | } 62 | #ifdef F77_CHAR 63 | F77_UL = C2F_CHAR(&UL); 64 | #endif 65 | F77_dspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); 66 | } else cblas_xerbla(1, "cblas_dspr2", "Illegal Order setting, %d\n", order); 67 | CBLAS_CallFromC = 0; 68 | RowMajorStrg = 0; 69 | return; 70 | } 71 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dswap.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dswap.c 3 | * 4 | * The program is a C interface to dswap. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_dswap( const int N, double *X, const int incX, double *Y, 12 | const int incY) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_dswap( &F77_N, X, &F77_incX, Y, &F77_incY); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dsymv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dsymv.c 4 | * This program is a C interface to dsymv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dsymv(const enum CBLAS_ORDER order, 13 | const enum CBLAS_UPLO Uplo, const int N, 14 | const double alpha, const double *A, const int lda, 15 | const double *X, const int incX, const double beta, 16 | double *Y, const int incY) 17 | { 18 | char UL; 19 | #ifdef F77_CHAR 20 | F77_CHAR F77_UL; 21 | #else 22 | #define F77_UL &UL 23 | #endif 24 | #ifdef F77_INT 25 | F77_INT F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY; 26 | #else 27 | #define F77_N N 28 | #define F77_lda lda 29 | #define F77_incX incX 30 | #define F77_incY incY 31 | #endif 32 | extern int CBLAS_CallFromC; 33 | extern int RowMajorStrg; 34 | RowMajorStrg = 0; 35 | 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | if (Uplo == CblasUpper) UL = 'U'; 40 | else if (Uplo == CblasLower) UL = 'L'; 41 | else 42 | { 43 | cblas_xerbla(2, "cblas_dsymv","Illegal Uplo setting, %d\n",Uplo ); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | #ifdef F77_CHAR 49 | F77_UL = C2F_CHAR(&UL); 50 | #endif 51 | F77_dsymv(F77_UL, &F77_N, &alpha, A, &F77_lda, X, 52 | &F77_incX, &beta, Y, &F77_incY); 53 | } 54 | else if (order == CblasRowMajor) 55 | { 56 | RowMajorStrg = 1; 57 | if (Uplo == CblasUpper) UL = 'L'; 58 | else if (Uplo == CblasLower) UL = 'U'; 59 | else 60 | { 61 | cblas_xerbla(2, "cblas_dsymv","Illegal Uplo setting, %d\n", Uplo); 62 | CBLAS_CallFromC = 0; 63 | RowMajorStrg = 0; 64 | return; 65 | } 66 | #ifdef F77_CHAR 67 | F77_UL = C2F_CHAR(&UL); 68 | #endif 69 | F77_dsymv(F77_UL, &F77_N, &alpha, 70 | A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); 71 | } 72 | else cblas_xerbla(1, "cblas_dsymv", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dsyr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dsyr.c 4 | * This program is a C interface to dsyr. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const double alpha, const double *X, 14 | const int incX, double *A, const int lda) 15 | { 16 | char UL; 17 | #ifdef F77_CHAR 18 | F77_CHAR F77_UL; 19 | #else 20 | #define F77_UL &UL 21 | #endif 22 | 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_incX=incX, F77_lda=lda; 25 | #else 26 | #define F77_N N 27 | #define F77_incX incX 28 | #define F77_lda lda 29 | #endif 30 | extern int CBLAS_CallFromC; 31 | extern int RowMajorStrg; 32 | RowMajorStrg = 0; 33 | CBLAS_CallFromC = 1; 34 | if (order == CblasColMajor) 35 | { 36 | if (Uplo == CblasLower) UL = 'L'; 37 | else if (Uplo == CblasUpper) UL = 'U'; 38 | else 39 | { 40 | cblas_xerbla(2, "cblas_dsyr","Illegal Uplo setting, %d\n",Uplo ); 41 | CBLAS_CallFromC = 0; 42 | RowMajorStrg = 0; 43 | return; 44 | } 45 | #ifdef F77_CHAR 46 | F77_UL = C2F_CHAR(&UL); 47 | #endif 48 | 49 | F77_dsyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); 50 | 51 | } else if (order == CblasRowMajor) 52 | { 53 | RowMajorStrg = 1; 54 | if (Uplo == CblasLower) UL = 'U'; 55 | else if (Uplo == CblasUpper) UL = 'L'; 56 | else 57 | { 58 | cblas_xerbla(2, "cblas_dsyr","Illegal Uplo setting, %d\n",Uplo ); 59 | CBLAS_CallFromC = 0; 60 | RowMajorStrg = 0; 61 | return; 62 | } 63 | #ifdef F77_CHAR 64 | F77_UL = C2F_CHAR(&UL); 65 | #endif 66 | F77_dsyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); 67 | } else cblas_xerbla(1, "cblas_dsyr", "Illegal Order setting, %d\n", order); 68 | CBLAS_CallFromC = 0; 69 | RowMajorStrg = 0; 70 | return; 71 | } 72 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dsyr2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_dsyr2.c 4 | * This program is a C interface to dsyr2. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const double alpha, const double *X, 14 | const int incX, const double *Y, const int incY, double *A, 15 | const int lda) 16 | { 17 | char UL; 18 | #ifdef F77_CHAR 19 | F77_CHAR F77_UL; 20 | #else 21 | #define F77_UL &UL 22 | #endif 23 | 24 | #ifdef F77_INT 25 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY, F77__lda=lda; 26 | #else 27 | #define F77_N N 28 | #define F77_incX incX 29 | #define F77_incY incY 30 | #define F77_lda lda 31 | #endif 32 | 33 | extern int CBLAS_CallFromC; 34 | extern int RowMajorStrg; 35 | RowMajorStrg = 0; 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | if (Uplo == CblasLower) UL = 'L'; 40 | else if (Uplo == CblasUpper) UL = 'U'; 41 | else 42 | { 43 | cblas_xerbla(2, "cblas_dsyr2","Illegal Uplo setting, %d\n",Uplo ); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | #ifdef F77_CHAR 49 | F77_UL = C2F_CHAR(&UL); 50 | #endif 51 | 52 | F77_dsyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 53 | &F77_lda); 54 | 55 | } else if (order == CblasRowMajor) 56 | { 57 | RowMajorStrg = 1; 58 | if (Uplo == CblasLower) UL = 'U'; 59 | else if (Uplo == CblasUpper) UL = 'L'; 60 | else 61 | { 62 | cblas_xerbla(2, "cblas_dsyr2","Illegal Uplo setting, %d\n",Uplo ); 63 | CBLAS_CallFromC = 0; 64 | RowMajorStrg = 0; 65 | return; 66 | } 67 | #ifdef F77_CHAR 68 | F77_UL = C2F_CHAR(&UL); 69 | #endif 70 | F77_dsyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 71 | &F77_lda); 72 | } else cblas_xerbla(1, "cblas_dsyr2", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dzasum.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dzasum.c 3 | * 4 | * The program is a C interface to dzasum. 5 | * It calls the fortran wrapper before calling dzasum. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_dzasum( const int N, const void *X, const int incX) 13 | { 14 | double asum; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_dzasum_sub( &F77_N, X, &F77_incX, &asum); 22 | return asum; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_dznrm2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_dznrm2.c 3 | * 4 | * The program is a C interface to dznrm2. 5 | * It calls the fortran wrapper before calling dznrm2. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | double cblas_dznrm2( const int N, const void *X, const int incX) 13 | { 14 | double nrm2; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_dznrm2_sub( &F77_N, X, &F77_incX, &nrm2); 22 | return nrm2; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_globals.c: -------------------------------------------------------------------------------- 1 | int CBLAS_CallFromC=0; 2 | int RowMajorStrg=0; 3 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_icamax.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_icamax.c 3 | * 4 | * The program is a C interface to icamax. 5 | * It calls the fortran wrapper before calling icamax. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | CBLAS_INDEX cblas_icamax( const int N, const void *X, const int incX) 13 | { 14 | int iamax; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_icamax_sub( &F77_N, X, &F77_incX, &iamax); 22 | return iamax ? iamax-1 : 0; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_idamax.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_idamax.c 3 | * 4 | * The program is a C interface to idamax. 5 | * It calls the fortran wrapper before calling idamax. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | CBLAS_INDEX cblas_idamax( const int N, const double *X, const int incX) 13 | { 14 | int iamax; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_idamax_sub( &F77_N, X, &F77_incX, &iamax); 22 | return iamax ? iamax-1 : 0; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_isamax.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_isamax.c 3 | * 4 | * The program is a C interface to isamax. 5 | * It calls the fortran wrapper before calling isamax. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | CBLAS_INDEX cblas_isamax( const int N, const float *X, const int incX) 13 | { 14 | int iamax; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_isamax_sub( &F77_N, X, &F77_incX, &iamax); 22 | return iamax ? iamax-1 : 0; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_izamax.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_izamax.c 3 | * 4 | * The program is a C interface to izamax. 5 | * It calls the fortran wrapper before calling izamax. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | CBLAS_INDEX cblas_izamax( const int N, const void *X, const int incX) 13 | { 14 | int iamax; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_izamax_sub( &F77_N, X, &F77_incX, &iamax); 22 | return (iamax ? iamax-1 : 0); 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sasum.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_sasum.c 3 | * 4 | * The program is a C interface to sasum. 5 | * It calls the fortran wrapper before calling sasum. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_sasum( const int N, const float *X, const int incX) 13 | { 14 | float asum; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_sasum_sub( &F77_N, X, &F77_incX, &asum); 22 | return asum; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_saxpy.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_saxpy.c 3 | * 4 | * The program is a C interface to saxpy. 5 | * It calls the fortran wrapper before calling saxpy. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_saxpy( const int N, const float alpha, const float *X, 13 | const int incX, float *Y, const int incY) 14 | { 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #define F77_incY incY 21 | #endif 22 | F77_saxpy( &F77_N, &alpha, X, &F77_incX, Y, &F77_incY); 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_scasum.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_scasum.c 3 | * 4 | * The program is a C interface to scasum. 5 | * It calls the fortran wrapper before calling scasum. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_scasum( const int N, const void *X, const int incX) 13 | { 14 | float asum; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_scasum_sub( &F77_N, X, &F77_incX, &asum); 22 | return asum; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_scnrm2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_scnrm2.c 3 | * 4 | * The program is a C interface to scnrm2. 5 | * It calls the fortran wrapper before calling scnrm2. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_scnrm2( const int N, const void *X, const int incX) 13 | { 14 | float nrm2; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_scnrm2_sub( &F77_N, X, &F77_incX, &nrm2); 22 | return nrm2; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_scopy.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_scopy.c 3 | * 4 | * The program is a C interface to scopy. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_scopy( const int N, const float *X, 12 | const int incX, float *Y, const int incY) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_scopy( &F77_N, X, &F77_incX, Y, &F77_incY); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sdot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_sdot.c 3 | * 4 | * The program is a C interface to sdot. 5 | * It calls the fortran wrapper before calling sdot. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_sdot( const int N, const float *X, 13 | const int incX, const float *Y, const int incY) 14 | { 15 | float dot; 16 | #ifdef F77_INT 17 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_N N 20 | #define F77_incX incX 21 | #define F77_incY incY 22 | #endif 23 | F77_sdot_sub( &F77_N, X, &F77_incX, Y, &F77_incY, &dot); 24 | return dot; 25 | } 26 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sdsdot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_sdsdot.c 3 | * 4 | * The program is a C interface to sdsdot. 5 | * It calls the fortran wrapper before calling sdsdot. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_sdsdot( const int N, const float alpha, const float *X, 13 | const int incX, const float *Y, const int incY) 14 | { 15 | float dot; 16 | #ifdef F77_INT 17 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_N N 20 | #define F77_incX incX 21 | #define F77_incY incY 22 | #endif 23 | F77_sdsdot_sub( &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, &dot); 24 | return dot; 25 | } 26 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sger.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_sger.c 4 | * This program is a C interface to sger. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N, 13 | const float alpha, const float *X, const int incX, 14 | const float *Y, const int incY, float *A, const int lda) 15 | { 16 | #ifdef F77_INT 17 | F77_INT F77_M=M, F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY; 18 | #else 19 | #define F77_M M 20 | #define F77_N N 21 | #define F77_incX incX 22 | #define F77_incY incY 23 | #define F77_lda lda 24 | #endif 25 | 26 | extern int CBLAS_CallFromC; 27 | extern int RowMajorStrg; 28 | RowMajorStrg = 0; 29 | 30 | CBLAS_CallFromC = 1; 31 | if (order == CblasColMajor) 32 | { 33 | F77_sger( &F77_M, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 34 | &F77_lda); 35 | } 36 | else if (order == CblasRowMajor) 37 | { 38 | RowMajorStrg = 1; 39 | F77_sger( &F77_N, &F77_M, &alpha, Y, &F77_incY, X, &F77_incX, A, 40 | &F77_lda); 41 | } 42 | else cblas_xerbla(1, "cblas_sger", "Illegal Order setting, %d\n", order); 43 | CBLAS_CallFromC = 0; 44 | RowMajorStrg = 0; 45 | return; 46 | } 47 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_snrm2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_snrm2.c 3 | * 4 | * The program is a C interface to snrm2. 5 | * It calls the fortran wrapper before calling snrm2. 6 | * 7 | * Written by Keita Teranishi. 2/11/1998 8 | * 9 | */ 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | float cblas_snrm2( const int N, const float *X, const int incX) 13 | { 14 | float nrm2; 15 | #ifdef F77_INT 16 | F77_INT F77_N=N, F77_incX=incX; 17 | #else 18 | #define F77_N N 19 | #define F77_incX incX 20 | #endif 21 | F77_snrm2_sub( &F77_N, X, &F77_incX, &nrm2); 22 | return nrm2; 23 | } 24 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_srot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_srot.c 3 | * 4 | * The program is a C interface to srot. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_srot( const int N, float *X, const int incX, float *Y, 12 | const int incY, const float c, const float s) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_srot(&F77_N, X, &F77_incX, Y, &F77_incY, &c, &s); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_srotg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_srotg.c 3 | * 4 | * The program is a C interface to srotg. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_srotg( float *a, float *b, float *c, float *s) 12 | { 13 | F77_srotg(a,b,c,s); 14 | } 15 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_srotm.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_srotm.c 3 | * 4 | * The program is a C interface to srotm. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_srotm( const int N, float *X, const int incX, float *Y, 12 | const int incY, const float *P) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_srotm( &F77_N, X, &F77_incX, Y, &F77_incY, P); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_srotmg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_srotmg.c 3 | * 4 | * The program is a C interface to srotmg. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_srotmg( float *d1, float *d2, float *b1, 12 | const float b2, float *p) 13 | { 14 | F77_srotmg(d1,d2,b1,&b2,p); 15 | } 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_ssbmv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_ssbmv.c 4 | * This program is a C interface to ssbmv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 12 | const int N, const int K, const float alpha, const float *A, 13 | const int lda, const float *X, const int incX, 14 | const float beta, float *Y, const int incY) 15 | { 16 | char UL; 17 | #ifdef F77_CHAR 18 | F77_CHAR F77_UL; 19 | #else 20 | #define F77_UL &UL 21 | #endif 22 | 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_K=K, F77_lda=lda, F77_incX=incX, F77_incY=incY; 25 | #else 26 | #define F77_N N 27 | #define F77_K K 28 | #define F77_lda lda 29 | #define F77_incX incX 30 | #define F77_incY incY 31 | #endif 32 | extern int CBLAS_CallFromC; 33 | extern int RowMajorStrg; 34 | RowMajorStrg = 0; 35 | 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | 40 | if (Uplo == CblasUpper) UL = 'U'; 41 | else if (Uplo == CblasLower) UL = 'L'; 42 | else 43 | { 44 | cblas_xerbla(2, "cblas_ssbmv","Illegal Uplo setting, %d\n",Uplo ); 45 | CBLAS_CallFromC = 0; 46 | RowMajorStrg = 0; 47 | return; 48 | } 49 | #ifdef F77_CHAR 50 | F77_UL = C2F_CHAR(&UL); 51 | #endif 52 | F77_ssbmv(F77_UL, &F77_N, &F77_K, &alpha, A, &F77_lda, X, 53 | &F77_incX, &beta, Y, &F77_incY); 54 | }else if (order == CblasRowMajor) 55 | { 56 | RowMajorStrg = 1; 57 | if (Uplo == CblasUpper) UL = 'L'; 58 | else if (Uplo == CblasLower) UL = 'U'; 59 | else 60 | { 61 | cblas_xerbla(2, "cblas_ssbmv","Illegal Uplo setting, %d\n", Uplo); 62 | CBLAS_CallFromC = 0; 63 | RowMajorStrg = 0; 64 | return; 65 | } 66 | #ifdef F77_CHAR 67 | F77_UL = C2F_CHAR(&UL); 68 | #endif 69 | F77_ssbmv(F77_UL, &F77_N, &F77_K, &alpha, A, &F77_lda, X, 70 | &F77_incX, &beta, Y, &F77_incY); 71 | } 72 | else cblas_xerbla(1, "cblas_ssbmv", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sscal.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_sscal.c 3 | * 4 | * The program is a C interface to sscal. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_sscal( const int N, const float alpha, float *X, 12 | const int incX) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #endif 20 | F77_sscal( &F77_N, &alpha, X, &F77_incX); 21 | } 22 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sspmv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_sspmv.c 4 | * This program is a C interface to sspmv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_sspmv(const enum CBLAS_ORDER order, 12 | const enum CBLAS_UPLO Uplo, const int N, 13 | const float alpha, const float *AP, 14 | const float *X, const int incX, const float beta, 15 | float *Y, const int incY) 16 | { 17 | char UL; 18 | #ifdef F77_CHAR 19 | F77_CHAR F77_UL; 20 | #else 21 | #define F77_UL &UL 22 | #endif 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 25 | #else 26 | #define F77_N N 27 | #define F77_incX incX 28 | #define F77_incY incY 29 | #endif 30 | extern int CBLAS_CallFromC; 31 | extern int RowMajorStrg; 32 | RowMajorStrg = 0; 33 | 34 | CBLAS_CallFromC = 1; 35 | if (order == CblasColMajor) 36 | { 37 | if (Uplo == CblasUpper) UL = 'U'; 38 | else if (Uplo == CblasLower) UL = 'L'; 39 | else 40 | { 41 | cblas_xerbla(2, "cblas_sspmv","Illegal Uplo setting, %d\n",Uplo ); 42 | CBLAS_CallFromC = 0; 43 | RowMajorStrg = 0; 44 | return; 45 | } 46 | #ifdef F77_CHAR 47 | F77_UL = C2F_CHAR(&UL); 48 | #endif 49 | F77_sspmv(F77_UL, &F77_N, &alpha, AP, X, 50 | &F77_incX, &beta, Y, &F77_incY); 51 | } 52 | else if (order == CblasRowMajor) 53 | { 54 | RowMajorStrg = 1; 55 | if (Uplo == CblasUpper) UL = 'L'; 56 | else if (Uplo == CblasLower) UL = 'U'; 57 | else 58 | { 59 | cblas_xerbla(2, "cblas_sspmv","Illegal Uplo setting, %d\n", Uplo); 60 | CBLAS_CallFromC = 0; 61 | RowMajorStrg = 0; 62 | return; 63 | } 64 | #ifdef F77_CHAR 65 | F77_UL = C2F_CHAR(&UL); 66 | #endif 67 | F77_sspmv(F77_UL, &F77_N, &alpha, 68 | AP, X,&F77_incX, &beta, Y, &F77_incY); 69 | } 70 | else cblas_xerbla(1, "cblas_sspmv", "Illegal Order setting, %d\n", order); 71 | CBLAS_CallFromC = 0; 72 | RowMajorStrg = 0; 73 | } 74 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sspr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_sspr.c 4 | * This program is a C interface to sspr. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const float alpha, const float *X, 14 | const int incX, float *Ap) 15 | { 16 | char UL; 17 | #ifdef F77_CHAR 18 | F77_CHAR F77_UL; 19 | #else 20 | #define F77_UL &UL 21 | #endif 22 | 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_incX=incX; 25 | #else 26 | #define F77_N N 27 | #define F77_incX incX 28 | #endif 29 | 30 | extern int CBLAS_CallFromC; 31 | extern int RowMajorStrg; 32 | RowMajorStrg = 0; 33 | 34 | CBLAS_CallFromC = 1; 35 | if (order == CblasColMajor) 36 | { 37 | if (Uplo == CblasLower) UL = 'L'; 38 | else if (Uplo == CblasUpper) UL = 'U'; 39 | else 40 | { 41 | cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo ); 42 | CBLAS_CallFromC = 0; 43 | RowMajorStrg = 0; 44 | return; 45 | } 46 | #ifdef F77_CHAR 47 | F77_UL = C2F_CHAR(&UL); 48 | #endif 49 | 50 | F77_sspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); 51 | 52 | } else if (order == CblasRowMajor) 53 | { 54 | RowMajorStrg = 1; 55 | if (Uplo == CblasLower) UL = 'U'; 56 | else if (Uplo == CblasUpper) UL = 'L'; 57 | else 58 | { 59 | cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo ); 60 | CBLAS_CallFromC = 0; 61 | RowMajorStrg = 0; 62 | return; 63 | } 64 | #ifdef F77_CHAR 65 | F77_UL = C2F_CHAR(&UL); 66 | #endif 67 | F77_sspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); 68 | } else cblas_xerbla(1, "cblas_sspr", "Illegal Order setting, %d\n", order); 69 | CBLAS_CallFromC = 0; 70 | RowMajorStrg = 0; 71 | return; 72 | } 73 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sspr2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_sspr2.c 4 | * This program is a C interface to sspr2. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const float alpha, const float *X, 14 | const int incX, const float *Y, const int incY, float *A) 15 | { 16 | char UL; 17 | #ifdef F77_CHAR 18 | F77_CHAR F77_UL; 19 | #else 20 | #define F77_UL &UL 21 | #endif 22 | 23 | #ifdef F77_INT 24 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 25 | #else 26 | #define F77_N N 27 | #define F77_incX incX 28 | #define F77_incY incY 29 | #endif 30 | 31 | extern int CBLAS_CallFromC; 32 | extern int RowMajorStrg; 33 | RowMajorStrg = 0; 34 | CBLAS_CallFromC = 1; 35 | if (order == CblasColMajor) 36 | { 37 | if (Uplo == CblasLower) UL = 'L'; 38 | else if (Uplo == CblasUpper) UL = 'U'; 39 | else 40 | { 41 | cblas_xerbla(2, "cblas_sspr2","Illegal Uplo setting, %d\n",Uplo ); 42 | CBLAS_CallFromC = 0; 43 | RowMajorStrg = 0; 44 | return; 45 | } 46 | #ifdef F77_CHAR 47 | F77_UL = C2F_CHAR(&UL); 48 | #endif 49 | 50 | F77_sspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); 51 | 52 | } else if (order == CblasRowMajor) 53 | { 54 | RowMajorStrg = 1; 55 | if (Uplo == CblasLower) UL = 'U'; 56 | else if (Uplo == CblasUpper) UL = 'L'; 57 | else 58 | { 59 | cblas_xerbla(2, "cblas_sspr2","Illegal Uplo setting, %d\n",Uplo ); 60 | CBLAS_CallFromC = 0; 61 | RowMajorStrg = 0; 62 | return; 63 | } 64 | #ifdef F77_CHAR 65 | F77_UL = C2F_CHAR(&UL); 66 | #endif 67 | F77_sspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); 68 | } else cblas_xerbla(1, "cblas_sspr2", "Illegal Order setting, %d\n", order); 69 | CBLAS_CallFromC = 0; 70 | RowMajorStrg = 0; 71 | } 72 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_sswap.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cblas_sswap.c 3 | * 4 | * The program is a C interface to sswap. 5 | * 6 | * Written by Keita Teranishi. 2/11/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_sswap( const int N, float *X, const int incX, float *Y, 12 | const int incY) 13 | { 14 | #ifdef F77_INT 15 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY; 16 | #else 17 | #define F77_N N 18 | #define F77_incX incX 19 | #define F77_incY incY 20 | #endif 21 | F77_sswap( &F77_N, X, &F77_incX, Y, &F77_incY); 22 | } 23 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_ssymv.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_ssymv.c 4 | * This program is a C interface to ssymv. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_ssymv(const enum CBLAS_ORDER order, 13 | const enum CBLAS_UPLO Uplo, const int N, 14 | const float alpha, const float *A, const int lda, 15 | const float *X, const int incX, const float beta, 16 | float *Y, const int incY) 17 | { 18 | char UL; 19 | #ifdef F77_CHAR 20 | F77_CHAR F77_UL; 21 | #else 22 | #define F77_UL &UL 23 | #endif 24 | #ifdef F77_INT 25 | F77_INT F77_N=N, F77_lda=lda, F77_incX=incX, F77_incY=incY; 26 | #else 27 | #define F77_N N 28 | #define F77_lda lda 29 | #define F77_incX incX 30 | #define F77_incY incY 31 | #endif 32 | extern int CBLAS_CallFromC; 33 | extern int RowMajorStrg; 34 | RowMajorStrg = 0; 35 | 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | if (Uplo == CblasUpper) UL = 'U'; 40 | else if (Uplo == CblasLower) UL = 'L'; 41 | else 42 | { 43 | cblas_xerbla(2, "cblas_ssymv","Illegal Uplo setting, %d\n",Uplo ); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | #ifdef F77_CHAR 49 | F77_UL = C2F_CHAR(&UL); 50 | #endif 51 | F77_ssymv(F77_UL, &F77_N, &alpha, A, &F77_lda, X, 52 | &F77_incX, &beta, Y, &F77_incY); 53 | } 54 | else if (order == CblasRowMajor) 55 | { 56 | RowMajorStrg = 1; 57 | if (Uplo == CblasUpper) UL = 'L'; 58 | else if (Uplo == CblasLower) UL = 'U'; 59 | else 60 | { 61 | cblas_xerbla(2, "cblas_ssymv","Illegal Uplo setting, %d\n", Uplo); 62 | CBLAS_CallFromC = 0; 63 | RowMajorStrg = 0; 64 | return; 65 | } 66 | #ifdef F77_CHAR 67 | F77_UL = C2F_CHAR(&UL); 68 | #endif 69 | F77_ssymv(F77_UL, &F77_N, &alpha, 70 | A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); 71 | } 72 | else cblas_xerbla(1, "cblas_ssymv", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_ssyr.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_ssyr.c 4 | * This program is a C interface to ssyr. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | #include "cblas.h" 10 | #include "cblas_f77.h" 11 | void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 12 | const int N, const float alpha, const float *X, 13 | const int incX, float *A, const int lda) 14 | { 15 | char UL; 16 | #ifdef F77_CHAR 17 | F77_CHAR F77_UL; 18 | #else 19 | #define F77_UL &UL 20 | #endif 21 | 22 | #ifdef F77_INT 23 | F77_INT F77_N=N, F77_incX=incX, F77_lda=lda; 24 | #else 25 | #define F77_N N 26 | #define F77_incX incX 27 | #define F77_lda lda 28 | #endif 29 | extern int CBLAS_CallFromC; 30 | extern int RowMajorStrg; 31 | RowMajorStrg = 0; 32 | CBLAS_CallFromC = 1; 33 | if (order == CblasColMajor) 34 | { 35 | if (Uplo == CblasLower) UL = 'L'; 36 | else if (Uplo == CblasUpper) UL = 'U'; 37 | else 38 | { 39 | cblas_xerbla(2, "cblas_ssyr","Illegal Uplo setting, %d\n",Uplo ); 40 | CBLAS_CallFromC = 0; 41 | RowMajorStrg = 0; 42 | return; 43 | } 44 | #ifdef F77_CHAR 45 | F77_UL = C2F_CHAR(&UL); 46 | #endif 47 | 48 | F77_ssyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); 49 | 50 | } else if (order == CblasRowMajor) 51 | { 52 | RowMajorStrg = 1; 53 | if (Uplo == CblasLower) UL = 'U'; 54 | else if (Uplo == CblasUpper) UL = 'L'; 55 | else 56 | { 57 | cblas_xerbla(2, "cblas_ssyr","Illegal Uplo setting, %d\n",Uplo ); 58 | CBLAS_CallFromC = 0; 59 | RowMajorStrg = 0; 60 | return; 61 | } 62 | #ifdef F77_CHAR 63 | F77_UL = C2F_CHAR(&UL); 64 | #endif 65 | F77_ssyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); 66 | } else cblas_xerbla(1, "cblas_ssyr", "Illegal Order setting, %d\n", order); 67 | CBLAS_CallFromC = 0; 68 | RowMajorStrg = 0; 69 | return; 70 | } 71 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_ssyr2.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * cblas_ssyr2.c 4 | * This program is a C interface to ssyr2. 5 | * Written by Keita Teranishi 6 | * 4/6/1998 7 | * 8 | */ 9 | 10 | #include "cblas.h" 11 | #include "cblas_f77.h" 12 | void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 13 | const int N, const float alpha, const float *X, 14 | const int incX, const float *Y, const int incY, float *A, 15 | const int lda) 16 | { 17 | char UL; 18 | #ifdef F77_CHAR 19 | F77_CHAR F77_UL; 20 | #else 21 | #define F77_UL &UL 22 | #endif 23 | 24 | #ifdef F77_INT 25 | F77_INT F77_N=N, F77_incX=incX, F77_incY=incY, F77__lda=lda; 26 | #else 27 | #define F77_N N 28 | #define F77_incX incX 29 | #define F77_incY incY 30 | #define F77_lda lda 31 | #endif 32 | 33 | extern int CBLAS_CallFromC; 34 | extern int RowMajorStrg; 35 | RowMajorStrg = 0; 36 | CBLAS_CallFromC = 1; 37 | if (order == CblasColMajor) 38 | { 39 | if (Uplo == CblasLower) UL = 'L'; 40 | else if (Uplo == CblasUpper) UL = 'U'; 41 | else 42 | { 43 | cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo ); 44 | CBLAS_CallFromC = 0; 45 | RowMajorStrg = 0; 46 | return; 47 | } 48 | #ifdef F77_CHAR 49 | F77_UL = C2F_CHAR(&UL); 50 | #endif 51 | 52 | F77_ssyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 53 | &F77_lda); 54 | 55 | } else if (order == CblasRowMajor) 56 | { 57 | RowMajorStrg = 1; 58 | if (Uplo == CblasLower) UL = 'U'; 59 | else if (Uplo == CblasUpper) UL = 'L'; 60 | else 61 | { 62 | cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo ); 63 | CBLAS_CallFromC = 0; 64 | RowMajorStrg = 0; 65 | return; 66 | } 67 | #ifdef F77_CHAR 68 | F77_UL = C2F_CHAR(&UL); 69 | #endif 70 | F77_ssyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, 71 | &F77_lda); 72 | } else cblas_xerbla(1, "cblas_ssyr2", "Illegal Order setting, %d\n", order); 73 | CBLAS_CallFromC = 0; 74 | RowMajorStrg = 0; 75 | return; 76 | } 77 | -------------------------------------------------------------------------------- /netlib/CBLAS/cblas_xerbla.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include "cblas.h" 6 | #include "cblas_f77.h" 7 | 8 | void cblas_xerbla(int info, const char *rout, const char *form, ...) 9 | { 10 | extern int RowMajorStrg; 11 | char empty[1] = ""; 12 | va_list argptr; 13 | 14 | va_start(argptr, form); 15 | 16 | if (RowMajorStrg) 17 | { 18 | if (strstr(rout,"gemm") != 0) 19 | { 20 | if (info == 5 ) info = 4; 21 | else if (info == 4 ) info = 5; 22 | else if (info == 11) info = 9; 23 | else if (info == 9 ) info = 11; 24 | } 25 | else if (strstr(rout,"symm") != 0 || strstr(rout,"hemm") != 0) 26 | { 27 | if (info == 5 ) info = 4; 28 | else if (info == 4 ) info = 5; 29 | } 30 | else if (strstr(rout,"trmm") != 0 || strstr(rout,"trsm") != 0) 31 | { 32 | if (info == 7 ) info = 6; 33 | else if (info == 6 ) info = 7; 34 | } 35 | else if (strstr(rout,"gemv") != 0) 36 | { 37 | if (info == 4) info = 3; 38 | else if (info == 3) info = 4; 39 | } 40 | else if (strstr(rout,"gbmv") != 0) 41 | { 42 | if (info == 4) info = 3; 43 | else if (info == 3) info = 4; 44 | else if (info == 6) info = 5; 45 | else if (info == 5) info = 6; 46 | } 47 | else if (strstr(rout,"ger") != 0) 48 | { 49 | if (info == 3) info = 2; 50 | else if (info == 2) info = 3; 51 | else if (info == 8) info = 6; 52 | else if (info == 6) info = 8; 53 | } 54 | else if ( (strstr(rout,"her2") != 0 || strstr(rout,"hpr2") != 0) 55 | && strstr(rout,"her2k") == 0 ) 56 | { 57 | if (info == 8) info = 6; 58 | else if (info == 6) info = 8; 59 | } 60 | } 61 | if (info) 62 | fprintf(stderr, "Parameter %d to routine %s was incorrect\n", info, rout); 63 | vfprintf(stderr, form, argptr); 64 | va_end(argptr); 65 | if (info && !info) 66 | F77_xerbla(empty, &info); /* Force link of our F77 error handler */ 67 | exit(-1); 68 | } 69 | -------------------------------------------------------------------------------- /netlib/CBLAS/dasumsub.f: -------------------------------------------------------------------------------- 1 | c dasumsun.f 2 | c 3 | c The program is a fortran wrapper for dasum.. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine dasumsub(n,x,incx,asum) 7 | c 8 | external dasum 9 | double precision dasum,asum 10 | integer n,incx 11 | double precision x(*) 12 | c 13 | asum=dasum(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/ddotsub.f: -------------------------------------------------------------------------------- 1 | c ddotsub.f 2 | c 3 | c The program is a fortran wrapper for ddot. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine ddotsub(n,x,incx,y,incy,dot) 7 | c 8 | external ddot 9 | double precision ddot 10 | integer n,incx,incy 11 | double precision x(*),y(*),dot 12 | c 13 | dot=ddot(n,x,incx,y,incy) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/dnrm2sub.f: -------------------------------------------------------------------------------- 1 | c dnrm2sub.f 2 | c 3 | c The program is a fortran wrapper for dnrm2. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine dnrm2sub(n,x,incx,nrm2) 7 | c 8 | external dnrm2 9 | double precision dnrm2,nrm2 10 | integer n,incx 11 | double precision x(*) 12 | c 13 | nrm2=dnrm2(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/dsdotsub.f: -------------------------------------------------------------------------------- 1 | c dsdotsub.f 2 | c 3 | c The program is a fortran wrapper for dsdot. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine dsdotsub(n,x,incx,y,incy,dot) 7 | c 8 | external dsdot 9 | double precision dsdot,dot 10 | integer n,incx,incy 11 | real x(*),y(*) 12 | c 13 | dot=dsdot(n,x,incx,y,incy) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/dzasumsub.f: -------------------------------------------------------------------------------- 1 | c dzasumsub.f 2 | c 3 | c The program is a fortran wrapper for dzasum. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine dzasumsub(n,x,incx,asum) 7 | c 8 | external dzasum 9 | double precision dzasum,asum 10 | integer n,incx 11 | double complex x(*) 12 | c 13 | asum=dzasum(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/dznrm2sub.f: -------------------------------------------------------------------------------- 1 | c dznrm2sub.f 2 | c 3 | c The program is a fortran wrapper for dznrm2. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine dznrm2sub(n,x,incx,nrm2) 7 | c 8 | external dznrm2 9 | double precision dznrm2,nrm2 10 | integer n,incx 11 | double complex x(*) 12 | c 13 | nrm2=dznrm2(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/icamaxsub.f: -------------------------------------------------------------------------------- 1 | c icamaxsub.f 2 | c 3 | c The program is a fortran wrapper for icamax. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine icamaxsub(n,x,incx,iamax) 7 | c 8 | external icamax 9 | integer icamax,iamax 10 | integer n,incx 11 | complex x(*) 12 | c 13 | iamax=icamax(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/idamaxsub.f: -------------------------------------------------------------------------------- 1 | c icamaxsub.f 2 | c 3 | c The program is a fortran wrapper for idamax. 4 | c Witten by Keita Teranishi. 2/22/1998 5 | c 6 | subroutine idamaxsub(n,x,incx,iamax) 7 | c 8 | external idamax 9 | integer idamax,iamax 10 | integer n,incx 11 | double precision x(*) 12 | c 13 | iamax=idamax(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/isamaxsub.f: -------------------------------------------------------------------------------- 1 | c isamaxsub.f 2 | c 3 | c The program is a fortran wrapper for isamax. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine isamaxsub(n,x,incx,iamax) 7 | c 8 | external isamax 9 | integer isamax,iamax 10 | integer n,incx 11 | real x(*) 12 | c 13 | iamax=isamax(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/izamaxsub.f: -------------------------------------------------------------------------------- 1 | c izamaxsub.f 2 | c 3 | c The program is a fortran wrapper for izamax. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine izamaxsub(n,x,incx,iamax) 7 | c 8 | external izamax 9 | integer izamax,iamax 10 | integer n,incx 11 | double complex x(*) 12 | c 13 | iamax=izamax(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/sasumsub.f: -------------------------------------------------------------------------------- 1 | c sasumsub.f 2 | c 3 | c The program is a fortran wrapper for sasum. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine sasumsub(n,x,incx,asum) 7 | c 8 | external sasum 9 | real sasum,asum 10 | integer n,incx 11 | real x(*) 12 | c 13 | asum=sasum(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/scasumsub.f: -------------------------------------------------------------------------------- 1 | c scasumsub.f 2 | c 3 | c The program is a fortran wrapper for scasum. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine scasumsub(n,x,incx,asum) 7 | c 8 | external scasum 9 | real scasum,asum 10 | integer n,incx 11 | complex x(*) 12 | c 13 | asum=scasum(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/scnrm2sub.f: -------------------------------------------------------------------------------- 1 | c scnrm2sub.f 2 | c 3 | c The program is a fortran wrapper for scnrm2. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine scnrm2sub(n,x,incx,nrm2) 7 | c 8 | external scnrm2 9 | real scnrm2,nrm2 10 | integer n,incx 11 | complex x(*) 12 | c 13 | nrm2=scnrm2(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/sdotsub.f: -------------------------------------------------------------------------------- 1 | c sdotsub.f 2 | c 3 | c The program is a fortran wrapper for sdot. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine sdotsub(n,x,incx,y,incy,dot) 7 | c 8 | external sdot 9 | real sdot 10 | integer n,incx,incy 11 | real x(*),y(*),dot 12 | c 13 | dot=sdot(n,x,incx,y,incy) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/sdsdotsub.f: -------------------------------------------------------------------------------- 1 | c sdsdotsub.f 2 | c 3 | c The program is a fortran wrapper for sdsdot. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine sdsdotsub(n,x,incx,y,incy,dot) 7 | c 8 | external sdsdot 9 | real sdsdot,dot 10 | integer n,incx,incy 11 | real x(*),y(*) 12 | c 13 | dot=sdsdot(n,x,incx,y,incy) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/CBLAS/snrm2sub.f: -------------------------------------------------------------------------------- 1 | c snrm2sub.f 2 | c 3 | c The program is a fortran wrapper for snrm2. 4 | c Witten by Keita Teranishi. 2/11/1998 5 | c 6 | subroutine snrm2sub(n,x,incx,nrm2) 7 | c 8 | external snrm2 9 | real snrm2,nrm2 10 | integer n,incx 11 | real x(*) 12 | c 13 | nrm2=snrm2(n,x,incx) 14 | return 15 | end 16 | -------------------------------------------------------------------------------- /netlib/JNI/netlib-jni.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | typedef jobject jfloatw; 5 | typedef jobject jdoublew; 6 | typedef jobject jintw; 7 | typedef jobject jstringw; 8 | typedef jobject jbooleanw; 9 | 10 | 11 | // convenience methods for dealing with the CBLAS (not BLAS) specific enums 12 | // our API is using the Fortran-style char* system. 13 | enum CBLAS_TRANSPOSE getCblasTrans(const char *); 14 | enum CBLAS_UPLO getCblasUpLo(const char *); 15 | enum CBLAS_SIDE getCblasSide(const char *); 16 | enum CBLAS_DIAG getCblasDiag(const char *); 17 | 18 | 19 | /* Convenience for checking if we ran out of memory */ 20 | void check_memory(JNIEnv *, void *); 21 | 22 | 23 | /* Convenience for converting between jboolean (Java Boolean) and int (Fortran LOGICAL). */ 24 | int jboolean2int(jboolean b); 25 | jboolean int2jboolean(int i); 26 | int* jbooleanArray2intArray(JNIEnv * env, jboolean * a, jint size); 27 | void intArray2jbooleanArray(int * a, jboolean * b, jint size); 28 | -------------------------------------------------------------------------------- /netlib/LAPACK/VARIANTS/qr/LL/sceil.f: -------------------------------------------------------------------------------- 1 | C> \brief \b SCEIL 2 | * 3 | * =========== DOCUMENTATION =========== 4 | * 5 | * Online html documentation available at 6 | * http://www.netlib.org/lapack/explore-html/ 7 | * 8 | * Definition: 9 | * =========== 10 | * 11 | * REAL FUNCTION SCEIL( A ) 12 | * 13 | * .. Scalar Arguments .. 14 | * REAL A 15 | * .. 16 | * 17 | * ===================================================================== 18 | * 19 | * .. Intrinsic Functions .. 20 | * INTRINSIC INT 21 | * .. 22 | * .. Executable Statements ..* 23 | * 24 | * IF (A-INT(A).EQ.0) THEN 25 | * SCEIL = A 26 | * ELSE IF (A.GT.0) THEN 27 | * SCEIL = INT(A)+1; 28 | * ELSE 29 | * SCEIL = INT(A) 30 | * END IF 31 | * 32 | * RETURN 33 | * 34 | * END 35 | * Purpose 36 | * ======= 37 | * 38 | C>\details \b Purpose: 39 | C>\verbatim 40 | C>\endverbatim 41 | * 42 | * Arguments: 43 | * ========== 44 | * 45 | * 46 | * Authors: 47 | * ======== 48 | * 49 | C> \author Univ. of Tennessee 50 | C> \author Univ. of California Berkeley 51 | C> \author Univ. of Colorado Denver 52 | C> \author NAG Ltd. 53 | * 54 | C> \date November 2011 55 | * 56 | C> \ingroup variantsOTHERcomputational 57 | * 58 | * ===================================================================== 59 | REAL FUNCTION SCEIL( A ) 60 | * 61 | * -- LAPACK computational routine (version 3.1) -- 62 | * -- LAPACK is a software package provided by Univ. of Tennessee, -- 63 | * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 64 | * November 2011 65 | * 66 | * .. Scalar Arguments ..* 67 | REAL A 68 | * .. 69 | * 70 | * ===================================================================== 71 | * 72 | * .. Intrinsic Functions .. 73 | INTRINSIC INT 74 | * .. 75 | * .. Executable Statements ..* 76 | * 77 | IF (A-INT(A).EQ.0) THEN 78 | SCEIL = A 79 | ELSE IF (A.GT.0) THEN 80 | SCEIL = INT(A)+1; 81 | ELSE 82 | SCEIL = INT(A) 83 | END IF 84 | 85 | RETURN 86 | * 87 | END 88 | -------------------------------------------------------------------------------- /netlib/LAPACK/disnan.f: -------------------------------------------------------------------------------- 1 | *> \brief \b DISNAN tests input for NaN. 2 | * 3 | * =========== DOCUMENTATION =========== 4 | * 5 | * Online html documentation available at 6 | * http://www.netlib.org/lapack/explore-html/ 7 | * 8 | *> \htmlonly 9 | *> Download DISNAN + dependencies 10 | *> 11 | *> [TGZ] 12 | *> 13 | *> [ZIP] 14 | *> 15 | *> [TXT] 16 | *> \endhtmlonly 17 | * 18 | * Definition: 19 | * =========== 20 | * 21 | * LOGICAL FUNCTION DISNAN( DIN ) 22 | * 23 | * .. Scalar Arguments .. 24 | * DOUBLE PRECISION DIN 25 | * .. 26 | * 27 | * 28 | *> \par Purpose: 29 | * ============= 30 | *> 31 | *> \verbatim 32 | *> 33 | *> DISNAN returns .TRUE. if its argument is NaN, and .FALSE. 34 | *> otherwise. To be replaced by the Fortran 2003 intrinsic in the 35 | *> future. 36 | *> \endverbatim 37 | * 38 | * Arguments: 39 | * ========== 40 | * 41 | *> \param[in] DIN 42 | *> \verbatim 43 | *> DIN is DOUBLE PRECISION 44 | *> Input to test for NaN. 45 | *> \endverbatim 46 | * 47 | * Authors: 48 | * ======== 49 | * 50 | *> \author Univ. of Tennessee 51 | *> \author Univ. of California Berkeley 52 | *> \author Univ. of Colorado Denver 53 | *> \author NAG Ltd. 54 | * 55 | *> \date September 2012 56 | * 57 | *> \ingroup auxOTHERauxiliary 58 | * 59 | * ===================================================================== 60 | LOGICAL FUNCTION DISNAN( DIN ) 61 | * 62 | * -- LAPACK auxiliary routine (version 3.4.2) -- 63 | * -- LAPACK is a software package provided by Univ. of Tennessee, -- 64 | * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 65 | * September 2012 66 | * 67 | * .. Scalar Arguments .. 68 | DOUBLE PRECISION DIN 69 | * .. 70 | * 71 | * ===================================================================== 72 | * 73 | * .. External Functions .. 74 | LOGICAL DLAISNAN 75 | EXTERNAL DLAISNAN 76 | * .. 77 | * .. Executable Statements .. 78 | DISNAN = DLAISNAN(DIN,DIN) 79 | RETURN 80 | END 81 | -------------------------------------------------------------------------------- /netlib/LAPACK/ilaver.f: -------------------------------------------------------------------------------- 1 | *> \brief \b ILAVER returns the LAPACK version. 2 | ** 3 | * =========== DOCUMENTATION =========== 4 | * 5 | * Online html documentation available at 6 | * http://www.netlib.org/lapack/explore-html/ 7 | * 8 | * Definition: 9 | * =========== 10 | * 11 | * SUBROUTINE ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH ) 12 | * 13 | * INTEGER VERS_MAJOR, VERS_MINOR, VERS_PATCH 14 | * 15 | * 16 | *> \par Purpose: 17 | * ============= 18 | *> 19 | *> \verbatim 20 | *> 21 | *> This subroutine returns the LAPACK version. 22 | *> \endverbatim 23 | * 24 | * Arguments: 25 | * ========== 26 | * 27 | *> \param[out] VERS_MAJOR 28 | *> return the lapack major version 29 | *> 30 | *> \param[out] VERS_MINOR 31 | *> return the lapack minor version from the major version 32 | *> 33 | *> \param[out] VERS_PATCH 34 | *> return the lapack patch version from the minor version 35 | * 36 | * Authors: 37 | * ======== 38 | * 39 | *> \author Univ. of Tennessee 40 | *> \author Univ. of California Berkeley 41 | *> \author Univ. of Colorado Denver 42 | *> \author NAG Ltd. 43 | * 44 | *> \date September 2012 45 | * 46 | *> \ingroup auxOTHERauxiliary 47 | * 48 | * ===================================================================== 49 | SUBROUTINE ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH ) 50 | * 51 | * -- LAPACK computational routine (version 3.4.2) -- 52 | * -- LAPACK is a software package provided by Univ. of Tennessee, -- 53 | * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 54 | * September 2012 55 | * 56 | * ===================================================================== 57 | * 58 | INTEGER VERS_MAJOR, VERS_MINOR, VERS_PATCH 59 | * ===================================================================== 60 | VERS_MAJOR = 3 61 | VERS_MINOR = 4 62 | VERS_PATCH = 2 63 | * ===================================================================== 64 | * 65 | RETURN 66 | END 67 | -------------------------------------------------------------------------------- /netlib/LAPACK/sisnan.f: -------------------------------------------------------------------------------- 1 | *> \brief \b SISNAN tests input for NaN. 2 | * 3 | * =========== DOCUMENTATION =========== 4 | * 5 | * Online html documentation available at 6 | * http://www.netlib.org/lapack/explore-html/ 7 | * 8 | *> \htmlonly 9 | *> Download SISNAN + dependencies 10 | *> 11 | *> [TGZ] 12 | *> 13 | *> [ZIP] 14 | *> 15 | *> [TXT] 16 | *> \endhtmlonly 17 | * 18 | * Definition: 19 | * =========== 20 | * 21 | * LOGICAL FUNCTION SISNAN( SIN ) 22 | * 23 | * .. Scalar Arguments .. 24 | * REAL SIN 25 | * .. 26 | * 27 | * 28 | *> \par Purpose: 29 | * ============= 30 | *> 31 | *> \verbatim 32 | *> 33 | *> SISNAN returns .TRUE. if its argument is NaN, and .FALSE. 34 | *> otherwise. To be replaced by the Fortran 2003 intrinsic in the 35 | *> future. 36 | *> \endverbatim 37 | * 38 | * Arguments: 39 | * ========== 40 | * 41 | *> \param[in] SIN 42 | *> \verbatim 43 | *> SIN is REAL 44 | *> Input to test for NaN. 45 | *> \endverbatim 46 | * 47 | * Authors: 48 | * ======== 49 | * 50 | *> \author Univ. of Tennessee 51 | *> \author Univ. of California Berkeley 52 | *> \author Univ. of Colorado Denver 53 | *> \author NAG Ltd. 54 | * 55 | *> \date September 2012 56 | * 57 | *> \ingroup auxOTHERauxiliary 58 | * 59 | * ===================================================================== 60 | LOGICAL FUNCTION SISNAN( SIN ) 61 | * 62 | * -- LAPACK auxiliary routine (version 3.4.2) -- 63 | * -- LAPACK is a software package provided by Univ. of Tennessee, -- 64 | * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 65 | * September 2012 66 | * 67 | * .. Scalar Arguments .. 68 | REAL SIN 69 | * .. 70 | * 71 | * ===================================================================== 72 | * 73 | * .. External Functions .. 74 | LOGICAL SLAISNAN 75 | EXTERNAL SLAISNAN 76 | * .. 77 | * .. Executable Statements .. 78 | SISNAN = SLAISNAN(SIN,SIN) 79 | RETURN 80 | END 81 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlamch.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native high-level C interface to LAPACK function dlamch 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | double LAPACKE_dlamch( char cmach ) 37 | { 38 | return LAPACKE_dlamch_work( cmach ); 39 | } 40 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlamch_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dlamch 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | double LAPACKE_dlamch_work( char cmach ) 37 | { 38 | lapack_int info = 0; 39 | double res; 40 | /* Call LAPACK function and adjust info */ 41 | res = LAPACK_dlamch( &cmach ); 42 | return res; 43 | } 44 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlapy2_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dlapy2 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | double LAPACKE_dlapy2_work( double x, double y ) 37 | { 38 | double res = 0.; 39 | /* Call LAPACK function and adjust info */ 40 | res = LAPACK_dlapy2( &x, &y ); 41 | return res; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlapy3_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dlapy3 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | double LAPACKE_dlapy3_work( double x, double y, double z ) 37 | { 38 | double res = 0.; 39 | /* Call LAPACK function and adjust info */ 40 | res = LAPACK_dlapy3( &x, &y, &z ); 41 | return res; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlarnv.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native high-level C interface to LAPACK function dlarnv 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_dlarnv( lapack_int idist, lapack_int* iseed, lapack_int n, 37 | double* x ) 38 | { 39 | return LAPACKE_dlarnv_work( idist, iseed, n, x ); 40 | } 41 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dlasrt_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dlasrt 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_dlasrt_work( char id, lapack_int n, double* d ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_dlasrt( &id, &n, d, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dpttrf_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dpttrf 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_dpttrf_work( lapack_int n, double* d, double* e ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_dpttrf( &n, d, e, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_dsterf_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function dsterf 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_dsterf_work( lapack_int n, double* d, double* e ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_dsterf( &n, d, e, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_lsame.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2010, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ****************************************************************************** 29 | * Contents: Native C interface to LAPACK lsame 30 | * Author: Intel Corporation 31 | * Created in January, 2010 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_logical LAPACKE_lsame( char ca, char cb ) 37 | { 38 | return (lapack_logical) LAPACK_lsame( &ca, &cb, 1, 1 ); 39 | } 40 | 41 | 42 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_mangling.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_mangling_with_flags.h: -------------------------------------------------------------------------------- 1 | #ifndef LAPACK_HEADER_INCLUDED 2 | #define LAPACK_HEADER_INCLUDED 3 | 4 | #ifndef LAPACK_GLOBAL 5 | #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) 6 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 7 | #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) 8 | #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME 9 | #elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE) 10 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname 11 | #else 12 | #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ 13 | #endif 14 | #endif 15 | 16 | #endif 17 | 18 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slamch.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native high-level C interface to LAPACK function slamch 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | float LAPACKE_slamch( char cmach ) 37 | { 38 | return LAPACKE_slamch_work( cmach ); 39 | } 40 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slamch_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function slamch 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | float LAPACKE_slamch_work( char cmach ) 37 | { 38 | lapack_int info = 0; 39 | float res; 40 | /* Call LAPACK function and adjust info */ 41 | res = LAPACK_slamch( &cmach ); 42 | return res; 43 | } 44 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slapy2_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function slapy2 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | float LAPACKE_slapy2_work( float x, float y ) 37 | { 38 | float res = 0.; 39 | /* Call LAPACK function and adjust info */ 40 | res = LAPACK_slapy2( &x, &y ); 41 | return res; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slapy3_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function slapy3 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | float LAPACKE_slapy3_work( float x, float y, float z ) 37 | { 38 | float res = 0.; 39 | /* Call LAPACK function and adjust info */ 40 | res = LAPACK_slapy3( &x, &y, &z ); 41 | return res; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slarnv.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native high-level C interface to LAPACK function slarnv 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_slarnv( lapack_int idist, lapack_int* iseed, lapack_int n, 37 | float* x ) 38 | { 39 | return LAPACKE_slarnv_work( idist, iseed, n, x ); 40 | } 41 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_slasrt_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function slasrt 30 | * Author: Intel Corporation 31 | * Generated May, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_slasrt_work( char id, lapack_int n, float* d ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_slasrt( &id, &n, d, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_spttrf_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function spttrf 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_spttrf_work( lapack_int n, float* d, float* e ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_spttrf( &n, d, e, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/LAPACKE/lapacke_ssterf_work.c: -------------------------------------------------------------------------------- 1 | /***************************************************************************** 2 | Copyright (c) 2011, Intel Corp. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Intel Corporation nor the names of its contributors 14 | may be used to endorse or promote products derived from this software 15 | without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27 | THE POSSIBILITY OF SUCH DAMAGE. 28 | ***************************************************************************** 29 | * Contents: Native middle-level C interface to LAPACK function ssterf 30 | * Author: Intel Corporation 31 | * Generated November, 2011 32 | *****************************************************************************/ 33 | 34 | #include "lapacke_utils.h" 35 | 36 | lapack_int LAPACKE_ssterf_work( lapack_int n, float* d, float* e ) 37 | { 38 | lapack_int info = 0; 39 | /* Call LAPACK function and adjust info */ 40 | LAPACK_ssterf( &n, d, e, &info ); 41 | return info; 42 | } 43 | -------------------------------------------------------------------------------- /netlib/README: -------------------------------------------------------------------------------- 1 | This folder contains the netlib reference implementations. 2 | 3 | The netlib API is a Fortran API. The recommended C interface is via 4 | the CBLAS wrapper (for BLAS) and the LAPACKE wrapper (for LAPACK). 5 | 6 | netlib-java uses the C interface for native calls. 7 | 8 | Note that the CLAPACK effort is a translation of the Fortran codes into C 9 | and is therefore not as performant as the original Fortran codes - we 10 | do not use CLAPACK. 11 | 12 | There is no official C interface to ARPACK: 13 | [ARPACK-1287](http://forge.scilab.org/index.php/p/arpack-ng/issues/1287/). 14 | 15 | Files extracted from: 16 | 17 | http://www.netlib.org/blas/blas.tgz 18 | http://www.netlib.org/blas/blast-forum/cblas.tgz 19 | 20 | http://www.netlib.org/lapack/lapack-3.4.2.tgz (from various folders) 21 | http://www.netlib.org/lapack/lapacke_mangling.h (missing file) 22 | 23 | http://forge.scilab.org/index.php/p/arpack-ng/downloads/607/ 24 | http://www.caam.rice.edu/software/ARPACK/ARPACK++/arpack++.tar.gz (modified arpack.h) 25 | 26 | Complex and double complex routines are not included because they are not 27 | supported by netlib-java. 28 | 29 | The following files have been removed because they don't compile: 30 | 31 | BLAS/xerbla.c 32 | LAPACK/xerbla.f 33 | LAPACK/*_extended.f 34 | LAPACK/{d,s}{gb,ge,po,sy}{rfs,svx}x.f 35 | LAPACKE/lapacke_{d,s}{gb,ge,po,sy}{rfs,svx}x{_work,}.c 36 | 37 | 38 | LAPACK ships with a bundled version of BLAS, but we use the original BLAS. 39 | Likewise for ARPACK and BLAS/LAPACK. 40 | -------------------------------------------------------------------------------- /netlib/symbol.map: -------------------------------------------------------------------------------- 1 | { global: Java_*; _Java_*; local: *; }; -------------------------------------------------------------------------------- /perf/logging.properties: -------------------------------------------------------------------------------- 1 | handlers = java.util.logging.ConsoleHandler 2 | java.util.logging.ConsoleHandler.level = ALL 3 | java.util.logging.ConsoleHandler.formatter = com.github.fommil.logging.CustomFormatter 4 | com.github.fommil.logging.CustomFormatter.format = %L: %m [%c] (%n) %e %E %S 5 | com.github.fommil.logging.CustomFormatter.stackExclude = \ 6 | org.jetbrains. com.intellij java. sun. com.sun 7 | 8 | com.github.fommil.level = ALL 9 | .level = WARNING 10 | -------------------------------------------------------------------------------- /perf/results/linux-arm-avian-ddot-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-avian-ddot-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-avian-dgemm-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-avian-dgemm-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-avian-dgetri-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-avian-dgetri-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-avian-linpack-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-avian-linpack-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-ddot-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-ddot-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-ddot-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-ddot-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-ddot-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-ddot-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-ddot-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-ddot-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgemm-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgemm-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgemm-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgemm-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgemm-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgemm-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgemm-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgemm-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgetri-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgetri-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgetri-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgetri-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgetri-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgetri-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-dgetri-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-dgetri-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jamvm-ddot-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jamvm-ddot-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jamvm-dgemm-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jamvm-dgemm-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jamvm-dgetri-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jamvm-dgetri-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jamvm-linpack-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jamvm-linpack-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk7-ddot-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk7-ddot-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk7-dgemm-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk7-dgemm-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk7-dgetri-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk7-dgetri-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk7-linpack-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk7-linpack-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk8-ddot-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk8-ddot-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk8-dgemm-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk8-dgemm-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk8-dgetri-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk8-dgetri-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-jdk8-linpack-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-jdk8-linpack-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-linpack-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-linpack-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/linux-arm-linpack-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/linux-arm-linpack-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-cuda.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-cuda.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-cuda_nooh.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-cuda_nooh.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-mkl.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-mkl.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-ddot-veclib.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-ddot-veclib.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-cuda.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-cuda.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-cuda_nooh.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-cuda_nooh.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-mkl.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-mkl.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgemm-veclib.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgemm-veclib.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-CBLAS.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-CBLAS.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-atlas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-atlas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-mkl.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-mkl.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dgetri-veclib.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dgetri-veclib.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dsaupd-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dsaupd-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dsaupd-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dsaupd-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-dsaupd-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-dsaupd-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-linpack-f2jblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-linpack-f2jblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-linpack-nativerefblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-linpack-nativerefblas.csv.gz -------------------------------------------------------------------------------- /perf/results/mac_os_x-x86_64-linpack-nativesystemblas.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fommil/netlib-java/52b3a8beb23ee98d26eb66fa67d904c704e01e45/perf/results/mac_os_x-x86_64-linpack-nativesystemblas.csv.gz -------------------------------------------------------------------------------- /perf/src/main/c/common.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | 7 | #include 8 | #include 9 | 10 | // http://stackoverflow.com/questions/5167269 11 | #ifdef __MACH__ 12 | #include 13 | #include 14 | #endif 15 | 16 | 17 | // http://stackoverflow.com/questions/7034930 18 | double drand() { 19 | return (rand()+1.0)/(RAND_MAX+1.0); 20 | } 21 | 22 | double random_normal() { 23 | return sqrt(-2*log(drand())) * cos(2*M_PI*drand()); 24 | } 25 | 26 | double* random_array(int size) { 27 | double *a = malloc(sizeof(double) * size); 28 | int i; 29 | 30 | for (i = 0 ; i < size; i++) { 31 | a[i] = random_normal(); 32 | } 33 | 34 | return a; 35 | } 36 | 37 | long currentTimeNanos() { 38 | struct timespec ts; 39 | 40 | #ifdef __MACH__ 41 | clock_serv_t cclock; 42 | mach_timespec_t mts; 43 | host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock); 44 | clock_get_time(cclock, &mts); 45 | mach_port_deallocate(mach_task_self(), cclock); 46 | ts.tv_sec = mts.tv_sec; 47 | ts.tv_nsec = mts.tv_nsec; 48 | 49 | #else 50 | clock_gettime(CLOCK_REALTIME, &ts); 51 | #endif 52 | 53 | return (ts.tv_sec * 1000000000) + ts.tv_nsec; 54 | } 55 | -------------------------------------------------------------------------------- /perf/src/main/c/common.h: -------------------------------------------------------------------------------- 1 | long currentTimeNanos(); 2 | 3 | double* random_array(int size); -------------------------------------------------------------------------------- /perf/src/main/c/cudaddottest.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | 4 | gcc-mp-4.8 -O3 cudaddottest.c common.c -o cudaddottest -I../../../../netlib/CBLAS -I/usr/local/cuda/include/ -L/usr/local/cuda/lib -lcublas 5 | export DYLD_LIBRARY_PATH=/usr/local/cuda/lib 6 | ./cudaddottest > ../../../results/mac_os_x-x86_64-ddot-cuda_nooh.csv 7 | 8 | */ 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include "common.h" 15 | #include 16 | 17 | void checkStatus(char* message, cublasStatus status) { 18 | if (status != CUBLAS_STATUS_SUCCESS) { 19 | fprintf (stderr, "!!!! %s fail %d\n", message, status); 20 | exit(EXIT_FAILURE); 21 | } 22 | } 23 | 24 | long benchmark(int size) { 25 | long requestStart, requestEnd; 26 | int incx = 1, incy = 1, n = size; 27 | double *cuA, *cuB; 28 | cublasStatus status; 29 | 30 | 31 | double* a = random_array(size); 32 | double* b = random_array(size); 33 | 34 | status = cublasAlloc(n, sizeof(double),(void**)&cuA); 35 | checkStatus("A", status); 36 | status = cublasAlloc(n, sizeof(double),(void**)&cuB); 37 | checkStatus("B", status); 38 | 39 | status = cublasSetVector(n, sizeof(double), a, incx, cuA, incx); 40 | checkStatus("setA", status); 41 | 42 | status = cublasSetVector(n, sizeof(double), b, incy, cuB, incy); 43 | checkStatus("setB", status); 44 | 45 | requestStart = currentTimeNanos(); 46 | 47 | cublasDdot(n, cuA, incx, cuB, incy); 48 | 49 | requestEnd = currentTimeNanos(); 50 | 51 | status = cublasFree(cuA); 52 | checkStatus("freeA", status); 53 | status = cublasFree(cuB); 54 | checkStatus("freeB", status); 55 | 56 | free(a); 57 | free(b); 58 | 59 | return (requestEnd - requestStart); 60 | } 61 | 62 | main() 63 | { 64 | cublasStatus status; 65 | 66 | status = cublasInit(); 67 | checkStatus("init", status); 68 | 69 | srand(time(NULL)); 70 | 71 | double factor = 6.0 / 100.0; 72 | int i, j; 73 | for (i = 0 ; i < 10 ; i++) { 74 | for (j = 1 ; j <= 100 ; j++) { 75 | int size = (int) pow(10.0, factor * j); 76 | if (size < 10) continue; 77 | long took = benchmark(size); 78 | printf("\"%d\",\"%lu\"\n", size, took); 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /perf/src/main/c/ddottest.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | cp ../../../../native_ref/ libnetlib.so 4 | 5 | gcc-mp-4.8 -O3 ddottest.c common.c -o ddottest -L. -lnetlib -I../../../../netlib/CBLAS 6 | ./ddottest > ../../../results/mac_os_x-x86_64-ddot-CBLAS.csv 7 | 8 | gcc-mp-4.8 -O3 ddottest.c common.c -o ddottest -I/System/Library/Frameworks/vecLib.framework/Headers -framework veclib 9 | ./ddottest > ../../../results/mac_os_x-x86_64-ddot-veclib.csv 10 | 11 | gcc-mp-4.8 -O3 ddottest.c common.c -o ddottest -I/opt/local/include /opt/local/lib/libatlas.a /opt/local/lib/libcblas.a /opt/local/lib/liblapack.a /opt/local/lib/libf77blas.a -lgfortran 12 | ./ddottest > ../../../results/mac_os_x-x86_64-ddot-atlas.csv 13 | 14 | gcc-mp-4.8 -O3 ddottest.c common.c -o ddottest -I../../../../netlib/CBLAS -L/opt/intel/composerxe/mkl/lib -lmkl_rt 15 | export DYLD_LIBRARY_PATH=/opt/intel/composerxe/mkl/lib:/opt/intel/composerxe/lib/ 16 | ./ddottest > ../../../results/mac_os_x-x86_64-ddot-mkl.csv 17 | 18 | gcc-mp-4.8 -O3 ddottest.c cudawrapper.c common.c -o ddottest -I../../../../netlib/CBLAS -I/usr/local/cuda/include/ -L/usr/local/cuda/lib -lcublas 19 | export DYLD_LIBRARY_PATH=/usr/local/cuda/lib 20 | ./ddottest > ../../../results/mac_os_x-x86_64-ddot-cuda.csv 21 | 22 | 23 | 24 | */ 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include "common.h" 31 | 32 | long benchmark(int size) { 33 | long requestStart, requestEnd; 34 | 35 | double* a = random_array(size); 36 | double* b = random_array(size); 37 | 38 | requestStart = currentTimeNanos(); 39 | 40 | cblas_ddot(size, a, 1, b, 1); 41 | 42 | requestEnd = currentTimeNanos(); 43 | 44 | free(a); 45 | free(b); 46 | 47 | return (requestEnd - requestStart); 48 | } 49 | 50 | main() 51 | { 52 | srand(time(NULL)); 53 | 54 | double factor = 6.0 / 100.0; 55 | int i, j; 56 | for (i = 0 ; i < 10 ; i++) { 57 | for (j = 1 ; j <= 100 ; j++) { 58 | int size = (int) pow(10.0, factor * j); 59 | if (size < 10) continue; 60 | long took = benchmark(size); 61 | printf("\"%d\",\"%lu\"\n", size, took); 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /perf/src/main/java/com/github/fommil/netlib/Benchmark.java: -------------------------------------------------------------------------------- 1 | package com.github.fommil.netlib; 2 | 3 | /** 4 | * @author Sam Halliday 5 | */ 6 | public interface Benchmark { 7 | 8 | // returns nanoseconds spent in computations 9 | long benchmark(); 10 | 11 | public interface Parameterised { 12 | // size is a parameter > 0 13 | long benchmark(int size); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /perf/src/main/java/com/github/fommil/netlib/Ddot.java: -------------------------------------------------------------------------------- 1 | package com.github.fommil.netlib; 2 | 3 | import com.google.common.base.Stopwatch; 4 | 5 | import java.util.concurrent.TimeUnit; 6 | 7 | import static com.github.fommil.netlib.Benchmarks.randomArray; 8 | 9 | /** 10 | * @author Sam Halliday 11 | */ 12 | public class Ddot implements Benchmark.Parameterised { 13 | 14 | @Override 15 | public long benchmark(int size) { 16 | Stopwatch stopwatch = new Stopwatch(); 17 | 18 | double[] array1 = randomArray(size); 19 | double[] array2 = randomArray(size); 20 | stopwatch.start(); 21 | BLAS.getInstance().ddot(size, array1, 1, array2, 1); 22 | stopwatch.stop(); 23 | 24 | return stopwatch.elapsed(TimeUnit.NANOSECONDS); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /perf/src/main/java/com/github/fommil/netlib/Dgemm.java: -------------------------------------------------------------------------------- 1 | package com.github.fommil.netlib; 2 | 3 | import com.google.common.base.Stopwatch; 4 | 5 | import java.util.concurrent.TimeUnit; 6 | 7 | /** 8 | * @author Sam Halliday 9 | */ 10 | public class Dgemm implements Benchmark.Parameterised { 11 | @Override 12 | public long benchmark(int size) { 13 | int m = (int) Math.sqrt(size); 14 | 15 | double[] a = Benchmarks.randomArray(m * m); 16 | double[] b = Benchmarks.randomArray(m * m); 17 | double[] c = new double[m * m]; 18 | 19 | Stopwatch watch = new Stopwatch(); 20 | watch.start(); 21 | BLAS.getInstance().dgemm("N", "N", m, m, m, 1, a, m, b, m, 0, c, m); 22 | watch.stop(); 23 | 24 | return watch.elapsed(TimeUnit.NANOSECONDS); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /perf/src/main/java/com/github/fommil/netlib/Dgetri.java: -------------------------------------------------------------------------------- 1 | package com.github.fommil.netlib; 2 | 3 | import com.google.common.base.Stopwatch; 4 | import lombok.extern.java.Log; 5 | import org.netlib.util.intW; 6 | 7 | import java.util.Arrays; 8 | import java.util.concurrent.TimeUnit; 9 | 10 | /** 11 | * @author Sam Halliday 12 | */ 13 | @Log 14 | public class Dgetri implements Benchmark.Parameterised { 15 | @Override 16 | public long benchmark(int size) { 17 | int m = (int) Math.sqrt(size); 18 | 19 | // random matrices are full rank (and can always be inverted if square) 20 | // http://www.sciencedirect.com/science/article/pii/S0096300306009040 21 | double[] a = Benchmarks.randomArray(m * m); 22 | double[] aOrig = Arrays.copyOf(a, a.length); 23 | double[] b = new double[1]; 24 | int[] p = new int[m]; 25 | intW info = new intW(0); 26 | 27 | Stopwatch watch = new Stopwatch(); 28 | 29 | LAPACK.getInstance().dgetri(m, a, m, p, b, -1, info); 30 | //log.info(m + " supposedly has optimal work of " + b[0]); 31 | b = new double[(int)b[0]]; 32 | 33 | watch.start(); 34 | LAPACK.getInstance().dgetrf(m, m, a, m, p, info); 35 | if (info.val != 0) 36 | throw new IllegalArgumentException(); 37 | LAPACK.getInstance().dgetri(m, a, m, p, b, b.length, info); 38 | if (info.val != 0) 39 | throw new IllegalArgumentException(); 40 | watch.stop(); 41 | 42 | // quick check 43 | double[] c = new double[m * m]; 44 | BLAS.getInstance().dgemm("N", "N", m, m, m, 1, aOrig, m, a, m, 0, c, m); 45 | if (!Benchmarks.isUnit(c, m, 0.000001)) { 46 | Dgetri.log.warning("failed to invert matrix"); 47 | } 48 | 49 | return watch.elapsed(TimeUnit.NANOSECONDS); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /perf/src/test/java/com/github/fommil/netlib/BLASTest.java: -------------------------------------------------------------------------------- 1 | package com.github.fommil.netlib; 2 | 3 | import org.junit.Assert; 4 | import org.junit.Test; 5 | 6 | import java.util.Arrays; 7 | 8 | public class BLASTest { 9 | private final BLAS blas = BLAS.getInstance(); 10 | 11 | @Test 12 | public void offsets() { 13 | double[] matrix = new double[]{ 14 | 1, 1, 1, 1, 1, 15 | 1, 1, 1, 1, 1, 16 | 1, 1, 1, 1, 1, 17 | 1, 1, 1, 1, 1, 18 | 1, 1, 1, 1, 1 19 | }; 20 | blas.dscal(5, 2.0, matrix, 2, 5); 21 | double[] expected = new double[]{ 22 | 1, 1, 2, 1, 1, 23 | 1, 1, 2, 1, 1, 24 | 1, 1, 2, 1, 1, 25 | 1, 1, 2, 1, 1, 26 | 1, 1, 2, 1, 1 27 | }; 28 | Assert.assertArrayEquals(Arrays.toString(matrix), expected, matrix, 0.0); 29 | } 30 | 31 | @Test 32 | public void ddot() { 33 | double[] dx = {1.1, 2.2, 3.3, 4.4}; 34 | double[] dy = {1.1, 2.2, 3.3, 4.4}; 35 | int n = dx.length; 36 | 37 | double answer = blas.ddot(n, dx, 1, dy, 1); 38 | Assert.assertTrue(Math.abs(answer - 36.3) < 0.00001d); 39 | } 40 | } 41 | --------------------------------------------------------------------------------