Update LAPACK to 3.9.0
This commit is contained in:
parent
e5e893835a
commit
90f316e888
|
@ -106,7 +106,7 @@ set(SLASRC
|
|||
slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f
|
||||
slauu2.f slauum.f sopgtr.f sopmtr.f sorg2l.f sorg2r.f
|
||||
sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f
|
||||
sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f
|
||||
sorgrq.f sorgtr.f sorgtsqr.f sorm2l.f sorm2r.f sorm22.f
|
||||
sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f
|
||||
sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f
|
||||
spbstf.f spbsv.f spbsvx.f
|
||||
|
@ -148,9 +148,11 @@ set(SLASRC
|
|||
sgetsls.f sgeqr.f slatsqr.f slamtsqr.f sgemqr.f
|
||||
sgelq.f slaswlq.f slamswlq.f sgemlq.f
|
||||
stplqt.f stplqt2.f stpmlqt.f
|
||||
sorhr_col.f slaorhr_col_getrfnp.f slaorhr_col_getrfnp2.f
|
||||
ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f
|
||||
ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f
|
||||
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f)
|
||||
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f
|
||||
sgesvdq.f scombssq.f)
|
||||
|
||||
set(DSLASRC spotrs.f sgetrs.f spotrf.f sgetrf.f)
|
||||
|
||||
|
@ -233,7 +235,7 @@ set(CLASRC
|
|||
ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f
|
||||
ctrsyl.f ctrti2.f ctrtri.f ctrtrs.f ctzrzf.f cung2l.f cung2r.f
|
||||
cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f
|
||||
cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f
|
||||
cungrq.f cungtr.f cungtsqr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f
|
||||
cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f
|
||||
cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f
|
||||
chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f
|
||||
|
@ -247,9 +249,11 @@ set(CLASRC
|
|||
cgetsls.f cgeqr.f clatsqr.f clamtsqr.f cgemqr.f
|
||||
cgelq.f claswlq.f clamswlq.f cgemlq.f
|
||||
ctplqt.f ctplqt2.f ctpmlqt.f
|
||||
cunhr_col.f claunhr_col_getrfnp.f claunhr_col_getrfnp2.f
|
||||
chetrd_2stage.f chetrd_he2hb.f chetrd_hb2st.F chb2st_kernels.f
|
||||
cheevd_2stage.f cheev_2stage.f cheevx_2stage.f cheevr_2stage.f
|
||||
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f)
|
||||
chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f
|
||||
cgesvdq.f)
|
||||
|
||||
set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
|
||||
cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f
|
||||
|
@ -295,7 +299,7 @@ set(DLASRC
|
|||
dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f dlauu2.f
|
||||
dlauum.f dopgtr.f dopmtr.f dorg2l.f dorg2r.f
|
||||
dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f
|
||||
dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f
|
||||
dorgrq.f dorgtr.f dorgtsqr.f dorm2l.f dorm2r.f dorm22.f
|
||||
dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f
|
||||
dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f
|
||||
dpbstf.f dpbsv.f dpbsvx.f
|
||||
|
@ -339,9 +343,11 @@ set(DLASRC
|
|||
dgetsls.f dgeqr.f dlatsqr.f dlamtsqr.f dgemqr.f
|
||||
dgelq.f dlaswlq.f dlamswlq.f dgemlq.f
|
||||
dtplqt.f dtplqt2.f dtpmlqt.f
|
||||
dorhr_col.f dlaorhr_col_getrfnp.f dlaorhr_col_getrfnp2.f
|
||||
dsytrd_2stage.f dsytrd_sy2sb.f dsytrd_sb2st.F dsb2st_kernels.f
|
||||
dsyevd_2stage.f dsyev_2stage.f dsyevx_2stage.f dsyevr_2stage.f
|
||||
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f)
|
||||
dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f
|
||||
dgesvdq.f dcombssq.f)
|
||||
|
||||
set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f
|
||||
dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f
|
||||
|
@ -424,7 +430,7 @@ set(ZLASRC
|
|||
ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f
|
||||
ztrsyl.f ztrti2.f ztrtri.f ztrtrs.f ztzrzf.f zung2l.f
|
||||
zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f
|
||||
zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f
|
||||
zungrq.f zungtr.f zungtsqr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f
|
||||
zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f
|
||||
zunmtr.f zupgtr.f
|
||||
zupmtr.f izmax1.f dzsum1.f zstemr.f
|
||||
|
@ -440,9 +446,11 @@ set(ZLASRC
|
|||
zgelqt.f zgelqt3.f zgemlqt.f
|
||||
zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f
|
||||
zgelq.f zlaswlq.f zlamswlq.f zgemlq.f
|
||||
zunhr_col.f zlaunhr_col_getrfnp.f zlaunhr_col_getrfnp2.f
|
||||
zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f
|
||||
zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f
|
||||
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f)
|
||||
zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f
|
||||
zgesvdq.f)
|
||||
|
||||
set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f
|
||||
zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f
|
||||
|
@ -504,7 +512,7 @@ if(USE_XBLAS)
|
|||
endif()
|
||||
target_link_libraries(lapack PRIVATE ${BLAS_LIBRARIES})
|
||||
|
||||
if (${CMAKE_BUILD_TYPE_UPPER} STREQUAL "COVERAGE")
|
||||
if(_is_coverage_build)
|
||||
target_link_libraries(lapack PRIVATE gcov)
|
||||
add_coverage(lapack)
|
||||
endif()
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
include ../make.inc
|
||||
|
||||
#######################################################################
|
||||
# This is the makefile to create a library for LAPACK.
|
||||
# The files are organized as follows:
|
||||
|
@ -44,7 +42,7 @@ include ../make.inc
|
|||
# and is created at the next higher directory level.
|
||||
#
|
||||
# To remove the object files after the library is created, enter
|
||||
# make clean
|
||||
# make cleanobj
|
||||
# On some systems, you can force the source files to be recompiled by
|
||||
# entering (for example)
|
||||
# make single FRC=FRC
|
||||
|
@ -56,6 +54,13 @@ include ../make.inc
|
|||
#
|
||||
#######################################################################
|
||||
|
||||
TOPSRCDIR = ..
|
||||
include $(TOPSRCDIR)/make.inc
|
||||
|
||||
.SUFFIXES: .F .o
|
||||
.F.o:
|
||||
$(FC) $(FFLAGS) -c -o $@ $<
|
||||
|
||||
ALLAUX_O = ilaenv.o ilaenv2stage.o ieeeck.o lsamen.o xerbla.o xerbla_array.o \
|
||||
iparmq.o iparam2stage.o \
|
||||
ilaprec.o ilatrans.o ilauplo.o iladiag.o chla_transtype.o \
|
||||
|
@ -128,7 +133,7 @@ SLASRC_O = \
|
|||
slatbs.o slatdf.o slatps.o slatrd.o slatrs.o slatrz.o \
|
||||
slauu2.o slauum.o sopgtr.o sopmtr.o sorg2l.o sorg2r.o \
|
||||
sorgbr.o sorghr.o sorgl2.o sorglq.o sorgql.o sorgqr.o sorgr2.o \
|
||||
sorgrq.o sorgtr.o sorm2l.o sorm2r.o sorm22.o \
|
||||
sorgrq.o sorgtr.o sorgtsqr.o sorm2l.o sorm2r.o sorm22.o \
|
||||
sormbr.o sormhr.o sorml2.o sormlq.o sormql.o sormqr.o sormr2.o \
|
||||
sormr3.o sormrq.o sormrz.o sormtr.o spbcon.o spbequ.o spbrfs.o \
|
||||
spbstf.o spbsv.o spbsvx.o \
|
||||
|
@ -171,9 +176,11 @@ SLASRC_O = \
|
|||
sgetsls.o sgeqr.o slatsqr.o slamtsqr.o sgemqr.o \
|
||||
sgelq.o slaswlq.o slamswlq.o sgemlq.o \
|
||||
stplqt.o stplqt2.o stpmlqt.o \
|
||||
sorhr_col.o slaorhr_col_getrfnp.o slaorhr_col_getrfnp2.o \
|
||||
ssytrd_2stage.o ssytrd_sy2sb.o ssytrd_sb2st.o ssb2st_kernels.o \
|
||||
ssyevd_2stage.o ssyev_2stage.o ssyevx_2stage.o ssyevr_2stage.o \
|
||||
ssbev_2stage.o ssbevx_2stage.o ssbevd_2stage.o ssygv_2stage.o
|
||||
ssbev_2stage.o ssbevx_2stage.o ssbevd_2stage.o ssygv_2stage.o \
|
||||
sgesvdq.o scombssq.o
|
||||
|
||||
DSLASRC_O = spotrs.o sgetrs.o spotrf.o sgetrf.o
|
||||
|
||||
|
@ -258,7 +265,7 @@ CLASRC_O = \
|
|||
ctptrs.o ctrcon.o ctrevc.o ctrevc3.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
|
||||
ctrsyl.o ctrti2.o ctrtri.o ctrtrs.o ctzrzf.o cung2l.o cung2r.o \
|
||||
cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.o \
|
||||
cungrq.o cungtr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o cunm22.o \
|
||||
cungrq.o cungtr.o cungtsqr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o cunm22.o \
|
||||
cunmlq.o cunmql.o cunmqr.o cunmr2.o cunmr3.o cunmrq.o cunmrz.o \
|
||||
cunmtr.o cupgtr.o cupmtr.o icmax1.o scsum1.o cstemr.o \
|
||||
chfrk.o ctfttp.o clanhf.o cpftrf.o cpftri.o cpftrs.o ctfsm.o ctftri.o \
|
||||
|
@ -272,9 +279,11 @@ CLASRC_O = \
|
|||
cgetsls.o cgeqr.o clatsqr.o clamtsqr.o cgemqr.o \
|
||||
cgelq.o claswlq.o clamswlq.o cgemlq.o \
|
||||
ctplqt.o ctplqt2.o ctpmlqt.o \
|
||||
cunhr_col.o claunhr_col_getrfnp.o claunhr_col_getrfnp2.o \
|
||||
chetrd_2stage.o chetrd_he2hb.o chetrd_hb2st.o chb2st_kernels.o \
|
||||
cheevd_2stage.o cheev_2stage.o cheevx_2stage.o cheevr_2stage.o \
|
||||
chbev_2stage.o chbevx_2stage.o chbevd_2stage.o chegv_2stage.o
|
||||
chbev_2stage.o chbevx_2stage.o chbevd_2stage.o chegv_2stage.o \
|
||||
cgesvdq.o
|
||||
|
||||
ifdef USEXBLAS
|
||||
CXLASRC = cgesvxx.o cgerfsx.o cla_gerfsx_extended.o cla_geamv.o \
|
||||
|
@ -324,7 +333,7 @@ DLASRC_O = \
|
|||
dlatbs.o dlatdf.o dlatps.o dlatrd.o dlatrs.o dlatrz.o dlauu2.o \
|
||||
dlauum.o dopgtr.o dopmtr.o dorg2l.o dorg2r.o \
|
||||
dorgbr.o dorghr.o dorgl2.o dorglq.o dorgql.o dorgqr.o dorgr2.o \
|
||||
dorgrq.o dorgtr.o dorm2l.o dorm2r.o dorm22.o \
|
||||
dorgrq.o dorgtr.o dorgtsqr.o dorm2l.o dorm2r.o dorm22.o \
|
||||
dormbr.o dormhr.o dorml2.o dormlq.o dormql.o dormqr.o dormr2.o \
|
||||
dormr3.o dormrq.o dormrz.o dormtr.o dpbcon.o dpbequ.o dpbrfs.o \
|
||||
dpbstf.o dpbsv.o dpbsvx.o \
|
||||
|
@ -368,9 +377,11 @@ DLASRC_O = \
|
|||
dgetsls.o dgeqr.o dlatsqr.o dlamtsqr.o dgemqr.o \
|
||||
dgelq.o dlaswlq.o dlamswlq.o dgemlq.o \
|
||||
dtplqt.o dtplqt2.o dtpmlqt.o \
|
||||
dorhr_col.o dlaorhr_col_getrfnp.o dlaorhr_col_getrfnp2.o \
|
||||
dsytrd_2stage.o dsytrd_sy2sb.o dsytrd_sb2st.o dsb2st_kernels.o \
|
||||
dsyevd_2stage.o dsyev_2stage.o dsyevx_2stage.o dsyevr_2stage.o \
|
||||
dsbev_2stage.o dsbevx_2stage.o dsbevd_2stage.o dsygv_2stage.o
|
||||
dsbev_2stage.o dsbevx_2stage.o dsbevd_2stage.o dsygv_2stage.o \
|
||||
dgesvdq.o dcombssq.o
|
||||
|
||||
ifdef USEXBLAS
|
||||
DXLASRC = dgesvxx.o dgerfsx.o dla_gerfsx_extended.o dla_geamv.o \
|
||||
|
@ -456,7 +467,7 @@ ZLASRC_O = \
|
|||
ztptrs.o ztrcon.o ztrevc.o ztrevc3.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
|
||||
ztrsyl.o ztrti2.o ztrtri.o ztrtrs.o ztzrzf.o zung2l.o \
|
||||
zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.o \
|
||||
zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \
|
||||
zungrq.o zungtr.o zungtsqr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \
|
||||
zunmlq.o zunmql.o zunmqr.o zunmr2.o zunmr3.o zunmrq.o zunmrz.o \
|
||||
zunmtr.o zupgtr.o \
|
||||
zupmtr.o izmax1.o dzsum1.o zstemr.o \
|
||||
|
@ -472,9 +483,11 @@ ZLASRC_O = \
|
|||
zgelqt.o zgelqt3.o zgemlqt.o \
|
||||
zgetsls.o zgeqr.o zlatsqr.o zlamtsqr.o zgemqr.o \
|
||||
zgelq.o zlaswlq.o zlamswlq.o zgemlq.o \
|
||||
zunhr_col.o zlaunhr_col_getrfnp.o zlaunhr_col_getrfnp2.o \
|
||||
zhetrd_2stage.o zhetrd_he2hb.o zhetrd_hb2st.o zhb2st_kernels.o \
|
||||
zheevd_2stage.o zheev_2stage.o zheevx_2stage.o zheevr_2stage.o \
|
||||
zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o
|
||||
zhbev_2stage.o zhbevx_2stage.o zhbevd_2stage.o zhegv_2stage.o \
|
||||
zgesvdq.o
|
||||
|
||||
ifdef USEXBLAS
|
||||
ZXLASRC = zgesvxx.o zgerfsx.o zla_gerfsx_extended.o zla_geamv.o \
|
||||
|
@ -550,33 +563,29 @@ ifdef BUILD_DEPRECATED
|
|||
DEPRECATED = $(DEPRECSRC)
|
||||
endif
|
||||
|
||||
all: ../$(LAPACKLIB)
|
||||
.PHONY: all
|
||||
all: $(LAPACKLIB)
|
||||
|
||||
.PHONY: ../$(LAPACKLIB)
|
||||
|
||||
../$(LAPACKLIB): $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED)
|
||||
$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED)
|
||||
$(LAPACKLIB): $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED)
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
$(RANLIB) $@
|
||||
|
||||
.PHONY: single complex double complex16
|
||||
single: $(SLASRC) $(DSLASRC) $(SXLASRC) $(SCLAUX) $(ALLAUX)
|
||||
$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(SLASRC) $(DSLASRC) \
|
||||
$(SXLASRC) $(SCLAUX) $(ALLAUX)
|
||||
$(RANLIB) ../$(LAPACKLIB)
|
||||
$(AR) $(ARFLAGS) $(LAPACKLIB) $^
|
||||
$(RANLIB) $(LAPACKLIB)
|
||||
|
||||
complex: $(CLASRC) $(ZCLASRC) $(CXLASRC) $(SCLAUX) $(ALLAUX)
|
||||
$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(CLASRC) $(ZCLASRC) \
|
||||
$(CXLASRC) $(SCLAUX) $(ALLAUX)
|
||||
$(RANLIB) ../$(LAPACKLIB)
|
||||
$(AR) $(ARFLAGS) $(LAPACKLIB) $^
|
||||
$(RANLIB) $(LAPACKLIB)
|
||||
|
||||
double: $(DLASRC) $(DSLASRC) $(DXLASRC) $(DZLAUX) $(ALLAUX)
|
||||
$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(DLASRC) $(DSLASRC) \
|
||||
$(DXLASRC) $(DZLAUX) $(ALLAUX)
|
||||
$(RANLIB) ../$(LAPACKLIB)
|
||||
$(AR) $(ARFLAGS) $(LAPACKLIB) $^
|
||||
$(RANLIB) $(LAPACKLIB)
|
||||
|
||||
complex16: $(ZLASRC) $(ZCLASRC) $(ZXLASRC) $(DZLAUX) $(ALLAUX)
|
||||
$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(ZLASRC) $(ZCLASRC) \
|
||||
$(ZXLASRC) $(DZLAUX) $(ALLAUX)
|
||||
$(RANLIB) ../$(LAPACKLIB)
|
||||
$(AR) $(ARFLAGS) $(LAPACKLIB) $^
|
||||
$(RANLIB) $(LAPACKLIB)
|
||||
|
||||
$(ALLAUX): $(FRC)
|
||||
$(SCLAUX): $(FRC)
|
||||
|
@ -597,18 +606,16 @@ endif
|
|||
FRC:
|
||||
@FRC=$(FRC)
|
||||
|
||||
clean:
|
||||
.PHONY: clean cleanobj cleanlib
|
||||
clean: cleanobj cleanlib
|
||||
cleanobj:
|
||||
rm -f *.o DEPRECATED/*.o
|
||||
cleanlib:
|
||||
rm -f $(LAPACKLIB)
|
||||
|
||||
.f.o:
|
||||
$(FORTRAN) $(OPTS) -c -o $@ $<
|
||||
|
||||
.F.o:
|
||||
$(FORTRAN) $(OPTS) -c $< -o $@
|
||||
|
||||
slaruv.o: slaruv.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
dlaruv.o: dlaruv.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
sla_wwaddw.o: sla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
dla_wwaddw.o: dla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
cla_wwaddw.o: cla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
zla_wwaddw.o: zla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
|
||||
slaruv.o: slaruv.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
dlaruv.o: dlaruv.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
sla_wwaddw.o: sla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
dla_wwaddw.o: dla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
cla_wwaddw.o: cla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
zla_wwaddw.o: zla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
*> Specifies the form of the system of equations:
|
||||
*> = 'N': A * X = B (No transpose)
|
||||
*> = 'T': A**T * X = B (Transpose)
|
||||
*> = 'C': A**H * X = B (Conjugate transpose = Transpose)
|
||||
*> = 'C': A**H * X = B (Conjugate transpose)
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] EQUED
|
||||
|
@ -308,7 +308,7 @@
|
|||
*> information as described below. There currently are up to three
|
||||
*> pieces of information returned for each right-hand side. If
|
||||
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
|
||||
*> the first (:,N_ERR_BNDS) entries are returned.
|
||||
*>
|
||||
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
|
||||
|
@ -344,14 +344,14 @@
|
|||
*> \param[in] NPARAMS
|
||||
*> \verbatim
|
||||
*> NPARAMS is INTEGER
|
||||
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the
|
||||
*> Specifies the number of parameters set in PARAMS. If <= 0, the
|
||||
*> PARAMS array is never referenced and default values are used.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] PARAMS
|
||||
*> \verbatim
|
||||
*> PARAMS is REAL array, dimension NPARAMS
|
||||
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then
|
||||
*> Specifies algorithm parameters. If an entry is < 0.0, then
|
||||
*> that entry will be filled with default value used for that
|
||||
*> parameter. Only positions up to NPARAMS are accessed; defaults
|
||||
*> are used for higher-numbered parameters.
|
||||
|
@ -359,9 +359,9 @@
|
|||
*> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
|
||||
*> refinement or not.
|
||||
*> Default: 1.0
|
||||
*> = 0.0 : No refinement is performed, and no error bounds are
|
||||
*> = 0.0: No refinement is performed, and no error bounds are
|
||||
*> computed.
|
||||
*> = 1.0 : Use the double-precision refinement algorithm,
|
||||
*> = 1.0: Use the double-precision refinement algorithm,
|
||||
*> possibly with doubled-single computations if the
|
||||
*> compilation environment does not support DOUBLE
|
||||
*> PRECISION.
|
||||
|
|
|
@ -431,7 +431,7 @@
|
|||
*> information as described below. There currently are up to three
|
||||
*> pieces of information returned for each right-hand side. If
|
||||
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
|
||||
*> the first (:,N_ERR_BNDS) entries are returned.
|
||||
*>
|
||||
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
|
||||
|
@ -467,14 +467,14 @@
|
|||
*> \param[in] NPARAMS
|
||||
*> \verbatim
|
||||
*> NPARAMS is INTEGER
|
||||
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the
|
||||
*> Specifies the number of parameters set in PARAMS. If <= 0, the
|
||||
*> PARAMS array is never referenced and default values are used.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] PARAMS
|
||||
*> \verbatim
|
||||
*> PARAMS is REAL array, dimension NPARAMS
|
||||
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then
|
||||
*> Specifies algorithm parameters. If an entry is < 0.0, then
|
||||
*> that entry will be filled with default value used for that
|
||||
*> parameter. Only positions up to NPARAMS are accessed; defaults
|
||||
*> are used for higher-numbered parameters.
|
||||
|
@ -482,9 +482,9 @@
|
|||
*> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
|
||||
*> refinement or not.
|
||||
*> Default: 1.0
|
||||
*> = 0.0 : No refinement is performed, and no error bounds are
|
||||
*> = 0.0: No refinement is performed, and no error bounds are
|
||||
*> computed.
|
||||
*> = 1.0 : Use the double-precision refinement algorithm,
|
||||
*> = 1.0: Use the double-precision refinement algorithm,
|
||||
*> possibly with doubled-single computations if the
|
||||
*> compilation environment does not support DOUBLE
|
||||
*> PRECISION.
|
||||
|
|
|
@ -48,10 +48,10 @@
|
|||
*> \verbatim
|
||||
*> JOB is CHARACTER*1
|
||||
*> Specifies the type of backward transformation required:
|
||||
*> = 'N', do nothing, return immediately;
|
||||
*> = 'P', do backward transformation for permutation only;
|
||||
*> = 'S', do backward transformation for scaling only;
|
||||
*> = 'B', do backward transformations for both permutation and
|
||||
*> = 'N': do nothing, return immediately;
|
||||
*> = 'P': do backward transformation for permutation only;
|
||||
*> = 'S': do backward transformation for scaling only;
|
||||
*> = 'B': do backward transformations for both permutation and
|
||||
*> scaling.
|
||||
*> JOB must be the same as the argument JOB supplied to CGEBAL.
|
||||
*> \endverbatim
|
||||
|
|
|
@ -157,7 +157,7 @@
|
|||
*> < 0: if INFO = -i, the i-th argument had an illegal value.
|
||||
*> > 0: if INFO = i, the QR algorithm failed to compute all the
|
||||
*> eigenvalues, and no eigenvectors have been computed;
|
||||
*> elements and i+1:N of W contain eigenvalues which have
|
||||
*> elements i+1:N of W contain eigenvalues which have
|
||||
*> converged.
|
||||
*> \endverbatim
|
||||
*
|
||||
|
|
|
@ -80,13 +80,13 @@
|
|||
*> desirable, then this option is advisable. The input matrix A
|
||||
*> is preprocessed with QR factorization with FULL (row and
|
||||
*> column) pivoting.
|
||||
*> = 'G' Computation as with 'F' with an additional estimate of the
|
||||
*> = 'G': Computation as with 'F' with an additional estimate of the
|
||||
*> condition number of B, where A=B*D. If A has heavily weighted
|
||||
*> rows, then using this condition number gives too pessimistic
|
||||
*> error bound.
|
||||
*> = 'A': Small singular values are not well determined by the data
|
||||
*> and are considered as noisy; the matrix is treated as
|
||||
*> numerically rank defficient. The error in the computed
|
||||
*> numerically rank deficient. The error in the computed
|
||||
*> singular values is bounded by f(m,n)*epsilon*||A||.
|
||||
*> The computed SVD A = U * S * V^* restores A up to
|
||||
*> f(m,n)*epsilon*||A||.
|
||||
|
@ -117,7 +117,7 @@
|
|||
*> = 'V': N columns of V are returned in the array V; Jacobi rotations
|
||||
*> are not explicitly accumulated.
|
||||
*> = 'J': N columns of V are returned in the array V, but they are
|
||||
*> computed as the product of Jacobi rotations, if JOBT .EQ. 'N'.
|
||||
*> computed as the product of Jacobi rotations, if JOBT = 'N'.
|
||||
*> = 'W': V may be used as workspace of length N*N. See the description
|
||||
*> of V.
|
||||
*> = 'N': V is not computed.
|
||||
|
@ -131,7 +131,7 @@
|
|||
*> specified range. If A .NE. 0 is scaled so that the largest singular
|
||||
*> value of c*A is around SQRT(BIG), BIG=SLAMCH('O'), then JOBR issues
|
||||
*> the licence to kill columns of A whose norm in c*A is less than
|
||||
*> SQRT(SFMIN) (for JOBR.EQ.'R'), or less than SMALL=SFMIN/EPSLN,
|
||||
*> SQRT(SFMIN) (for JOBR = 'R'), or less than SMALL=SFMIN/EPSLN,
|
||||
*> where SFMIN=SLAMCH('S'), EPSLN=SLAMCH('E').
|
||||
*> = 'N': Do not kill small columns of c*A. This option assumes that
|
||||
*> BLAS and QR factorizations and triangular solvers are
|
||||
|
@ -229,7 +229,7 @@
|
|||
*> If JOBU = 'F', then U contains on exit the M-by-M matrix of
|
||||
*> the left singular vectors, including an ONB
|
||||
*> of the orthogonal complement of the Range(A).
|
||||
*> If JOBU = 'W' .AND. (JOBV.EQ.'V' .AND. JOBT.EQ.'T' .AND. M.EQ.N),
|
||||
*> If JOBU = 'W' .AND. (JOBV = 'V' .AND. JOBT = 'T' .AND. M = N),
|
||||
*> then U is used as workspace if the procedure
|
||||
*> replaces A with A^*. In that case, [V] is computed
|
||||
*> in U as left singular vectors of A^* and then
|
||||
|
@ -251,7 +251,7 @@
|
|||
*> V is COMPLEX array, dimension ( LDV, N )
|
||||
*> If JOBV = 'V', 'J' then V contains on exit the N-by-N matrix of
|
||||
*> the right singular vectors;
|
||||
*> If JOBV = 'W', AND (JOBU.EQ.'U' AND JOBT.EQ.'T' AND M.EQ.N),
|
||||
*> If JOBV = 'W', AND (JOBU = 'U' AND JOBT = 'T' AND M = N),
|
||||
*> then V is used as workspace if the pprocedure
|
||||
*> replaces A with A^*. In that case, [U] is computed
|
||||
*> in V as right singular vectors of A^* and then
|
||||
|
@ -282,7 +282,7 @@
|
|||
*> Length of CWORK to confirm proper allocation of workspace.
|
||||
*> LWORK depends on the job:
|
||||
*>
|
||||
*> 1. If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and
|
||||
*> 1. If only SIGMA is needed ( JOBU = 'N', JOBV = 'N' ) and
|
||||
*> 1.1 .. no scaled condition estimate required (JOBA.NE.'E'.AND.JOBA.NE.'G'):
|
||||
*> LWORK >= 2*N+1. This is the minimal requirement.
|
||||
*> ->> For optimal performance (blocked code) the optimal value
|
||||
|
@ -298,9 +298,9 @@
|
|||
*> In general, the optimal length LWORK is computed as
|
||||
*> LWORK >= max(N+LWORK(CGEQP3),N+LWORK(CGEQRF), LWORK(CGESVJ),
|
||||
*> N*N+LWORK(CPOCON)).
|
||||
*> 2. If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'),
|
||||
*> (JOBU.EQ.'N')
|
||||
*> 2.1 .. no scaled condition estimate requested (JOBE.EQ.'N'):
|
||||
*> 2. If SIGMA and the right singular vectors are needed (JOBV = 'V'),
|
||||
*> (JOBU = 'N')
|
||||
*> 2.1 .. no scaled condition estimate requested (JOBE = 'N'):
|
||||
*> -> the minimal requirement is LWORK >= 3*N.
|
||||
*> -> For optimal performance,
|
||||
*> LWORK >= max(N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
|
||||
|
@ -318,10 +318,10 @@
|
|||
*> LWORK >= max(N+LWORK(CGEQP3), LWORK(CPOCON), N+LWORK(CGESVJ),
|
||||
*> N+LWORK(CGELQF), 2*N+LWORK(CGEQRF), N+LWORK(CUNMLQ)).
|
||||
*> 3. If SIGMA and the left singular vectors are needed
|
||||
*> 3.1 .. no scaled condition estimate requested (JOBE.EQ.'N'):
|
||||
*> 3.1 .. no scaled condition estimate requested (JOBE = 'N'):
|
||||
*> -> the minimal requirement is LWORK >= 3*N.
|
||||
*> -> For optimal performance:
|
||||
*> if JOBU.EQ.'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
|
||||
*> if JOBU = 'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
|
||||
*> where NB is the optimal block size for CGEQP3, CGEQRF, CUNMQR.
|
||||
*> In general, the optimal length LWORK is computed as
|
||||
*> LWORK >= max(N+LWORK(CGEQP3), 2*N+LWORK(CGEQRF), N+LWORK(CUNMQR)).
|
||||
|
@ -329,16 +329,16 @@
|
|||
*> required (JOBA='E', or 'G').
|
||||
*> -> the minimal requirement is LWORK >= 3*N.
|
||||
*> -> For optimal performance:
|
||||
*> if JOBU.EQ.'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
|
||||
*> if JOBU = 'U' :: LWORK >= max(3*N, N+(N+1)*NB, 2*N+N*NB)=2*N+N*NB,
|
||||
*> where NB is the optimal block size for CGEQP3, CGEQRF, CUNMQR.
|
||||
*> In general, the optimal length LWORK is computed as
|
||||
*> LWORK >= max(N+LWORK(CGEQP3),N+LWORK(CPOCON),
|
||||
*> 2*N+LWORK(CGEQRF), N+LWORK(CUNMQR)).
|
||||
*>
|
||||
*> 4. If the full SVD is needed: (JOBU.EQ.'U' or JOBU.EQ.'F') and
|
||||
*> 4.1. if JOBV.EQ.'V'
|
||||
*> 4. If the full SVD is needed: (JOBU = 'U' or JOBU = 'F') and
|
||||
*> 4.1. if JOBV = 'V'
|
||||
*> the minimal requirement is LWORK >= 5*N+2*N*N.
|
||||
*> 4.2. if JOBV.EQ.'J' the minimal requirement is
|
||||
*> 4.2. if JOBV = 'J' the minimal requirement is
|
||||
*> LWORK >= 4*N+N*N.
|
||||
*> In both cases, the allocated CWORK can accommodate blocked runs
|
||||
*> of CGEQP3, CGEQRF, CGELQF, CUNMQR, CUNMLQ.
|
||||
|
@ -357,7 +357,7 @@
|
|||
*> of A. (See the description of SVA().)
|
||||
*> RWORK(2) = See the description of RWORK(1).
|
||||
*> RWORK(3) = SCONDA is an estimate for the condition number of
|
||||
*> column equilibrated A. (If JOBA .EQ. 'E' or 'G')
|
||||
*> column equilibrated A. (If JOBA = 'E' or 'G')
|
||||
*> SCONDA is an estimate of SQRT(||(R^* * R)^(-1)||_1).
|
||||
*> It is computed using SPOCON. It holds
|
||||
*> N^(-1/4) * SCONDA <= ||R^(-1)||_2 <= N^(1/4) * SCONDA
|
||||
|
@ -376,7 +376,7 @@
|
|||
*> triangular factor in the first QR factorization.
|
||||
*> RWORK(5) = an estimate of the scaled condition number of the
|
||||
*> triangular factor in the second QR factorization.
|
||||
*> The following two parameters are computed if JOBT .EQ. 'T'.
|
||||
*> The following two parameters are computed if JOBT = 'T'.
|
||||
*> They are provided for a developer/implementer who is familiar
|
||||
*> with the details of the method.
|
||||
*> RWORK(6) = the entropy of A^* * A :: this is the Shannon entropy
|
||||
|
@ -457,23 +457,23 @@
|
|||
*> of JOBA and JOBR.
|
||||
*> IWORK(2) = the number of the computed nonzero singular values
|
||||
*> IWORK(3) = if nonzero, a warning message:
|
||||
*> If IWORK(3).EQ.1 then some of the column norms of A
|
||||
*> If IWORK(3) = 1 then some of the column norms of A
|
||||
*> were denormalized floats. The requested high accuracy
|
||||
*> is not warranted by the data.
|
||||
*> IWORK(4) = 1 or -1. If IWORK(4) .EQ. 1, then the procedure used A^* to
|
||||
*> IWORK(4) = 1 or -1. If IWORK(4) = 1, then the procedure used A^* to
|
||||
*> do the job as specified by the JOB parameters.
|
||||
*> If the call to CGEJSV is a workspace query (indicated by LWORK .EQ. -1 and
|
||||
*> LRWORK .EQ. -1), then on exit IWORK(1) contains the required length of
|
||||
*> If the call to CGEJSV is a workspace query (indicated by LWORK = -1 and
|
||||
*> LRWORK = -1), then on exit IWORK(1) contains the required length of
|
||||
*> IWORK for the job parameters used in the call.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] INFO
|
||||
*> \verbatim
|
||||
*> INFO is INTEGER
|
||||
*> < 0 : if INFO = -i, then the i-th argument had an illegal value.
|
||||
*> = 0 : successful exit;
|
||||
*> > 0 : CGEJSV did not converge in the maximal allowed number
|
||||
*> of sweeps. The computed values may be inaccurate.
|
||||
*> < 0: if INFO = -i, then the i-th argument had an illegal value.
|
||||
*> = 0: successful exit;
|
||||
*> > 0: CGEJSV did not converge in the maximal allowed number
|
||||
*> of sweeps. The computed values may be inaccurate.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -1336,7 +1336,7 @@
|
|||
IF ( L2ABER ) THEN
|
||||
* Standard absolute error bound suffices. All sigma_i with
|
||||
* sigma_i < N*EPSLN*||A|| are flushed to zero. This is an
|
||||
* agressive enforcement of lower numerical rank by introducing a
|
||||
* aggressive enforcement of lower numerical rank by introducing a
|
||||
* backward error of the order of N*EPSLN*||A||.
|
||||
TEMP1 = SQRT(REAL(N))*EPSLN
|
||||
DO 3001 p = 2, N
|
||||
|
@ -1348,9 +1348,9 @@
|
|||
3001 CONTINUE
|
||||
3002 CONTINUE
|
||||
ELSE IF ( L2RANK ) THEN
|
||||
* .. similarly as above, only slightly more gentle (less agressive).
|
||||
* .. similarly as above, only slightly more gentle (less aggressive).
|
||||
* Sudden drop on the diagonal of R1 is used as the criterion for
|
||||
* close-to-rank-defficient.
|
||||
* close-to-rank-deficient.
|
||||
TEMP1 = SQRT(SFMIN)
|
||||
DO 3401 p = 2, N
|
||||
IF ( ( ABS(A(p,p)) .LT. (EPSLN*ABS(A(p-1,p-1))) ) .OR.
|
||||
|
@ -1718,7 +1718,7 @@
|
|||
CALL CPOCON('L',NR,CWORK(2*N+1),NR,ONE,TEMP1,
|
||||
$ CWORK(2*N+NR*NR+1),RWORK,IERR)
|
||||
CONDR1 = ONE / SQRT(TEMP1)
|
||||
* .. here need a second oppinion on the condition number
|
||||
* .. here need a second opinion on the condition number
|
||||
* .. then assume worst case scenario
|
||||
* R1 is OK for inverse <=> CONDR1 .LT. REAL(N)
|
||||
* more conservative <=> CONDR1 .LT. SQRT(REAL(N))
|
||||
|
@ -1763,7 +1763,7 @@
|
|||
ELSE
|
||||
*
|
||||
* .. ill-conditioned case: second QRF with pivoting
|
||||
* Note that windowed pivoting would be equaly good
|
||||
* Note that windowed pivoting would be equally good
|
||||
* numerically, and more run-time efficient. So, in
|
||||
* an optimal implementation, the next call to CGEQP3
|
||||
* should be replaced with eg. CALL CGEQPX (ACM TOMS #782)
|
||||
|
@ -1821,7 +1821,7 @@
|
|||
*
|
||||
IF ( CONDR2 .GE. COND_OK ) THEN
|
||||
* .. save the Householder vectors used for Q3
|
||||
* (this overwrittes the copy of R2, as it will not be
|
||||
* (this overwrites the copy of R2, as it will not be
|
||||
* needed in this branch, but it does not overwritte the
|
||||
* Huseholder vectors of Q2.).
|
||||
CALL CLACPY( 'U', NR, NR, V, LDV, CWORK(2*N+1), N )
|
||||
|
@ -2077,7 +2077,7 @@
|
|||
*
|
||||
* This branch deploys a preconditioned Jacobi SVD with explicitly
|
||||
* accumulated rotations. It is included as optional, mainly for
|
||||
* experimental purposes. It does perfom well, and can also be used.
|
||||
* experimental purposes. It does perform well, and can also be used.
|
||||
* In this implementation, this branch will be automatically activated
|
||||
* if the condition number sigma_max(A) / sigma_min(A) is predicted
|
||||
* to be greater than the overflow threshold. This is because the
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*> \brief \b CGELQ
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
|
@ -17,7 +18,17 @@
|
|||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*> CGELQ computes a LQ factorization of an M-by-N matrix A.
|
||||
*>
|
||||
*> CGELQ computes an LQ factorization of a complex M-by-N matrix A:
|
||||
*>
|
||||
*> A = ( L 0 ) * Q
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a N-by-N orthogonal matrix;
|
||||
*> L is an lower-triangular M-by-M matrix;
|
||||
*> 0 is a M-by-(N-M) zero matrix, if M < N.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -138,7 +149,7 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> These details are particular for this LAPACK implementation. Users should not
|
||||
*> take them for granted. These details may change in the future, and are unlikely not
|
||||
*> take them for granted. These details may change in the future, and are not likely
|
||||
*> true for another LAPACK implementation. These details are relevant if one wants
|
||||
*> to try to understand the code. They are not part of the interface.
|
||||
*>
|
||||
|
@ -159,10 +170,10 @@
|
|||
SUBROUTINE CGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd. --
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N, TSIZE, LWORK
|
||||
|
|
|
@ -33,8 +33,16 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CGELQ2 computes an LQ factorization of a complex m by n matrix A:
|
||||
*> A = L * Q.
|
||||
*> CGELQ2 computes an LQ factorization of a complex m-by-n matrix A:
|
||||
*>
|
||||
*> A = ( L 0 ) * Q
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a n-by-n orthogonal matrix;
|
||||
*> L is an lower-triangular m-by-m matrix;
|
||||
*> 0 is a m-by-(n-m) zero matrix, if m < n.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -96,7 +104,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -121,10 +129,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGELQ2( M, N, A, LDA, TAU, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N
|
||||
|
|
|
@ -34,7 +34,15 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> CGELQF computes an LQ factorization of a complex M-by-N matrix A:
|
||||
*> A = L * Q.
|
||||
*>
|
||||
*> A = ( L 0 ) * Q
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a N-by-N orthogonal matrix;
|
||||
*> L is an lower-triangular M-by-M matrix;
|
||||
*> 0 is a M-by-(N-M) zero matrix, if M < N.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -110,7 +118,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -135,10 +143,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGELQF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, LWORK, M, N
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*> \brief \b CGELQT
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
*> \brief \b CGELQT3
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*> \brief \b CGEMLQ
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
|
@ -143,7 +144,7 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> These details are particular for this LAPACK implementation. Users should not
|
||||
*> take them for granted. These details may change in the future, and are unlikely not
|
||||
*> take them for granted. These details may change in the future, and are not likely
|
||||
*> true for another LAPACK implementation. These details are relevant if one wants
|
||||
*> to try to understand the code. They are not part of the interface.
|
||||
*>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
*> \brief \b CGEMLQT
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*> \brief \b CGEMQR
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
|
@ -144,7 +145,7 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> These details are particular for this LAPACK implementation. Users should not
|
||||
*> take them for granted. These details may change in the future, and are unlikely not
|
||||
*> take them for granted. These details may change in the future, and are not likely
|
||||
*> true for another LAPACK implementation. These details are relevant if one wants
|
||||
*> to try to understand the code. They are not part of the interface.
|
||||
*>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*> \brief \b CGEQR
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
|
@ -17,7 +18,18 @@
|
|||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*> CGEQR computes a QR factorization of an M-by-N matrix A.
|
||||
*>
|
||||
*> CGEQR computes a QR factorization of a complex M-by-N matrix A:
|
||||
*>
|
||||
*> A = Q * ( R ),
|
||||
*> ( 0 )
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a M-by-M orthogonal matrix;
|
||||
*> R is an upper-triangular N-by-N matrix;
|
||||
*> 0 is a (M-N)-by-N zero matrix, if M > N.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -138,7 +150,7 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> These details are particular for this LAPACK implementation. Users should not
|
||||
*> take them for granted. These details may change in the future, and are unlikely not
|
||||
*> take them for granted. These details may change in the future, and are not likely
|
||||
*> true for another LAPACK implementation. These details are relevant if one wants
|
||||
*> to try to understand the code. They are not part of the interface.
|
||||
*>
|
||||
|
@ -160,10 +172,10 @@
|
|||
SUBROUTINE CGEQR( M, N, A, LDA, T, TSIZE, WORK, LWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd. --
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N, TSIZE, LWORK
|
||||
|
|
|
@ -33,8 +33,17 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CGEQR2 computes a QR factorization of a complex m by n matrix A:
|
||||
*> A = Q * R.
|
||||
*> CGEQR2 computes a QR factorization of a complex m-by-n matrix A:
|
||||
*>
|
||||
*> A = Q * ( R ),
|
||||
*> ( 0 )
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a m-by-m orthogonal matrix;
|
||||
*> R is an upper-triangular n-by-n matrix;
|
||||
*> 0 is a (m-n)-by-n zero matrix, if m > n.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -96,7 +105,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -121,10 +130,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGEQR2( M, N, A, LDA, TAU, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N
|
||||
|
|
|
@ -33,8 +33,18 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CGEQR2P computes a QR factorization of a complex m by n matrix A:
|
||||
*> A = Q * R. The diagonal entries of R are real and nonnegative.
|
||||
*> CGEQR2P computes a QR factorization of a complex m-by-n matrix A:
|
||||
*>
|
||||
*> A = Q * ( R ),
|
||||
*> ( 0 )
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a m-by-m orthogonal matrix;
|
||||
*> R is an upper-triangular n-by-n matrix with nonnegative diagonal
|
||||
*> entries;
|
||||
*> 0 is a (m-n)-by-n zero matrix, if m > n.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -97,7 +107,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -124,10 +134,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGEQR2P( M, N, A, LDA, TAU, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N
|
||||
|
|
|
@ -34,7 +34,16 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> CGEQRF computes a QR factorization of a complex M-by-N matrix A:
|
||||
*> A = Q * R.
|
||||
*>
|
||||
*> A = Q * ( R ),
|
||||
*> ( 0 )
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a M-by-M orthogonal matrix;
|
||||
*> R is an upper-triangular N-by-N matrix;
|
||||
*> 0 is a (M-N)-by-N zero matrix, if M > N.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -111,7 +120,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -136,10 +145,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, LWORK, M, N
|
||||
|
|
|
@ -33,8 +33,18 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CGEQRFP computes a QR factorization of a complex M-by-N matrix A:
|
||||
*> A = Q * R. The diagonal entries of R are real and nonnegative.
|
||||
*> CGEQR2P computes a QR factorization of a complex M-by-N matrix A:
|
||||
*>
|
||||
*> A = Q * ( R ),
|
||||
*> ( 0 )
|
||||
*>
|
||||
*> where:
|
||||
*>
|
||||
*> Q is a M-by-M orthogonal matrix;
|
||||
*> R is an upper-triangular N-by-N matrix with nonnegative diagonal
|
||||
*> entries;
|
||||
*> 0 is a (M-N)-by-N zero matrix, if M > N.
|
||||
*>
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -112,7 +122,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date December 2016
|
||||
*> \date November 2019
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -139,10 +149,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGEQRFP( M, N, A, LDA, TAU, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.7.0) --
|
||||
* -- LAPACK computational routine (version 3.9.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* December 2016
|
||||
* November 2019
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, LWORK, M, N
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
*> Specifies the form of the system of equations:
|
||||
*> = 'N': A * X = B (No transpose)
|
||||
*> = 'T': A**T * X = B (Transpose)
|
||||
*> = 'C': A**H * X = B (Conjugate transpose = Transpose)
|
||||
*> = 'C': A**H * X = B (Conjugate transpose)
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] EQUED
|
||||
|
@ -283,7 +283,7 @@
|
|||
*> information as described below. There currently are up to three
|
||||
*> pieces of information returned for each right-hand side. If
|
||||
*> componentwise accuracy is not requested (PARAMS(3) = 0.0), then
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
|
||||
*> ERR_BNDS_COMP is not accessed. If N_ERR_BNDS < 3, then at most
|
||||
*> the first (:,N_ERR_BNDS) entries are returned.
|
||||
*>
|
||||
*> The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
|
||||
|
@ -319,14 +319,14 @@
|
|||
*> \param[in] NPARAMS
|
||||
*> \verbatim
|
||||
*> NPARAMS is INTEGER
|
||||
*> Specifies the number of parameters set in PARAMS. If .LE. 0, the
|
||||
*> Specifies the number of parameters set in PARAMS. If <= 0, the
|
||||
*> PARAMS array is never referenced and default values are used.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] PARAMS
|
||||
*> \verbatim
|
||||
*> PARAMS is REAL array, dimension NPARAMS
|
||||
*> Specifies algorithm parameters. If an entry is .LT. 0.0, then
|
||||
*> Specifies algorithm parameters. If an entry is < 0.0, then
|
||||
*> that entry will be filled with default value used for that
|
||||
*> parameter. Only positions up to NPARAMS are accessed; defaults
|
||||
*> are used for higher-numbered parameters.
|
||||
|
@ -334,9 +334,9 @@
|
|||
*> PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
|
||||
*> refinement or not.
|
||||
*> Default: 1.0
|
||||
*> = 0.0 : No refinement is performed, and no error bounds are
|
||||
*> = 0.0: No refinement is performed, and no error bounds are
|
||||
*> computed.
|
||||
*> = 1.0 : Use the double-precision refinement algorithm,
|
||||
*> = 1.0: Use the double-precision refinement algorithm,
|
||||
*> possibly with doubled-single computations if the
|
||||
*> compilation environment does not support DOUBLE
|
||||
*> PRECISION.
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
*> \verbatim
|
||||
*> SCALE is REAL
|
||||
*> On exit, SCALE contains the scale factor. SCALE is chosen
|
||||
*> 0 <= SCALE <= 1 to prevent owerflow in the solution.
|
||||
*> 0 <= SCALE <= 1 to prevent overflow in the solution.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue