From maintainers-request at octave dot org Wed Apr 12 10:56:45 2006 Subject: Re: A plea for gsvd From: Pascal Dupuis To: David Bateman Cc: maintainers at octave dot org Date: Wed, 12 Apr 2006 10:43:11 -0500 --ew6BAiZeqk4r7MaW Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Apr 11, 2006 at 06:55:12PM +0200, David Bateman wrote: > This then comes down to two questions. 1) Who is going to do it, and 2) > How much are you willing to pay them. OK. I had time to rant, so I did a first try. Enclosed is a tar file containing : liboctave/gsvd.cc : generic interface, modelled after svd.cc src/DLD-Functions/{Cmplx,dble}GSVD.{h, cc} plus modified Makefile.in to add those 'features' I'm not a C++ guru, so I took the corresponding files from *SVD* and made something similar, no inheritance whatsoever. It was developped inside octave-2.1.73, with debian patches, and linked against lapack3. I guess this should not change the final result. The problem is that a call to gsvd results in a segmentation fault. I probably made some basic mistake with the function call, could someone please check the source for some obvious error ? TIA Pascal Dupuis -- Dr. ir. Pascal Dupuis, conseiller technologique/technological advisor U. C. Louvain AC/ADRE : http://www.adre.ucl.ac.be/ Place de L'Université, 1; B-1348 Louvain-la-Neuve Belgium Tél. +32-10-47 92 33; Fax +32-10-47 48 30 --ew6BAiZeqk4r7MaW Content-Type: application/x-tar Content-Disposition: attachment; filename="gsvd.tar" Content-Transfer-Encoding: quoted-printable src/Makefile.in=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=000000666=000000000=000000000=00= 00000041063=0010417206416=00012421=00 0=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00ustar =00root=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00root=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00#=0A# Makefile for octave's src directory=0A#=0A= # John W. Eaton=0A# jwe at bevo dot che dot wisc dot edu=0A# University of Wisconsin-Madis= on=0A# Department of Chemical Engineering=0A=0ATOPDIR =3D ..=0A=0Asrcdir = =3D at srcdir@=0Atop_srcdir =3D @top_srcdir@=0AVPATH =3D @srcdir@:@srcdir@/DL= D-FUNCTIONS: at srcdir@/OPERATORS:@srcdir@/TEMPLATE-INST=0A=0Ainclude $(TOPDIR= )/Makeconf=0A=0AINSTALL =3D at INSTALL@=0AINSTALL_PROGRAM =3D @INSTALL_PROGRA= M at =0AINSTALL_DATA =3D @INSTALL_DATA@=0A=0APT_FLAGS =3D -fexternal-templates= -fno-implicit-templates=0ACXXFLAGS_NO_PT_FLAGS =3D $(filter-out $(PT_FLAGS= ), $(ALL_CXXFLAGS))=0A=0A%.df : % dot cc=0A at echo making $@ from $<=0A @$(CXXCP= P) $(CPPFLAGS) $(CXXFLAGS_NO_PT_FLAGS) -DMAKE_BUILTINS $< \=0A | $(srcdir= )/mkdefs > $ at -t=0A @mv $@-t $@=0A=0A# How to make a .oct file from a .o fil= e:=0A=0Aifeq ($(ENABLE_DYNAMIC_LINKING), true)=0A ifdef CXXPICFLAG=0A %= =2Eoct : pic/%.o octave$(EXEEXT)=0A $(DL_LD) $(DL_LDFLAGS) -o $ at $< $(OCT= _LINK_DEPS)=0A else=0A %.oct : %.o octave$(EXEEXT)=0A $(DL_LD) $(DL_L= DFLAGS) -o $ at $< $(OCT_LINK_DEPS)=0A endif=0Aendif=0A=0AOPT_HANDLERS :=3D = DASPK-opts.cc DASRT-opts.cc DASSL-opts.cc \=0A LSODE-opts.cc NLEqn-opts.cc = Quad-opts.cc=0A=0ADLD_XSRC :=3D balance.cc besselj.cc betainc.cc chol.cc co= lloc.cc \=0A daspk.cc dasrt.cc dassl.cc det.cc eig.cc expm.cc fft.cc fft2.c= c \=0A fftn.cc fftw_wisdom.cc filter.cc find.cc fsolve.cc gammainc.cc \=0A = gcd.cc getgrent.cc getpwent.cc getrusage.cc givens.cc hess.cc \=0A inv.cc k= ron.cc lpsolve.cc lsode.cc lu.cc minmax.cc \=0A pinv.cc qr.cc quad.cc qz.cc= rand.cc schur.cc \=0A sort.cc sqrtm.cc svd.cc gsvd.cc syl.cc time.cc=0A=0A= DLD_SRC :=3D $(addprefix DLD-FUNCTIONS/, $(DLD_XSRC))=0A=0ADLD_OBJ :=3D $(p= atsubst %.cc, %.o, $(DLD_XSRC))=0A=0Aifeq ($(ENABLE_DYNAMIC_LINKING), true)= =0A OCT_FILES :=3D $(patsubst %.o, %.oct, $(DLD_OBJ))=0A ifdef CXXPICFLAG= =0A DLD_PICOBJ :=3D $(addprefix pic/, $(DLD_OBJ))=0A else=0A DLD_PIC= OBJ :=3D $(DLD_OBJ)=0A endif=0Aelse=0A DLD_STATIC_OBJ :=3D $(DLD_OBJ)=0Ae= ndif=0A=0AOV_INTTYPE_INC :=3D ov-base-int.h ov-int-traits.h ov-intx.h \=0A = ov-int8.h ov-int16.h ov-int32.h ov-int64.h \=0A ov-uint8.h ov-uint16.h ov-u= int32.h ov-uint64.h=0A=0AOV_INCLUDES :=3D ov-re-mat.h ov-cx-mat.h ov-ch-mat= =2Eh ov-cs-list.h ov-list.h \=0A ov-struct.h ov-scalar.h ov-range.h ov-comp= lex.h ov-va-args.h \=0A ov-colon.h ov-base.h ov-base-mat.h ov-base-scalar.h= \=0A ov-streamoff.h ov-str-mat.h ov-bool-mat.h ov-bool.h \=0A ov-file.h ov= -cell.h ov.h ov-fcn.h ov-builtin.h ov-dld-fcn.h \=0A ov-mapper.h ov-usr-fcn= =2Eh ov-fcn-handle.h ov-fcn-inline.h \=0A ov-typeinfo.h ov-type-conv.h \=0A= $(OV_INTTYPE_INC)=0A=0APT_INCLUDES :=3D pt.h pt-all.h pt-arg-list.h pt-ass= ign.h pt-binop.h \=0A pt-bp.h pt-cell.h pt-check.h pt-cmd.h pt-colon= =2Eh pt-const.h \=0A pt-decl.h pt-except.h pt-exp.h pt-fcn-handle.h pt-id.h= pt-idx.h \=0A pt-jump.h pt-loop.h pt-mat.h pt-misc.h pt-plot.h \=0A pt-pr-= code.h pt-select.h pt-stmt.h pt-unop.h pt-walk.h \=0A=0AINCLUDES :=3D Cell.= h base-list.h c-file-ptr-stream.h comment-list.h \=0A defun-dld.h defun-int= =2Eh defun.h dirfns.h dynamic-ld.h \=0A error.h file-io.h fn-cache.h gripes= =2Eh help.h input.h \=0A lex.h load-save.h ls-hdf5.h ls-mat-ascii.h ls-mat4= =2Eh \=0A ls-mat5.h ls-oct-ascii.h ls-oct-binary.h ls-utils.h \=0A oct-fstr= m.h oct-hist.h oct-iostrm.h oct-map.h oct-obj.h \=0A oct-prcstrm.h oct-proc= buf.h oct-stdstrm.h oct-stream.h \=0A oct-strstrm.h oct-lvalue.h oct.h octa= ve.h ops.h pager.h \=0A parse.h pr-output.h procstream.h sighandlers.h sigl= ist.h \=0A symtab.h sysdep.h token.h toplev.h unwind-prot.h utils.h \=0A va= riables.h version.h xdiv.h xpow.h $(OV_INCLUDES) $(PT_INCLUDES)=0A=0ATI_XSR= C :=3D Array-os.cc Array-sym.cc Array-tc.cc=0A=0ATI_SRC :=3D $(addprefix TE= MPLATE-INST/, $(TI_XSRC))=0A=0AINTTYPE_OP_XSRC :=3D op-int-concat.cc op-int= -conv.cc op-double-conv.cc \=0A op-i8-i8.cc op-i16-i16.cc op-i32-i32.cc op-= i64-i64.cc \=0A op-ui8-ui8.cc op-ui16-ui16.cc op-ui32-ui32.cc op-ui64-ui64.= cc=0A=0AOP_XSRC :=3D op-b-b.cc op-b-bm.cc op-bm-b.cc op-bm-bm.cc \=0A op-ce= ll.cc op-chm.cc op-cm-cm.cc op-cm-cs.cc op-cm-m.cc \=0A op-cm-s.cc op-cs-cm= =2Ecc op-cs-cs.cc op-cs-m.cc \=0A op-cs-s.cc op-fil-b.cc op-fil-bm.cc op-fi= l-cm.cc \=0A op-fil-cs.cc op-fil-m.cc op-fil-s.cc op-fil-lis.cc \=0A op-fil= -rec.cc op-fil-str.cc op-list.cc op-m-cm.cc \=0A op-m-cs.cc op-m-m.cc op-m-= s.cc op-range.cc op-s-cm.cc \=0A op-s-cs.cc op-s-m.cc op-s-s.cc op-str-m.cc= \=0A op-str-s.cc op-str-str.cc op-streamoff.cc op-struct.cc \=0A $(INTTYPE= _OP_XSRC)=0A=0AOP_SRC :=3D $(addprefix OPERATORS/, $(OP_XSRC))=0A=0AOP_INCL= UDES :=3D OPERATORS/op-int.h=0A=0AOV_INTTYPE_SRC :=3D \=0A ov-int8.cc ov-in= t16.cc ov-int32.cc ov-int64.cc \=0A ov-uint8.cc ov-uint16.cc ov-uint32.cc o= v-uint64.cc=0A=0AOV_SRC :=3D ov-base.cc ov-ch-mat.cc \=0A ov-cs-list.cc ov-= list.cc ov-re-mat.cc ov-cx-mat.cc \=0A ov-range.cc ov-scalar.cc ov-complex.= cc ov-str-mat.cc \=0A ov-streamoff.cc ov-struct.cc ov-va-args.cc \=0A ov-co= lon.cc ov-bool-mat.cc ov-bool.cc ov-file.cc ov-cell.cc \=0A ov.cc ov-fcn.cc= ov-builtin.cc ov-dld-fcn.cc ov-mapper.cc \=0A ov-usr-fcn.cc ov-fcn-handle.= cc ov-fcn-inline.cc ov-typeinfo.cc \=0A $(OV_INTTYPE_SRC)=0A=0APT_SRC :=3D = pt.cc pt-arg-list.cc pt-assign.cc pt-bp.cc pt-binop.cc \=0A pt-cell.cc pt-c= heck.cc pt-cmd.cc pt-colon.cc pt-const.cc \=0A pt-decl.cc pt-except.cc pt-e= xp.cc pt-fcn-handle.cc pt-id.cc \=0A pt-idx.cc pt-jump.cc pt-loop.cc pt-mat= =2Ecc pt-misc.cc \=0A pt-plot.cc pt-pr-code.cc pt-select.cc pt-stmt.cc pt-u= nop.cc=0A=0ADIST_SRC :=3D Cell.cc bitfcns.cc c-file-ptr-stream.cc comment-l= ist.cc \=0A cutils.c data.cc debug.cc defaults.cc defun.cc dirfns.cc \=0A d= ynamic-ld.cc error.cc file-io.cc fn-cache.cc gripes.cc \=0A help.cc input.c= c lex.l load-save.cc ls-hdf5.cc \=0A ls-mat-ascii.cc ls-mat4.cc ls-mat5.cc = ls-oct-ascii.cc \=0A ls-oct-binary.cc ls-utils.cc main.c mappers.cc matherr= =2Ec \=0A oct-fstrm.cc oct-hist.cc oct-iostrm.cc oct-map.cc \=0A oct-obj.cc= oct-prcstrm.cc oct-procbuf.cc oct-stdstrm.cc \=0A oct-stream.cc oct-strstr= m.cc oct-lvalue.cc pager.cc \=0A parse.y pr-output.cc procstream.cc sighand= lers.cc \=0A siglist.c strcasecmp.c strncase.c strfns.cc symtab.cc \=0A sys= calls.cc sysdep.cc token.cc toplev.cc \=0A unwind-prot.cc utils.cc variable= s.cc xdiv.cc xpow.cc \=0A $(OV_SRC) \=0A $(PT_SRC)=0A=0ASOURCES :=3D $(DIST= _SRC) $(OP_SRC) $(TI_SRC)=0A=0AEXTRAS :=3D ov-base-int.cc ov-base-mat.cc ov= -base-scalar.cc=0A=0AINCLUDES_FOR_INSTALL :=3D $(INCLUDES) $(EXTRAS)=0A=0AO= BJECTS_4 :=3D $(notdir $(SOURCES))=0AOBJECTS_3 :=3D $(patsubst %.l, %.o, $(= OBJECTS_4))=0AOBJECTS_2 :=3D $(patsubst %.y, %.o, $(OBJECTS_3))=0AOBJECTS_1= :=3D $(patsubst %.c, %.o, $(OBJECTS_2))=0AOBJECTS :=3D $(patsubst %.cc, %.= o, $(OBJECTS_1)) octave.o builtins.o ops.o=0A=0Aifeq ($(SHARED_LIBS), true)= =0A ifdef CXXPICFLAG=0A PICOBJ :=3D $(addprefix pic/, $(OBJECTS))=0A e= lse=0A PICOBJ :=3D $(OBJECTS)=0A endif=0Aendif=0A=0A# Ugh.=0A=0ADEP_5 := =3D $(SOURCES) $(DLD_SRC) builtins.cc ops.cc octave.cc main.c=0ADEP_4 :=3D = $(notdir $(DEP_5))=0ADEP_3 :=3D $(patsubst %.l, %.cc, $(DEP_4))=0ADEP_2 := =3D $(patsubst %.y, %.cc, $(DEP_3))=0ADEP_1 :=3D $(patsubst %.c, %.d, $(DEP= _2))=0AMAKEDEPS :=3D $(patsubst %.cc, %.d, $(DEP_1))=0A=0A# Some stupid egr= eps don't like empty elements in alternation patterns,=0A# so we have to re= peat ourselves because some stupid egreps don't like=0A# empty elements in = alternation patterns.=0A=0ADEFUN_PATTERN =3D "^[ \t]*DEF(CONSTFUN|CMD|UN|UN= _DLD|UN_TEXT|UN_MAPPER)[ \t]*\\("=0A=0ADLD_DEF_FILES :=3D $(patsubst %.cc, = %.df, $(DLD_XSRC))=0A=0ADEF_4 :=3D $(addprefix $(srcdir)/, $(SOURCES))=0ADE= F_3 :=3D $(notdir $(shell egrep -l $(DEFUN_PATTERN) $(DEF_4)))=0ADEF_2 :=3D= $(patsubst %.y, %.df, $(DEF_3))=0ADEF_1 :=3D $(patsubst %.l, %.df, $(DEF_2= ))=0ADEF_FILES :=3D $(patsubst %.cc, %.df, $(DEF_1)) $(DLD_DEF_FILES)=0A=0A= DEFVAR_PATTERN =3D "^[ \t]*DEF(VAR|CONS(T|TX))[ \t]*\\("=0A=0AVAR_5 :=3D $(= SOURCES) $(DLD_SRC)=0AVAR_4 :=3D $(addprefix $(srcdir)/, $(VAR_5))=0AVAR_3 = :=3D $(notdir $(shell egrep -l $(DEFVAR_PATTERN) $(VAR_4)))=0AVAR_2 :=3D $(= patsubst %.y, %, $(VAR_3))=0AVAR_1 :=3D $(patsubst %.l, %, $(VAR_2))=0AVAR_= FILES :=3D $(patsubst %.cc, %, $(VAR_1))=0A=0ADOC_FILES :=3D $(sort $(DEF_F= ILES) $(patsubst %, %.df, $(VAR_FILES)))=0A=0AOCTAVE_LFLAGS =3D -L$(TOPDIR)= /liboctave -L$(TOPDIR)/libcruft \=0A -L$(TOPDIR)/src $(RLD_FLAG)=0A=0AOCTA= VE_LIBS =3D $(LIBOCTINTERP) $(LIBOCTAVE) \=0A $(SPECIAL_MATH_LIB) $(LIBCRU= FT) \=0A $(LIBPLPLOT) $(LIBDLFCN)=0A=0AOCTINTERP_LINK_DEPS =3D \=0A -L../= liboctave $(LIBOCTAVE) -L../libcruft $(LIBCRUFT) $(LIBS) $(FLIBS)=0A=0AOCT_= LINK_DEPS =3D \=0A -L../libcruft $(LIBCRUFT) -L../liboctave $(LIBOCTAVE) \= =0A -L. $(LIBOCTINTERP) $(BLAS_LIBS) $(FFTW_LIBS) $(LIBS) $(FLIBS)=0A=0ADI= STFILES =3D Makefile.in ChangeLog mkdefs mkops mkgendoc \=0A DOCSTRINGS mkb= uiltins mk-oct-links \=0A defaults.h.in oct-conf.h.in octave.gperf oct-gper= f.h \=0A octave.cc parse.cc lex.cc y.tab.h \=0A $(INCLUDES) $(DIST_SRC) $(O= PT_HANDLERS) $(EXTRAS)=0A=0Aifeq ($(SHARED_LIBS), true)=0A BINDISTLIBS =3D= src/liboctinterp=0A BINDISTFILES =3D octave $(OCT_FILES) liboctinterp.$(S= HLEXT_VER)=0Aelse=0A BINDISTFILES =3D octave $(OCT_FILES)=0Aendif=0A=0Aall= : octave$(EXEEXT) stamp-oct-links DOCSTRINGS=0A.PHONY: all=0A=0Aobjects: $(= OBJECTS)=0A=0AXERBLA =3D ../libcruft/blas-xtra/xerbla.o=0Aifdef FPICFLAG=0A= PIC_XERBLA =3D ../libcruft/blas-xtra/pic/xerbla.o=0Aelse=0A PIC_XERBLA = =3D $(XERBLA)=0Aendif=0A=0Aifeq ($(SHARED_LIBS), true)=0A ifeq ($(STATIC_L= IBS), true)=0A LIBRARIES =3D liboctinterp.$(LIBEXT) liboctinterp.$(SHLEX= T_VER)=0A else=0A LIBRARIES =3D liboctinterp.$(SHLEXT_VER)=0A endif=0A= else=0A ifeq ($(STATIC_LIBS), true)=0A LIBRARIES =3D liboctinterp.$(LIB= EXT)=0A else=0A ## This is not going to work, but hey, you asked for it= =2E..=0A LIBRARIES =3D=0A endif=0Aendif=0A=0Alibraries: $(LIBRARIES)=0A= =2EPHONY: libraries=0A=0Aliboctinterp.$(LIBEXT): $(OBJECTS) $(XERBLA)=0A rm= -f $ at =0A $(TEMPLATE_AR) $(TEMPLATE_ARFLAGS) $@ $^=0A $(RANLIB) $@=0A=0Alib= octinterp.$(SHLEXT_VER): liboctinterp.$(SHLEXT)=0A rm -f $ at =0A $(LN_S) $< $= at =0A=0Aliboctinterp dot $(SHLEXT): $(PICOBJ) $(PIC_XERBLA)=0A rm -f $@=0A $(SH_= LD) $(SH_LDFLAGS) $(SONAME_FLAGS) -o $ at $^ $(OCTINTERP_LINK_DEPS)=0A=0Astam= p-oct-links: $(OCT_FILES)=0A if [ -n "$(OCT_FILES)" ]; then \=0A $(srcdir= )/mk-oct-links . $(DLD_DEF_FILES); \=0A fi=0A touch stamp-oct-links=0A=0Ast= amp-prereq: defaults.h oct-conf.h oct-gperf.h parse.cc lex.cc $(OPT_HANDLER= S)=0A touch stamp-prereq=0A=0Aoctave$(EXEEXT): stamp-prereq $(LIBRARIES) ma= in.o $(DLD_STATIC_OBJ)=0A $(LD_CXX) $(CPPFLAGS) $(ALL_CXXFLAGS) $(RDYNAMIC_= FLAG) \=0A $(ALL_LDFLAGS) -o $ at \=0A main.o $(DLD_STATIC_OBJ) \=0A $(OCTAVE= _LFLAGS) \=0A $(OCTAVE_LIBS) \=0A $(LEXLIB) $(BLAS_LIBS) $(FFTW_LIBS) $(LIB= S) $(FLIBS)=0A=0Astmp-pic: pic=0A at if [ -f stmp-pic ]; then \=0A true; \= =0A else \=0A echo "touch stmp-pic"; \=0A touch stmp-pic; \=0A fi=0A=0A= pic:=0A at if [ -d pic ]; then \=0A true; \=0A else \=0A echo "mkdir pic"= ; \=0A mkdir pic; \=0A fi=0A=0A$(PICOBJ): stmp-pic=0A=0Abuiltins.cc: $(DE= F_FILES) mkbuiltins=0A at echo making $@=0A @echo DEF_FILES =3D $(DEF_FILES)= =0A at echo VAR_FILES =3D $(VAR_FILES)=0A @echo $(DEF_FILES) > def-files=0A @= echo $(VAR_FILES) > var-files=0A at $(srcdir)/mkbuiltins def-files var-files = > $ at -t=0A @$(top_srcdir)/move-if-change $@-t $@=0A=0ADOCSTRINGS: gendoc$(BU= ILD_EXEEXT)=0A ./gendoc > $ at -t=0A mv $@-t $@=0A=0Adoc-files: $(DOC_FILES)= =0A at echo making $@=0A @echo DOC_FILES =3D $(DOC_FILES)=0A @echo $(DOC_FILE= S) > $ at -t=0A @mv $@-t $@=0A=0Agendoc.cc: doc-files mkgendoc=0A @echo making= $ at =0A @$(srcdir)/mkgendoc doc-files > $@-t=0A @$(top_srcdir)/move-if-chang= e $ at -t $@=0A=0Agendoc$(BUILD_EXEEXT): gendoc.cc=0A $(BUILD_CXX) $(BUILD_CXX= FLAGS) -o $ at $^ $(BUILD_LDFLAGS)=0A=0Aops.cc: $(OP_SRC) mkops=0A @echo maki= ng $ at from $(OP_SRC)=0A @$(srcdir)/mkops $(OP_SRC) > $@-t=0A @$(top_srcdir)= /move-if-change $ at -t $@=0A=0Astamp-liboctave-prereq:=0A $(MAKE) -C ../liboc= tave stamp-prereq=0A touch stamp-liboctave-prereq=0A=0A$(DEF_FILES): stamp-= liboctave-prereq mkdefs defun-int.h defun-dld.h defun.h defaults.h oct-conf= =2Eh=0A=0A$(MAKEDEPS): stamp-liboctave-prereq defaults.h oct-gperf.h oct-co= nf dot h=0A=0A at bsd_gcc_kluge_targets_frag@=0A=0Acheck: all=0A.PHONY: check=0A= =0Ainstall: install-bin install-oct install-lib install-inc=0A.PHONY: insta= ll=0A=0Ainstall-strip:=0A $(MAKE) INSTALL_PROGRAM=3D"$(INSTALL_PROGRAM) -s"= install=0A.PHONY: install-strip=0A=0Ainstall-bin:=0A $(top_srcdir)/mkinsta= lldirs $(DESTDIR)$(bindir)=0A rm -f $(DESTDIR)$(bindir)/octave$(EXEEXT)=0A = $(INSTALL_PROGRAM) octave$(EXEEXT) $(DESTDIR)$(bindir)/octave-$(version)$(E= XEEXT)=0A $(LN_S) octave-$(version)$(EXEEXT) $(DESTDIR)$(bindir)/octave$(EX= EEXT)=0A.PHONY: install-bin=0A=0Ainstall-oct:=0A if [ -n "$(OCT_FILES)" ]; = then \=0A $(top_srcdir)/mkinstalldirs $(DESTDIR)$(octfiledir); \=0A xfi= les=3D"$(OCT_FILES)"; \=0A for f in $$xfiles; do \=0A $(INSTALL_PROGR= AM) $$f $(DESTDIR)$(octfiledir)/$$f; \=0A done; \=0A $(srcdir)/mk-oct-l= inks $(DESTDIR)$(octfiledir) $(DLD_DEF_FILES); \=0A fi=0A.PHONY: install-oc= t=0A=0Ainstall-lib:=0A $(top_srcdir)/mkinstalldirs $(DESTDIR)$(octlibdir)= =0A if $(STATIC_LIBS); then \=0A rm -f $(DESTDIR)$(octlibdir)/liboctinter= p.$(LIBEXT); \=0A $(INSTALL_DATA) liboctinterp.$(LIBEXT) \=0A $(DESTD= IR)$(octlibdir)/liboctinterp.$(LIBEXT); \=0A $(RANLIB) $(DESTDIR)$(octlib= dir)/liboctinterp.$(LIBEXT); \=0A fi=0A if $(SHARED_LIBS); then \=0A rm -= f $(DESTDIR)$(octlibdir)/liboctinterp.$(SHLEXT_VER); \=0A $(INSTALL) libo= ctinterp.$(SHLLIB) \=0A $(DESTDIR)$(octlibdir)/liboctinterp.$(SHLLIB_VE= R); \=0A rm -f $(DESTDIR)$(octlibdir)/liboctinterp.$(SHLLIB); \=0A $(LN= _S) liboctinterp.$(SHLLIB_VER) $(DESTDIR)$(octlibdir)/liboctinterp.$(SHLLIB= ); \=0A if test x$(SHLBIN) !=3D x ; then \=0A rm -f $(DESTDIR)$(bind= ir)/liboctinterp.$(SHLBIN); \=0A $(INSTALL_PROGRAM) \=0A liboctin= terp.$(SHLBIN) $(DESTDIR)$(bindir)/liboctinterp.$(SHLBIN); \=0A fi; \=0A = fi=0A.PHONY: install-lib=0A=0Ainstall-inc:=0A $(top_srcdir)/mkinstalldirs $= (DESTDIR)$(octincludedir)/octave=0A for f in $(INCLUDES_FOR_INSTALL); do \= =0A rm -f $(DESTDIR)$(octincludedir)/octave/$$f; \=0A $(INSTALL_DATA) $= (srcdir)/$$f $(DESTDIR)$(octincludedir)/octave/$$f; \=0A done=0A for f in d= efaults.h oct-conf.h oct-gperf.h; do \=0A rm -f $(DESTDIR)$(octincludedir= )/octave/$$f; \=0A if [ -f $$f ]; then \=0A $(INSTALL_DATA) $$f $(DES= TDIR)$(octincludedir)/octave/$$f ; \=0A else \=0A $(INSTALL_DATA) $(s= rcdir)/$$f $(DESTDIR)$(octincludedir)/octave/$$f ; \=0A fi ; \=0A done=0A= =2EPHONY: install-inc=0A=0Auninstall:=0A rm -f $(DESTDIR)$(bindir)/octave$(= EXEEXT)=0A rm -f $(DESTDIR)$(octlibdir)/liboctinterp.$(LIBEXT)=0A rm -f $(D= ESTDIR)$(octlibdir)/liboctinterp.$(SHLLIB)=0A rm -f $(DESTDIR)$(octlibdir)/= liboctinterp.$(SHLLIB_VER)=0A if test x$(SHLBIN) !=3D x ; then \=0A rm -f= $(DESTDIR)$(bindir)/liboctinterp.$(SHLBIN); \=0A rm -f $(DESTDIR)$(bindi= r)/liboctinterp.$(SHLBIN_VER); \=0A fi=0A for f in $(INCLUDES_FOR_INSTALL) = defaults.h oct-conf.h; do \=0A rm -f $(DESTDIR)$(octincludedir)/octave/$$= f; \=0A done=0A.PHONY: uninstall=0A=0Atags: $(SOURCES) $(DLD_SRC)=0A ctags = $(SOURCES) $(DLD_SRC)=0A=0ATAGS: $(SOURCES) $(DLD_SRC)=0A etags $(SOURCES) = $(DLD_SRC)=0A=0Aclean:=0A rm -f *.$(LIBEXT) *.o *.d *.df *.oct pic/*.o stmp= -pic gendoc$(EXEEXT)=0A rm -f builtins.cc ops.cc defaults.h oct-conf.h def-= files var-files=0A -rmdir pic=0A if $(SHARED_LIBS); then rm -f *.$(SHLEXT_V= ER) *.$(SHLEXT); fi=0A.PHONY: clean=0A=0Amostlyclean: clean=0A.PHONY: mostl= yclean=0A=0Adistclean: clean=0A rm -f Makefile octave$(EXEEXT) .fname so_lo= cations=0A rm -f stamp-prereq stamp-liboctave-prereq stamp-oct-links=0A rm = -f doc-files gendoc.cc DOCSTRINGS=0A.PHONY: distclean=0A=0Amaintainer-clean= : distclean=0A rm -f tags TAGS y.tab.c y.tab.h y.output yy.lex.c lex.cc par= se.cc=0A rm -f oct-gperf.h $(OPT_HANDLERS)=0A.PHONY: maintainer-clean=0A=0A= dist: parse.cc lex.cc oct-gperf.h=0A ln $(DISTFILES) ../`cat ../.fname`/src= =0A for f in DLD-FUNCTIONS OPERATORS TEMPLATE-INST; do \=0A if [ -d ../`c= at ../.fname`/src/$$f ]; then \=0A true; \=0A else \=0A mkdir ../= `cat ../.fname`/src/$$f; \=0A fi; \=0A done=0A ln $(DLD_SRC) ../`cat ../.= fname`/src/DLD-FUNCTIONS=0A ln $(OP_SRC) ../`cat ../.fname`/src/OPERATORS= =0A ln $(OP_INCLUDES) ../`cat ../.fname`/src/OPERATORS=0A ln $(TI_SRC) ../`= cat ../.fname`/src/TEMPLATE-INST=0A rm -f parse.cc lex.cc y.tab.h y.output = yy.lex.c=0A rm -f oct-gperf.h defaults.h oct-conf.h *.d *.df builtins.cc=0A= =2EPHONY: dist=0A=0Aconf-dist:=0A ln octave.cc Makefile.in ../`cat ../.fnam= e`/src=0A.PHONY: conf-dist=0A=0Abin-dist:=0A if [ -n "$(BINDISTFILES)" ]; t= hen \=0A ln $(BINDISTFILES) ../`cat ../.fname`/src; \=0A fi=0A if [ -n "$= (OCT_FILES)" ]; then \=0A $(srcdir)/mk-oct-links -p $(octfiledir) \=0A = $(addprefix $(srcdir)/, $(DLD_SRC)) \=0A > ../`cat ../.fname`/src/lin= ks-to-make; \=0A fi=0A if [ -n "$(BINDISTLIBS)" ]; then \=0A echo $(BINDI= STLIBS) >> ../`cat ../.fname`/LIBRARIES; \=0A fi=0A.PHONY: bin-dist=0A=0A# = Special rules -- these files need special things to be defined.=0A=0A$(OPT_= HANDLERS) : %.cc : $(top_srcdir)/liboctave/%.in $(top_srcdir)/mk-opts.pl=0A= at echo making $@ from $<=0A @perl $(top_srcdir)/mk-opts.pl --opt-handler-fc= ns $< > $ at -t=0A @$(top_srcdir)/move-if-change $@-t $@=0A=0Aparse.cc : parse= =2Ey=0A at echo "expect 88 shift/reduce conflicts"=0A $(YACC) $(YFLAGS) $<=0A= at $(top_srcdir)/move-if-change y.tab.c $(@F)=0A=0Alex.cc : lex.l=0A $(LEX) = $(LFLAGS) $< > $( at F)=0A=0Adefaults dot h: defaults.h.in ../Makeconf Makefile=0A= at $(do-subst-default-vals)=0A=0Aoct-conf dot h: oct-conf.h.in ../Makeconf Makef= ile=0A at $(do-subst-config-vals)=0A=0Aoct-gperf dot h: octave.gperf=0A @echo "ma= king $ at from $<"=0A @$(GPERF) -t -C -D -G -L ANSI-C \=0A -H o= ctave_kw_hash -N octave_kw_lookup \=0A $< | $(SED) 's,lookup\[,gperf_look= up[,' > $ at -t=0A @$(top_srcdir)/move-if-change $@-t $@=0A=0Acheck: all=0A.PH= ONY: check=0A=0A# If missing, GNU make attempts to create them in the rever= se of the=0A# order in which they are listed here. We rely on that fact to= ensure=0A# that defaults.h is created before trying to create the .d files= =2E=0A# Hmm. I wonder if we can count on that...=0A=0Aifndef omit_deps=0A-= include $(MAKEDEPS) stamp-prereq=0Aendif=0A=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00src/DLD-FUNCTIONS/gsvd.cc=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=000000644=000000000=000000000=0000000013204=001= 0417206356=00013572=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00ustar =00root=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00root=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00/*=0A=0ACopyright (C) 1996, 1997 John W. Eaton=0ACopyright (C) = 2006 Pascal Dupuis=0A=0AThis file is part of Octave.=0A=0AOctave is free so= ftware; you can redistribute it and/or modify it=0Aunder the terms of the G= NU General Public License as published by the=0AFree Software Foundation; e= ither version 2, or (at your option) any=0Alater version.=0A=0AOctave is di= stributed in the hope that it will be useful, but WITHOUT=0AANY WARRANTY; w= ithout even the implied warranty of MERCHANTABILITY or=0AFITNESS FOR A PART= ICULAR PURPOSE. See the GNU General Public License=0Afor more details.=0A= =0AYou should have received a copy of the GNU General Public License=0Aalon= g with Octave; see the file COPYING. If not, write to the Free=0ASoftware = Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA=0A02110-1301,= USA.=0A=0A*/=0A=0A#ifdef HAVE_CONFIG_H=0A#include =0A#endif=0A= =0A#include "CmplxGSVD.h"=0A#include "dbleGSVD.h"=0A=0A#include "defun-dld.= h"=0A#include "error.h"=0A#include "gripes.h"=0A#include "oct-obj.h"=0A#inc= lude "pr-output.h"=0A#include "utils.h"=0A=0ADEFUN_DLD (gsvd, args, nargout= ,=0A "-*- texinfo -*-\n\=0A at deftypefn {Loadable Function} {@var{s} =3D} gs= vd ( at var{a}, @var{b})\n\=0A@deftypefnx {Loadable Function} {[@var{u}, @var{= v}, at var{c}, @var{s}, @var{x}] =3D} gsvd (@var{a}, @var{b})\n\=0A@cindex ge= neralised singular value decomposition\n\=0ACompute the generalised singula= r value decomposition of ( at var{a}, @var{a})\n\=0A@iftex\n\=0A@tex\n\=0A$$\n= \=0A A =3D U C X^H\n\=0A B =3D V S X^H\n\=0A C*C + S*S =3D eye(size(B))\n\= =0A$$\n\=0A at end tex\n\=0A@end iftex\n\=0A@ifinfo\n\=0A\n\=0A@example\n\=0Aa= =3D u * c * x'\n\=0Ab =3D v * s * x'\n\=0Ac * c + s * s =3D eye(size(b))\n= \=0A at end example\n\=0A@end ifinfo\n\=0A\n\=0AThe function @code{gsvd} norma= lly returns the vector of singular values.\n\=0AIf asked for three return v= alues, it computes\n\=0A at iftex\n\=0A@tex\n\=0A$U$, $S$, and $V$.\n\=0A@end = tex\n\=0A at end iftex\n\=0A@ifinfo\n\=0AU, S, and V.\n\=0A@end ifinfo\n\=0AFo= r example,\n\=0A\n\=0A at example\n\=0Asvd (hilb (3))\n\=0A@end example\n\=0A\= n\=0A at noindent\n\=0Areturns\n\=0A\n\=0A@example\n\=0Aans =3D\n\=0A\n\=0A 1= =2E4083189\n\=0A 0.1223271\n\=0A 0 dot 0026873\n\=0A at end example\n\=0A\n\=0A@= noindent\n\=0Aand\n\=0A\n\=0A at example\n\=0A[u, s, v] =3D svd (hilb (3))\n\= =0A at end example\n\=0A\n\=0A@noindent\n\=0Areturns\n\=0A\n\=0A@example\n\=0A= u =3D\n\=0A\n\=0A -0.82704 0.54745 0.12766\n\=0A -0.45986 -0.52829 = -0.71375\n\=0A -0.32330 -0.64901 0.68867\n\=0A\n\=0As =3D\n\=0A\n\=0A = 1.40832 0.00000 0.00000\n\=0A 0.00000 0.12233 0.00000\n\=0A 0.00000 = 0.00000 0.00269\n\=0A\n\=0Av =3D\n\=0A\n\=0A -0.82704 0.54745 0.12766= \n\=0A -0.45986 -0.52829 -0.71375\n\=0A -0.32330 -0.64901 0.68867\n\= =0A at end example\n\=0A\n\=0AIf given a second argument, @code{svd} returns a= n economy-sized\n\=0Adecomposition, eliminating the unnecessary rows or col= umns of at var{u} or\n\=0A@var{v}.\n\=0A@end deftypefn")=0A{=0A octave_value= _list retval;=0A=0A int nargin =3D args.length ();=0A=0A if (nargin < 2 |= | nargin > 2 || (nargout > 1 && (nargout < 5 || nargout > 5)))=0A {=0A = print_usage ("gsvd");=0A return retval;=0A }=0A=0A octave_valu= e argA =3D args(0), argB =3D args(1);=0A=0A int nr =3D argA.rows ();=0A i= nt nc =3D argA.columns ();=0A=0A int nn =3D argB.rows ();=0A int np =3D a= rgB.columns ();=0A =0A if (nr =3D=3D 0 || nc =3D=3D 0)=0A {=0A if= (nargout =3D=3D 5)=0A {=0A retval(4) =3D identity_matrix (nr, nr);=0A = retval(3) =3D identity_matrix (nr, nr);=0A retval(2) =3D Matrix (nr, nc);= =0A retval(1) =3D identity_matrix (nc, nc);=0A retval(0) =3D identity_m= atrix (nc, nc);=0A }=0A else=0A retval(0) =3D Matrix (0, 1);=0A }= =0A else=0A {=0A if ((nc !=3D np) || (nn !=3D np))=0A {=0A print= _usage ("gsvd");=0A return retval;=0A }=0A=0A GSVD::type type =3D ((= nargout =3D=3D 0 || nargout =3D=3D 1)=0A ? GSVD::sigma_only=0A : GSVD::= economy );=0A=0A if (argA.is_real_type () && argB.is_real_type ())=0A = {=0A Matrix tmpA =3D argA.matrix_value ();=0A Matrix tmpB =3D argB.matr= ix_value ();=0A=0A if (! error_state)=0A {=0A if (tmpA.any_elem= ent_is_inf_or_nan ())=0A {=0A error ("gsvd: cannot take GSVD of matrix = containing Inf or NaN values"); =0A return retval;=0A }=0A =0A = if (tmpB.any_element_is_inf_or_nan ())=0A {=0A error ("gsvd: cannot= take GSVD of matrix containing Inf or NaN values"); =0A return retval;= =0A }=0A =0A=0A GSVD result (tmpA, tmpB, type);=0A=0A //= DiagMatrix sigma =3D result.singular_values ();=0A=0A if (nargout = =3D=3D 0 || nargout =3D=3D 1)=0A {=0A // retval(0) =3D sigmaA.diag ();= =0A /* warning : what should we return ??? */=0A }=0A else=0A {= =0A retval(4) =3D result.right_singular_matrix ();=0A retval(3) =3D r= esult.singular_values_B ();=0A retval(2) =3D result.singular_values_A ()= ;=0A retval(1) =3D result.left_singular_matrix_B ();=0A retval(0) =3D= result.left_singular_matrix_A ();=0A }=0A }=0A }=0A else if (arg= A.is_complex_type () || argB.is_complex_type ())=0A {=0A ComplexMatrix ct= mpA =3D argA.complex_matrix_value ();=0A ComplexMatrix ctmpB =3D argB.com= plex_matrix_value ();=0A=0A if (! error_state)=0A {=0A if (ctmp= A.any_element_is_inf_or_nan ())=0A {=0A error ("gsvd: cannot take GSVD = of matrix containing Inf or NaN values"); =0A return retval;=0A }=0A = if (ctmpB.any_element_is_inf_or_nan ())=0A {=0A error ("gsvd: canno= t take GSVD of matrix containing Inf or NaN values"); =0A return retval;= =0A }=0A=0A ComplexGSVD result (ctmpA, ctmpB, type);=0A=0A // = DiagMatrix sigma =3D result.singular_values ();=0A=0A if (nargout =3D= =3D 0 || nargout =3D=3D 1)=0A {=0A // retval(0) =3D sigma.diag (); =0A = /* warning : what should we return ??? */=0A }=0A else=0A {=0A = retval(4) =3D result.right_singular_matrix ();=0A retval(3) =3D result= =2Esingular_values_B ();=0A retval(2) =3D result.singular_values_A ();= =0A retval(1) =3D result.left_singular_matrix_B ();=0A retval(0) =3D = result.left_singular_matrix_A ();=0A }=0A }=0A }=0A else=0A {=0A = gripe_wrong_type_arg ("gsvd", argA);=0A gripe_wrong_type_arg ("gsvd", a= rgB);=0A return retval;=0A }=0A }=0A=0A return retval;=0A}=0A=0A/*=0A= ;;; Local Variables: ***=0A;;; mode: C++ ***=0A;;; End: ***=0A*/=0A=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00liboctave/CmplxGSVD.cc=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=000000644=000000000=000000000=00000= 00013164=0010417210527=00013606=00 0=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00ustar =00root=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00root=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00/*=0A=0ACopyright (C) 1996, 1997 John W. Eaton=0ACo= pyright (C) 2006 Pascal Dupuis=0AThis file is part of Octave.=0A=0AOctave i= s free software; you can redistribute it and/or modify it=0Aunder the terms= of the GNU General Public License as published by the=0AFree Software Foun= dation; either version 2, or (at your option) any=0Alater version.=0A=0AOct= ave is distributed in the hope that it will be useful, but WITHOUT=0AANY WA= RRANTY; without even the implied warranty of MERCHANTABILITY or=0AFITNESS F= OR A PARTICULAR PURPOSE. See the GNU General Public License=0Afor more det= ails.=0A=0AYou should have received a copy of the GNU General Public Licens= e=0Aalong with Octave; see the file COPYING. If not, write to the Free=0AS= oftware Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA=0A021= 10-1301, USA.=0A=0A*/=0A=0A#if defined (__GNUG__) && defined (USE_PRAGMA_IN= TERFACE_IMPLEMENTATION)=0A#pragma implementation=0A#endif=0A=0A#ifdef HAVE_= CONFIG_H=0A#include =0A#endif=0A=0A#include =0A=0A#incl= ude "CmplxGSVD.h"=0A#include "f77-fcn.h"=0A#include "lo-error.h"=0A=0Aexter= n "C"=0A{=0A F77_RET_T=0A F77_FUNC (zggsvd, ZGGSVD) =0A (=0A F77_C= ONST_CHAR_ARG_DECL, // JOBU (input) CHARACTER*1=0A F77_CONST_CHAR_A= RG_DECL, // JOBV (input) CHARACTER*1=0A F77_CONST_CHAR_ARG_DECL, /= / JOBQ (input) CHARACTER*1=0A const int&, // M (input) INTEG= ER=0A const int&, // N (input) INTEGER=0A const int&, // P= (input) INTEGER=0A int &, // K (output) INTEGER=0A = int &, // L (output) INTEGER=0A Complex*, // A (input/o= utput) COMPLEX*16 array, dimension (LDA,N)=0A const int&, // LDA = (input) INTEGER=0A Complex*, // B (input/output) COMPLEX*16 ar= ray, dimension (LDB,N)=0A const int&, // LDB (input) INTEGER=0A = double*, // ALPHA (output) DOUBLE PRECISION array, dimension (N)=0A= double*, // BETA (output) DOUBLE PRECISION array, dimension (N)= =0A Complex*, // U (output) COMPLEX*16 array, dimension (LDU,M)= =0A const int&, // LDU (input) INTEGER =0A Complex*, // V = (output) COMPLEX*16 array, dimension (LDV,P)=0A const int&, // LD= V (input) INTEGER=0A Complex*, // Q (output) COMPLEX*16 arr= ay, dimension (LDQ,N) =0A const int&, // LDQ (input) INTEGER=0A = Complex*, // WORK (workspace) COMPLEX*16 array=0A double*, //= RWORK (workspace) DOUBLE PRECISION array=0A int*, // IWORK (wor= kspace/output) INTEGER array, dimension (N)=0A int& // INFO (outpu= t)INTEGER=0A F77_CHAR_ARG_LEN_DECL=0A F77_CHAR_ARG_LEN_DECL=0A = );=0A}=0A=0AComplexMatrix=0AComplexGSVD::left_singular_matrix_A (void) cons= t=0A{=0A if (type_computed =3D=3D GSVD::sigma_only)=0A {=0A (*curr= ent_liboctave_error_handler)=0A ("dbleGSVD: U not computed because type =3D= =3D GSVD::sigma_only");=0A return ComplexMatrix ();=0A }=0A else= =0A return left_smA;=0A}=0A=0AComplexMatrix=0AComplexGSVD::left_singular= _matrix_B (void) const=0A{=0A if (type_computed =3D=3D GSVD::sigma_only)= =0A {=0A (*current_liboctave_error_handler)=0A ("dbleGSVD: V not co= mputed because type =3D=3D GSVD::sigma_only");=0A return ComplexMatrix= ();=0A }=0A else=0A return left_smB;=0A}=0A=0AComplexMatrix=0ACompl= exGSVD::right_singular_matrix (void) const=0A{=0A if (type_computed =3D=3D= GSVD::sigma_only)=0A {=0A (*current_liboctave_error_handler)=0A ("= dbleSVD: X not computed because type =3D=3D GSVD::sigma_only");=0A ret= urn ComplexMatrix ();=0A }=0A else=0A return right_sm;=0A}=0A=0Aint= =0AComplexGSVD::init (const ComplexMatrix& a, const ComplexMatrix& b, =0A = GSVD::type gsvd_type)=0A{=0A int info;=0A=0A int m =3D a.rows ();=0A = int n =3D a.cols ();=0A int p =3D b.rows ();=0A =0A ComplexMatrix atmp = =3D a;=0A Complex *tmp_dataA =3D atmp.fortran_vec ();=0A =0A ComplexMatr= ix btmp =3D b;=0A Complex *tmp_dataB =3D btmp.fortran_vec ();=0A=0A int m= in_mn =3D m < n ? m : n;=0A=0A char jobu =3D 'U';=0A char jobv =3D 'V';= =0A char jobq =3D 'Q';=0A=0A int nrow_u =3D m;=0A int nrow_v =3D p;=0A = int nrow_q =3D n;=0A=0A int k, l;=0A=0A switch (gsvd_type)=0A {=0A=0A = case GSVD::sigma_only:=0A=0A // Note: for this case, both jobu and= jobv should be 'N', but=0A // there seems to be a bug in dgesvd from = Lapack V2.0. To=0A // demonstrate the bug, set both jobu and jobv to = 'N' and find=0A // the singular values of [eye(3), eye(3)]. The resul= t is=0A // [-sqrt(2), -sqrt(2), -sqrt(2)].=0A //=0A // For L= apack 3.0, this problem seems to be fixed.=0A=0A jobu =3D 'N';=0A = jobv =3D 'N';=0A jobq =3D 'N';=0A nrow_u =3D nrow_v =3D nrow_q = =3D 1;=0A break;=0A=0A default:=0A break;=0A }=0A=0A type_= computed =3D gsvd_type;=0A=0A if (! (jobu =3D=3D 'N' || jobu =3D=3D 'O')) = {=0A left_smA.resize (nrow_u, m);=0A }=0A =0A Complex *u =3D left_smA= =2Efortran_vec ();=0A=0A if (! (jobv =3D=3D 'N' || jobv =3D=3D 'O')) {=0A = left_smB.resize (nrow_v, p);=0A }=0A=0A Complex *v =3D left_smB.fortra= n_vec ();=0A=0A sigmaA.resize (n, n);=0A double *c_vec =3D sigmaA.fortra= n_vec ();=0A=0A sigmaB.resize (n, n);=0A double *s_vec =3D sigmaB.fortra= n_vec ();=0A=0A if (! (jobq =3D=3D 'N' || jobq =3D=3D 'O')) {=0A right_= sm.resize (nrow_q, n);=0A }=0A Complex *q =3D right_sm.fortran_vec (); = =0A =0A int lwork =3D 3*n;=0A lwork =3D lwork > m ? lwork : m;=0A lwork= =3D lwork > p ? lwork : p;=0A Array work (lwork);=0A Array rwork(2*n);=0A Array iwork (n);=0A=0A F77_XFCN (zggsvd, = ZGGSVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),=0A F77_CONST_CHAR_ARG2 (&jo= bv, 1),=0A F77_CONST_CHAR_ARG2 (&jobq, 1),=0A m, n, p, k, l, = tmp_dataA, m, =0A tmp_dataB, p, c_vec, s_vec, u, nrow_u, =0A = v, nrow_v, q, nrow_q, work.fortran_vec (), =0A rwork.fortran_vec (),= iwork.fortran_vec (), =0A info=0A F77_CHAR_ARG_LEN (1)=0A = F77_CHAR_ARG_LEN (1)));=0A =0A if (f77_exception_encountered)=0A = (*current_liboctave_error_handler) ("unrecoverable error in zggsvd");=0A=0A= return info;=0A}=0A=0A/*=0A;;; Local Variables: ***=0A;;; mode: C++ ***= =0A;;; End: ***=0A*/=0A=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00liboctave/CmplxGSVD.d=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=000000644=000000000=000000000=00= 00000022574=0010417210614=00013446=00 0=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00ustar =00root=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00root=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00pic/CmplxGSVD.o CmplxGSVD.o CmplxGSVD.df CmplxGS= VD.d: CmplxGSVD.cc ../config.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../.= =2E/../../include/c++/4.0.3/iostream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.= 3/../../../../include/c++/4.0.3/i486-linux-gnu/bits/c++config.h \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/b= its/os_defines.h \=0A /usr/include/features.h /usr/include/sys/cdefs.h \= =0A /usr/include/gnu/stubs.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../..= /../../include/c++/4.0.3/ostream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/..= /../../../include/c++/4.0.3/ios \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../= =2E./../../include/c++/4.0.3/iosfwd \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3= /../../../../include/c++/4.0.3/i486-linux-gnu/bits/c++locale.h \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cstring \=0A /us= r/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cstddef \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \=0A /usr/include/strin= g.h /usr/include/xlocale.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../..= /../include/c++/4.0.3/cstdio \=0A /usr/include/stdio.h /usr/include/bits/t= ypes.h \=0A /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \= =0A /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \= =0A /usr/include/bits/wchar.h /usr/include/gconv.h \=0A /usr/lib/gcc/i486= -linux-gnu/4.0.3/include/stdarg.h \=0A /usr/include/bits/stdio_lim.h /usr/= include/bits/sys_errlist.h \=0A /usr/include/bits/stdio.h \=0A /usr/lib/g= cc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/clocale \=0A /usr/in= clude/locale.h /usr/include/bits/locale.h \=0A /usr/include/langinfo.h /us= r/include/nl_types.h /usr/include/iconv.h \=0A /usr/include/libintl.h \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linu= x-gnu/bits/c++io.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../incl= ude/c++/4.0.3/i486-linux-gnu/bits/gthr.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/bits/gthr-default.h \=0A= /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \=0A /us= r/include/bits/sched.h /usr/include/bits/time.h \=0A /usr/include/signal.h= /usr/include/bits/sigset.h \=0A /usr/include/bits/pthreadtypes.h /usr/inc= lude/bits/initspin.h \=0A /usr/include/bits/sigthread.h /usr/include/unist= d.h \=0A /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \= =0A /usr/include/bits/confname.h getopt.h \=0A /usr/lib/gcc/i486-linux-gn= u/4.0.3/../../../../include/c++/4.0.3/cctype \=0A /usr/include/ctype.h /us= r/include/endian.h /usr/include/bits/endian.h \=0A /usr/lib/gcc/i486-linux= -gnu/4.0.3/../../../../include/c++/4.0.3/bits/stringfwd.h \=0A /usr/lib/gc= c/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/postypes.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cwchar \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/ctime \= =0A /usr/include/stdint.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../..= /../include/c++/4.0.3/bits/functexcept.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/exception_defines.h \=0A /usr/lib/gcc/= i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/exception \=0A /usr/lib= /gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/char_traits.h = \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/= stl_algobase.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/= c++/4.0.3/climits \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h = \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \=0A /usr/incl= ude/limits.h /usr/include/bits/posix1_lim.h \=0A /usr/include/bits/local_l= im.h /usr/include/linux/limits.h \=0A /usr/include/bits/posix2_lim.h /usr/= include/bits/xopen_lim.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../.= =2E/include/c++/4.0.3/cstdlib \=0A /usr/include/stdlib.h /usr/include/bits= /waitflags.h \=0A /usr/include/bits/waitstatus.h /usr/include/sys/types.h = \=0A /usr/include/sys/select.h /usr/include/bits/select.h \=0A /usr/inclu= de/sys/sysmacros.h /usr/include/alloca.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/bits/stl_pair.h \=0A /usr/lib/gcc/i486= -linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/cpp_type_traits.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_i= terator_base_types.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../in= clude/c++/4.0.3/bits/stl_iterator_base_funcs.h \=0A /usr/lib/gcc/i486-linu= x-gnu/4.0.3/../../../../include/c++/4.0.3/bits/concept_check.h \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_iterator= =2Eh \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/= debug/debug.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c= ++/4.0.3/cassert \=0A /usr/include/assert.h \=0A /usr/lib/gcc/i486-linux-= gnu/4.0.3/../../../../include/c++/4.0.3/bits/localefwd.h \=0A /usr/lib/gcc= /i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/ios_base.h \=0A /= usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/atomici= ty.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/= i486-linux-gnu/bits/atomic_word.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/.= =2E/../../../include/c++/4.0.3/bits/locale_classes.h \=0A /usr/lib/gcc/i48= 6-linux-gnu/4.0.3/../../../../include/c++/4.0.3/string \=0A /usr/lib/gcc/i= 486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/memory \=0A /usr/lib/gcc= /i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/allocator.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-= gnu/bits/c++allocator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/ext/new_allocator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.= 0.3/../../../../include/c++/4.0.3/new \=0A /usr/lib/gcc/i486-linux-gnu/4.0= =2E3/../../../../include/c++/4.0.3/bits/stl_construct.h \=0A /usr/lib/gcc/= i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_uninitialized.h= \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits= /stl_raw_storage_iter.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/limits \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../= =2E./include/c++/4.0.3/bits/stl_function.h \=0A /usr/lib/gcc/i486-linux-gn= u/4.0.3/../../../../include/c++/4.0.3/bits/basic_string.h \=0A /usr/lib/gc= c/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/algorithm \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_algo.h \= =0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/s= tl_heap.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4= =2E0.3/bits/stl_tempbuf.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../= =2E./include/c++/4.0.3/bits/basic_string.tcc \=0A /usr/lib/gcc/i486-linux-= gnu/4.0.3/../../../../include/c++/4.0.3/streambuf \=0A /usr/lib/gcc/i486-l= inux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/streambuf.tcc \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/basic_ios.h= \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits= /streambuf_iterator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../i= nclude/c++/4.0.3/bits/locale_facets.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0= =2E3/../../../../include/c++/4.0.3/cwctype \=0A /usr/include/wctype.h \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linu= x-gnu/bits/ctype_base.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/i486-linux-gnu/bits/ctype_inline.h \=0A /usr/lib/gcc/i4= 86-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/codecvt.h \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/b= its/time_members.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../incl= ude/c++/4.0.3/i486-linux-gnu/bits/messages_members.h \=0A /usr/lib/gcc/i48= 6-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/basic_ios.tcc \=0A /u= sr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/ostream.= tcc \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/l= ocale \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3= /bits/locale_facets.tcc \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/typeinfo \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../.= =2E/../include/c++/4.0.3/istream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/..= /../../../include/c++/4.0.3/bits/istream.tcc \=0A CmplxGSVD.h dDiagMatrix.= h MDiagArray2.h DiagArray2.h Array.h \=0A dim-vector.h lo-sstream.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/sstream \= =0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/s= stream.tcc \=0A lo-utils.h oct-cmplx.h \=0A /usr/lib/gcc/i486-linux-gnu/4= =2E0.3/../../../../include/c++/4.0.3/complex \=0A /usr/lib/gcc/i486-linux-= gnu/4.0.3/../../../../include/c++/4.0.3/cmath \=0A /usr/include/math.h /us= r/include/bits/huge_val.h \=0A /usr/include/bits/huge_valf.h /usr/include/= bits/huge_vall.h \=0A /usr/include/bits/inf.h /usr/include/bits/nan.h \=0A= /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \=0A /usr/incl= ude/bits/mathinline.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../i= nclude/c++/4.0.3/bits/cmath.tcc \=0A ../libcruft/misc/lo-error.h MArray2.h= Array2.h MArray-defs.h \=0A dRowVector.h MArray.h mx-defs.h dColVector.h = CMatrix.h mx-op-defs.h \=0A mx-inlines.cc dbleGSVD.h dMatrix.h ../libcruft= /misc/f77-fcn.h \=0A ../libcruft/misc/quit.h /usr/include/bits/signum.h \= =0A /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \=0A /usr/i= nclude/bits/sigcontext.h /usr/include/asm/sigcontext.h \=0A /usr/include/a= sm-i486/sigcontext.h /usr/include/linux/compiler.h \=0A /usr/include/bits/= sigstack.h /usr/include/sys/ucontext.h \=0A /usr/include/setjmp.h /usr/inc= lude/bits/setjmp.h=0A=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00liboctave/CmplxGSVD.h=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= 0000644=000000000=000000000=0000000005043=0010417210605=00013442=00 0=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00ustar = =00root=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00root=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00/*=0A=0ACopyright = (C) 1996, 1997 John W. Eaton=0ACopyright (C) 2006 Pascal Dupuis=0A=0AThis = file is part of Octave.=0A=0AOctave is free software; you can redistribute = it and/or modify it=0Aunder the terms of the GNU General Public License as = published by the=0AFree Software Foundation; either version 2, or (at your = option) any=0Alater version.=0A=0AOctave is distributed in the hope that it= will be useful, but WITHOUT=0AANY WARRANTY; without even the implied warra= nty of MERCHANTABILITY or=0AFITNESS FOR A PARTICULAR PURPOSE. See the GNU = General Public License=0Afor more details.=0A=0AYou should have received a = copy of the GNU General Public License=0Aalong with Octave; see the file CO= PYING. If not, write to the Free=0ASoftware Foundation, Inc., 51 Franklin = Street, Fifth Floor, Boston, MA=0A02110-1301, USA.=0A=0A*/=0A=0A#if !define= d (octave_ComplexGSVD_h)=0A#define octave_ComplexGSVD_h 1=0A=0A#if defined = (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)=0A#pragma inter= face=0A#endif=0A=0A#include =0A=0A#include "dDiagMatrix.h"=0A#inc= lude "CMatrix.h"=0A#include "dbleGSVD.h"=0A=0Aclass=0AComplexGSVD=0A{=0Apub= lic:=0A=0A ComplexGSVD (void) { }=0A=0A ComplexGSVD (const ComplexMatrix&= a, const ComplexMatrix& b, =0A GSVD::type gsvd_type =3D GSVD::econ= omy) =0A { =0A init (a, b, gsvd_type); =0A }=0A=0A ComplexGSVD = (const ComplexMatrix& a, const ComplexMatrix& b, =0A int& info, GSVD= ::type gsvd_type =3D GSVD::economy)=0A {=0A info =3D init (a, b, gs= vd_type);=0A }=0A=0A ComplexGSVD (const ComplexGSVD& a)=0A : type_co= mputed (a.type_computed),=0A sigmaA (a.sigmaA), sigmaB (a.sigmaB), =0A= left_smA (a.left_smA), left_smB (a.left_smB), right_sm (a.right_sm) {= }=0A=0A ComplexGSVD& operator =3D (const ComplexGSVD& a)=0A {=0A = if (this !=3D &a)=0A {=0A type_computed =3D a.type_computed;=0A sigmaA = =3D a.sigmaA;=0A sigmaB =3D a.sigmaB;=0A left_smA =3D a.left_smA;=0A = left_smB =3D a.left_smB;=0A right_sm =3D a.right_sm;=0A }=0A=0A retu= rn *this;=0A }=0A=0A ~ComplexGSVD (void) { }=0A=0A DiagMatrix singular= _values_A (void) const { return sigmaA; }=0A DiagMatrix singular_values_B = (void) const { return sigmaB; }=0A=0A ComplexMatrix left_singular_matrix_A= (void) const;=0A ComplexMatrix left_singular_matrix_B (void) const;=0A=0A= ComplexMatrix right_singular_matrix (void) const;=0A=0A friend std::ostr= eam& operator << (std::ostream& os, const ComplexGSVD& a);=0A=0Aprivate:= =0A=0A GSVD::type type_computed;=0A=0A DiagMatrix sigmaA, sigmaB;=0A Com= plexMatrix left_smA, left_smB;=0A ComplexMatrix right_sm;=0A=0A int init = (const ComplexMatrix& a, const ComplexMatrix& b, =0A GSVD::type gsvd_ty= pe =3D GSVD::economy);=0A};=0A=0A#endif=0A=0A/*=0A;;; Local Variables: ***= =0A;;; mode: C++ ***=0A;;; End: ***=0A*/=0A=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00liboctave/dbleGSVD.cc=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=000000644=000000000=000000000=0000000013263=0010417211177=00013433= =00 0=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00ustar =00root=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00root=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00/*=0A= =0ACopyright (C) 1996, 1997 John W. Eaton=0ACopyright (C) 2006 Pascal Dupui= s=0AThis file is part of Octave.=0A=0AOctave is free software; you can redi= stribute it and/or modify it=0Aunder the terms of the GNU General Public Li= cense as published by the=0AFree Software Foundation; either version 2, or = (at your option) any=0Alater version.=0A=0AOctave is distributed in the hop= e that it will be useful, but WITHOUT=0AANY WARRANTY; without even the impl= ied warranty of MERCHANTABILITY or=0AFITNESS FOR A PARTICULAR PURPOSE. See= the GNU General Public License=0Afor more details.=0A=0AYou should have re= ceived a copy of the GNU General Public License=0Aalong with Octave; see th= e file COPYING. If not, write to the Free=0ASoftware Foundation, Inc., 51 = Franklin Street, Fifth Floor, Boston, MA=0A02110-1301, USA.=0A=0A*/=0A=0A#i= f defined (__GNUG__) && defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)=0A#pr= agma implementation=0A#endif=0A=0A#ifdef HAVE_CONFIG_H=0A#include =0A#endif=0A=0A#include =0A=0A#include "dbleGSVD.h"=0A#include "= f77-fcn.h"=0A=0Aextern "C"=0A{=0A F77_RET_T=0A F77_FUNC (dggsvd, DGGSVD) = =0A (=0A F77_CONST_CHAR_ARG_DECL, // JOBU (input) CHARACTER*1=0A= F77_CONST_CHAR_ARG_DECL, // JOBV (input) CHARACTER*1=0A F77_CO= NST_CHAR_ARG_DECL, // JOBQ (input) CHARACTER*1=0A const int&, // = M (input) INTEGER=0A const int&, // N (input) INTEGER=0A = const int&, // P (input) INTEGER=0A int &, // K (ou= tput) INTEGER=0A int &, // L (output) INTEGER=0A double*, = // A (input/output) DOUBLE PRECISION array, dimension (LDA,N)=0A = const int&, // LDA (input) INTEGER=0A double*, // B (in= put/output) DOUBLE PRECISION array, dimension (LDB,N)=0A const int&, = // LDB (input) INTEGER=0A double*, // ALPHA (output) DOUBLE PR= ECISION array, dimension (N)=0A double*, // BETA (output) DOUBLE = PRECISION array, dimension (N)=0A double*, // U (output) DOUBLE= PRECISION array, dimension (LDU,M)=0A const int&, // LDU (input) = INTEGER =0A double*, // V (output) DOUBLE PRECISION array, dim= ension (LDV,P)=0A const int&, // LDV (input) INTEGER=0A double= *, // Q (output) DOUBLE PRECISION array, dimension (LDQ,N) =0A = const int&, // LDQ (input) INTEGER=0A double*, // WORK (work= space) DOUBLE PRECISION array=0A int*, // IWORK (workspace/output)= INTEGER array, dimension (N)=0A int& // INFO (output)INTEGER=0A = F77_CHAR_ARG_LEN_DECL=0A F77_CHAR_ARG_LEN_DECL=0A );=0A}=0A=0AMa= trix=0AGSVD::left_singular_matrix_A (void) const=0A{=0A if (type_computed = =3D=3D GSVD::sigma_only)=0A {=0A (*current_liboctave_error_handler)= =0A ("dbleGSVD: U not computed because type =3D=3D GSVD::sigma_only");=0A = return Matrix ();=0A }=0A else=0A return left_smA;=0A}=0A=0AMatr= ix=0AGSVD::left_singular_matrix_B (void) const=0A{=0A if (type_computed = =3D=3D GSVD::sigma_only)=0A {=0A (*current_liboctave_error_handler)= =0A ("dbleGSVD: V not computed because type =3D=3D GSVD::sigma_only");=0A = return Matrix ();=0A }=0A else=0A return left_smB;=0A}=0A=0AMatr= ix=0AGSVD::right_singular_matrix (void) const=0A{=0A if (type_computed =3D= =3D GSVD::sigma_only)=0A {=0A (*current_liboctave_error_handler)=0A= ("dbleSVD: X not computed because type =3D=3D GSVD::sigma_only");=0A = return Matrix ();=0A }=0A else=0A return right_sm;=0A}=0A=0Aint=0AGS= VD::init (const Matrix& a, const Matrix& b, GSVD::type gsvd_type)=0A{=0A i= nt info;=0A=0A int m =3D a.rows ();=0A int n =3D a.cols ();=0A int p =3D= b.rows ();=0A =0A Matrix atmp =3D a;=0A double *tmp_dataA =3D atmp.fort= ran_vec ();=0A =0A Matrix btmp =3D b;=0A double *tmp_dataB =3D btmp.fort= ran_vec ();=0A=0A int min_mn =3D m < n ? m : n;=0A=0A char jobu =3D 'U';= =0A char jobv =3D 'V';=0A char jobq =3D 'Q';=0A=0A int nrow_u =3D m;=0A = int nrow_v =3D p;=0A int nrow_q =3D n;=0A=0A int k, l;=0A=0A switch (gs= vd_type)=0A {=0A=0A case GSVD::sigma_only:=0A=0A // Note: for t= his case, both jobu and jobv should be 'N', but=0A // there seems to b= e a bug in dgesvd from Lapack V2.0. To=0A // demonstrate the bug, set= both jobu and jobv to 'N' and find=0A // the singular values of [eye(= 3), eye(3)]. The result is=0A // [-sqrt(2), -sqrt(2), -sqrt(2)].=0A = //=0A // For Lapack 3.0, this problem seems to be fixed.=0A=0A = jobu =3D 'N';=0A jobv =3D 'N';=0A jobq =3D 'N';=0A nrow_u = =3D nrow_v =3D nrow_q =3D 1;=0A break;=0A=0A default:=0A break= ;=0A }=0A=0A type_computed =3D gsvd_type;=0A=0A if (! (jobu =3D=3D 'N'= || jobu =3D=3D 'O')) {=0A left_smA.resize (nrow_u, m);=0A }=0A =0A d= ouble *u =3D left_smA.fortran_vec ();=0A=0A if (! (jobv =3D=3D 'N' || jobv= =3D=3D 'O')) {=0A left_smB.resize (nrow_v, p);=0A }=0A=0A double *v = =3D left_smB.fortran_vec ();=0A=0A sigmaA.resize (n, n);=0A double *c_vec= =3D sigmaA.fortran_vec ();=0A=0A sigmaB.resize (n, n);=0A double *s_vec= =3D sigmaB.fortran_vec ();=0A=0A if (! (jobq =3D=3D 'N' || jobq =3D=3D '= O')) {=0A right_sm.resize (nrow_q, n);=0A }=0A double *q =3D right_sm.= fortran_vec (); =0A =0A int lwork =3D 3*n;=0A lwork =3D lwork > m ? lwo= rk : m;=0A lwork =3D lwork > p ? lwork : p;=0A Array work (lwork= );=0A=0A Array iwork (n);=0A=0A F77_XFCN (dggsvd, DGGSVD, (F77_CONST= _CHAR_ARG2 (&jobu, 1),=0A F77_CONST_CHAR_ARG2 (&jobv, 1),=0A = F77_CONST_CHAR_ARG2 (&jobq, 1),=0A m, n, p, k, l, tmp_dataA, m, =0A = tmp_dataB, p, c_vec, s_vec, u, nrow_u, =0A v, nrow_v, q, nrow= _q, work.fortran_vec (), =0A iwork.fortran_vec (), info=0A F7= 7_CHAR_ARG_LEN (1)=0A F77_CHAR_ARG_LEN (1)));=0A =0A if (f77_excep= tion_encountered)=0A (*current_liboctave_error_handler) ("unrecoverable = error in dggsvd");=0A=0A return info;=0A}=0A=0Astd::ostream&=0Aoperator <<= (std::ostream& os, const GSVD& a)=0A{=0A os << a.left_singular_matrix_A (= ) << "\n";=0A os << a.left_singular_matrix_B () << "\n";=0A os << a.singu= lar_values_A () << "\n";=0A os << a.singular_values_B () << "\n";=0A os <= < a.right_singular_matrix () << "\n";=0A=0A return os;=0A}=0A=0A/*=0A;;; L= ocal Variables: ***=0A;;; mode: C++ ***=0A;;; End: ***=0A*/=0A=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00liboctave/dbleGSVD.d=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=000000644=000000000=000000000= =0000000022541=0010417211206=00013261=00 0=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00ustar =00root=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00root=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00pic/dbleGSVD.o dbleGSVD.o dbleGSVD.df dbleGSV= D.d: dbleGSVD.cc ../config.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../= =2E./../include/c++/4.0.3/iostream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/= =2E./../../../include/c++/4.0.3/i486-linux-gnu/bits/c++config.h \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/b= its/os_defines.h \=0A /usr/include/features.h /usr/include/sys/cdefs.h \= =0A /usr/include/gnu/stubs.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../..= /../../include/c++/4.0.3/ostream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/..= /../../../include/c++/4.0.3/ios \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../= =2E./../../include/c++/4.0.3/iosfwd \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3= /../../../../include/c++/4.0.3/i486-linux-gnu/bits/c++locale.h \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cstring \=0A /us= r/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cstddef \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \=0A /usr/include/strin= g.h /usr/include/xlocale.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../..= /../include/c++/4.0.3/cstdio \=0A /usr/include/stdio.h /usr/include/bits/t= ypes.h \=0A /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \= =0A /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \= =0A /usr/include/bits/wchar.h /usr/include/gconv.h \=0A /usr/lib/gcc/i486= -linux-gnu/4.0.3/include/stdarg.h \=0A /usr/include/bits/stdio_lim.h /usr/= include/bits/sys_errlist.h \=0A /usr/include/bits/stdio.h \=0A /usr/lib/g= cc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/clocale \=0A /usr/in= clude/locale.h /usr/include/bits/locale.h \=0A /usr/include/langinfo.h /us= r/include/nl_types.h /usr/include/iconv.h \=0A /usr/include/libintl.h \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linu= x-gnu/bits/c++io.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../incl= ude/c++/4.0.3/i486-linux-gnu/bits/gthr.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/bits/gthr-default.h \=0A= /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \=0A /us= r/include/bits/sched.h /usr/include/bits/time.h \=0A /usr/include/signal.h= /usr/include/bits/sigset.h \=0A /usr/include/bits/pthreadtypes.h /usr/inc= lude/bits/initspin.h \=0A /usr/include/bits/sigthread.h /usr/include/unist= d.h \=0A /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \= =0A /usr/include/bits/confname.h getopt.h \=0A /usr/lib/gcc/i486-linux-gn= u/4.0.3/../../../../include/c++/4.0.3/cctype \=0A /usr/include/ctype.h /us= r/include/endian.h /usr/include/bits/endian.h \=0A /usr/lib/gcc/i486-linux= -gnu/4.0.3/../../../../include/c++/4.0.3/bits/stringfwd.h \=0A /usr/lib/gc= c/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/postypes.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/cwchar \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/ctime \= =0A /usr/include/stdint.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../..= /../include/c++/4.0.3/bits/functexcept.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/exception_defines.h \=0A /usr/lib/gcc/= i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/exception \=0A /usr/lib= /gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/char_traits.h = \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/= stl_algobase.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/= c++/4.0.3/climits \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h = \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \=0A /usr/incl= ude/limits.h /usr/include/bits/posix1_lim.h \=0A /usr/include/bits/local_l= im.h /usr/include/linux/limits.h \=0A /usr/include/bits/posix2_lim.h /usr/= include/bits/xopen_lim.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../.= =2E/include/c++/4.0.3/cstdlib \=0A /usr/include/stdlib.h /usr/include/bits= /waitflags.h \=0A /usr/include/bits/waitstatus.h /usr/include/sys/types.h = \=0A /usr/include/sys/select.h /usr/include/bits/select.h \=0A /usr/inclu= de/sys/sysmacros.h /usr/include/alloca.h \=0A /usr/lib/gcc/i486-linux-gnu/= 4.0.3/../../../../include/c++/4.0.3/bits/stl_pair.h \=0A /usr/lib/gcc/i486= -linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/cpp_type_traits.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_i= terator_base_types.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../in= clude/c++/4.0.3/bits/stl_iterator_base_funcs.h \=0A /usr/lib/gcc/i486-linu= x-gnu/4.0.3/../../../../include/c++/4.0.3/bits/concept_check.h \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_iterator= =2Eh \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/= debug/debug.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c= ++/4.0.3/cassert \=0A /usr/include/assert.h \=0A /usr/lib/gcc/i486-linux-= gnu/4.0.3/../../../../include/c++/4.0.3/bits/localefwd.h \=0A /usr/lib/gcc= /i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/ios_base.h \=0A /= usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/atomici= ty.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/= i486-linux-gnu/bits/atomic_word.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/.= =2E/../../../include/c++/4.0.3/bits/locale_classes.h \=0A /usr/lib/gcc/i48= 6-linux-gnu/4.0.3/../../../../include/c++/4.0.3/string \=0A /usr/lib/gcc/i= 486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/memory \=0A /usr/lib/gcc= /i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/allocator.h \=0A = /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-= gnu/bits/c++allocator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/ext/new_allocator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.= 0.3/../../../../include/c++/4.0.3/new \=0A /usr/lib/gcc/i486-linux-gnu/4.0= =2E3/../../../../include/c++/4.0.3/bits/stl_construct.h \=0A /usr/lib/gcc/= i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_uninitialized.h= \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits= /stl_raw_storage_iter.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/limits \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../= =2E./include/c++/4.0.3/bits/stl_function.h \=0A /usr/lib/gcc/i486-linux-gn= u/4.0.3/../../../../include/c++/4.0.3/bits/basic_string.h \=0A /usr/lib/gc= c/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/algorithm \=0A /usr/l= ib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_algo.h \= =0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/s= tl_heap.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4= =2E0.3/bits/stl_tempbuf.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../= =2E./include/c++/4.0.3/bits/basic_string.tcc \=0A /usr/lib/gcc/i486-linux-= gnu/4.0.3/../../../../include/c++/4.0.3/streambuf \=0A /usr/lib/gcc/i486-l= inux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/streambuf.tcc \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/basic_ios.h= \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits= /streambuf_iterator.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../i= nclude/c++/4.0.3/bits/locale_facets.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0= =2E3/../../../../include/c++/4.0.3/cwctype \=0A /usr/include/wctype.h \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linu= x-gnu/bits/ctype_base.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/i486-linux-gnu/bits/ctype_inline.h \=0A /usr/lib/gcc/i4= 86-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/codecvt.h \=0A /usr/= lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/i486-linux-gnu/b= its/time_members.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../incl= ude/c++/4.0.3/i486-linux-gnu/bits/messages_members.h \=0A /usr/lib/gcc/i48= 6-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/basic_ios.tcc \=0A /u= sr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/ostream.= tcc \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/l= ocale \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3= /bits/locale_facets.tcc \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../..= /include/c++/4.0.3/typeinfo \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../.= =2E/../include/c++/4.0.3/istream \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/..= /../../../include/c++/4.0.3/bits/istream.tcc \=0A dbleGSVD.h dDiagMatrix.h= MDiagArray2.h DiagArray2.h Array.h \=0A dim-vector.h lo-sstream.h \=0A /= usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/sstream \=0A= /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/sstr= eam.tcc \=0A lo-utils.h oct-cmplx.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.= 3/../../../../include/c++/4.0.3/complex \=0A /usr/lib/gcc/i486-linux-gnu/4= =2E0.3/../../../../include/c++/4.0.3/cmath \=0A /usr/include/math.h /usr/i= nclude/bits/huge_val.h \=0A /usr/include/bits/huge_valf.h /usr/include/bit= s/huge_vall.h \=0A /usr/include/bits/inf.h /usr/include/bits/nan.h \=0A /= usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \=0A /usr/include= /bits/mathinline.h \=0A /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../incl= ude/c++/4.0.3/bits/cmath.tcc \=0A ../libcruft/misc/lo-error.h MArray2.h Ar= ray2.h MArray-defs.h \=0A dRowVector.h MArray.h mx-defs.h dColVector.h dMa= trix.h mx-op-defs.h \=0A mx-inlines.cc ../libcruft/misc/f77-fcn.h ../libcr= uft/misc/quit.h \=0A /usr/include/bits/signum.h /usr/include/bits/siginfo.= h \=0A /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \=0A = /usr/include/asm/sigcontext.h /usr/include/asm-i486/sigcontext.h \=0A /usr= /include/linux/compiler.h /usr/include/bits/sigstack.h \=0A /usr/include/s= ys/ucontext.h /usr/include/setjmp.h \=0A /usr/include/bits/setjmp.h=0A=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00liboctave/dbleGSVD.h=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=000000644=0000000= 00=000000000=0000000004641=0010417205723=00013275=00 0=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00ustar =00root=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00root=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00/*=0A=0ACopyright (C) 1996, 1997 = John W. Eaton=0ACopyright (C) 2006 Pascal Dupuis=0A=0AThis file is part of= Octave.=0A=0AOctave is free software; you can redistribute it and/or modif= y it=0Aunder the terms of the GNU General Public License as published by th= e=0AFree Software Foundation; either version 2, or (at your option) any=0Al= ater version.=0A=0AOctave is distributed in the hope that it will be useful= , but WITHOUT=0AANY WARRANTY; without even the implied warranty of MERCHANT= ABILITY or=0AFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public = License=0Afor more details.=0A=0AYou should have received a copy of the GNU= General Public License=0Aalong with Octave; see the file COPYING. If not,= write to the Free=0ASoftware Foundation, Inc., 51 Franklin Street, Fifth F= loor, Boston, MA=0A02110-1301, USA.=0A=0A*/=0A=0A#if !defined (octave_GSVD_= h)=0A#define octave_GSVD_h 1=0A=0A#if defined (__GNUG__) && defined (USE_PR= AGMA_INTERFACE_IMPLEMENTATION)=0A#pragma interface=0A#endif=0A=0A#include <= iostream>=0A=0A#include "dDiagMatrix.h"=0A#include "dMatrix.h"=0A=0Aclass= =0AGSVD=0A{=0Apublic:=0A=0A enum type=0A {=0A economy,=0A sig= ma_only=0A };=0A=0A GSVD (void) : sigmaA (), sigmaB (), left_smA (), le= ft_smB (), right_sm () { }=0A GSVD (const Matrix& a, const Matrix& b, type= gsvd_type =3D GSVD::economy) { init (a, b, gsvd_type); }=0A=0A GSVD (cons= t Matrix& a, const Matrix& b, int& info, type gsvd_type =3D GSVD::economy)= =0A {=0A info =3D init (a, b, gsvd_type);=0A }=0A=0A GSVD (cons= t GSVD& a)=0A : type_computed (a.type_computed),=0A sigmaA (a.sigma= A), sigmaB (a.sigmaB), =0A left_smA (a.left_smA), left_smB (a.left_smB= ), right_sm (a.right_sm) { }=0A=0A GSVD& operator =3D (const GSVD& a)=0A = {=0A if (this !=3D &a)=0A {=0A type_computed =3D a.type_computed;= =0A sigmaA =3D a.sigmaA;=0A sigmaB =3D a.sigmaB;=0A left_smA =3D a.le= ft_smA;=0A left_smB =3D a.left_smB;=0A right_sm =3D a.right_sm;=0A }=0A= =0A return *this;=0A }=0A=0A ~GSVD (void) { }=0A=0A DiagMatrix si= ngular_values_A (void) const { return sigmaA; }=0A DiagMatrix singular_val= ues_B (void) const { return sigmaB; }=0A=0A Matrix left_singular_matrix_A = (void) const;=0A Matrix left_singular_matrix_B (void) const;=0A=0A Matrix= right_singular_matrix (void) const;=0A=0A friend std::ostream& operator = << (std::ostream& os, const GSVD& a);=0A=0Aprivate:=0A=0A GSVD::type type_= computed;=0A=0A DiagMatrix sigmaA, sigmaB;=0A Matrix left_smA, left_smB;= =0A Matrix right_sm;=0A=0A int init (const Matrix& a, const Matrix& b, ty= pe gsvd_type =3D economy);=0A};=0A=0A#endif=0A=0A/*=0A;;; Local Variables: = ***=0A;;; mode: C++ ***=0A;;; End: ***=0A*/=0A=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00liboctave/Makefile.in=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=000000644= =000000000=000000000=0000000024226=0010417206245=00013600=00 0=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00ustar =00ro= ot=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00root=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00#=0A# Makefile for octav= e's liboctave directory=0A#=0A# John W. Eaton=0A# jwe at bevo dot che dot wisc dot edu=0A#= University of Wisconsin-Madison=0A# Department of Chemical Engineering=0A= =0ATOPDIR =3D ..=0A=0Asrcdir =3D at srcdir@=0Atop_srcdir =3D @top_srcdir@=0AV= PATH =3D at srcdir@=0A=0Ainclude $(TOPDIR)/Makeconf=0A=0AINSTALL =3D @INSTALL= at =0AINSTALL_PROGRAM =3D @INSTALL_PROGRAM@=0AINSTALL_DATA =3D @INSTALL_DATA@= =0A=0ALINK_DEPS =3D \=0A -L../libcruft -L. $(RLD_FLAG) \=0A $(LIBCRUFT) $= (BLAS_LIBS) $(FFTW_LIBS) $(LIBREADLINE) $(LIBS) $(FLIBS)=0A=0AMATRIX_INC := =3D Array.h Array2.h Array3.h ArrayN.h DiagArray2.h \=0A Array-flags.h Arra= y-util.h ArrayN-idx.h MArray-defs.h \=0A MArray.h MArray2.h MDiagArray2.h M= atrix.h MArrayN.h \=0A base-lu.h dim-vector.h mx-base.h mx-op-defs.h mx-ops= =2Eh \=0A mx-defs.h mx-ext.h CColVector.h CDiagMatrix.h CMatrix.h \=0A CNDA= rray.h CRowVector.h CmplxAEPBAL.h CmplxCHOL.h \=0A CmplxDET.h CmplxHESS.h C= mplxLU.h CmplxQR.h CmplxQRP.h \=0A CmplxSCHUR.h CmplxSVD.h EIG.h boolMatrix= =2Eh boolNDArray.h \=0A chMatrix.h chNDArray.h dColVector.h dDiagMatrix.h d= Matrix.h \=0A dNDArray.h dRowVector.h dbleAEPBAL.h dbleCHOL.h dbleDET.h \= =0A dbleHESS.h dbleLU.h dbleQR.h dbleQRP.h dbleSCHUR.h dbleSVD.h \=0A int8N= DArray.h uint8NDArray.h int16NDArray.h uint16NDArray.h \=0A int32NDArray.h = uint32NDArray.h int64NDArray.h uint64NDArray.h \=0A intNDArray.h dbleGSVD.h= CmplxGSVD.h=0A=0AMX_OP_INC :=3D $(shell $(AWK) -f $(srcdir)/mk-ops.awk pre= fix=3Dmx list_h_files=3D1 $(srcdir)/mx-ops)=0A=0AVX_OP_INC :=3D $(shell $(A= WK) -f $(srcdir)/mk-ops.awk prefix=3Dvx list_h_files=3D1 $(srcdir)/vx-ops)= =0A=0AOPTS_INC_DATA :=3D DASPK-opts.in DASRT-opts.in DASSL-opts.in \=0A LSO= DE-opts.in NLEqn-opts.in Quad-opts.in=0A=0AOPTS_INC :=3D $(OPTS_INC_DATA:.i= n=3D.h)=0A=0AINCLUDES :=3D Bounds.h CollocWt.h DAE.h DAEFunc.h DAERT.h \=0A= DAERTFunc.h DASPK.h DASRT.h DASSL.h FEGrid.h \=0A LinConst.h LP.h LPsolve.= h LSODE.h NLConst.h NLEqn.h \=0A NLFunc.h NLP.h ODE.h ODEFunc.h ODES.h ODES= Func.h \=0A Objective.h QP.h Quad.h Range.h base-dae.h \=0A base-de.h base-= min.h byte-swap.h cmd-edit.h cmd-hist.h \=0A data-conv.h dir-ops.h file-ops= =2Eh file-stat.h getopt.h \=0A glob-match.h idx-vector.h kpse-xfns.h \=0A l= o-ieee.h lo-mappers.h lo-specfun.h lo-sstream.h \=0A lo-sysdep.h lo-utils.h= mach-info.h oct-alloc.h oct-cmplx.h \=0A oct-env.h oct-fftw.h oct-getopt.h= oct-group.h oct-inttypes.h \=0A oct-passwd.h oct-rand.h oct-rl-edit.h oct-= rl-hist.h \=0A oct-shlib.h oct-sort.h oct-syscalls.h oct-time.h pathlen.h \= =0A pathsearch.h prog-args.h so-array.h statdefs.h str-vec.h \=0A sun-utils= =2Eh sysdir.h systime.h syswait.h \=0A $(OPTS_INC) \=0A $(MATRIX_INC) \=0A = $(MX_OP_INC) \=0A $(VX_OP_INC)=0A=0ATEMPLATE_SRC :=3D Array.cc ArrayN.cc Di= agArray2.cc \=0A MArray.cc MArray2.cc MArrayN.cc MDiagArray2.cc \=0A base-l= u.cc oct-sort.cc=0A=0ATI_SRC :=3D Array-C.cc Array-b.cc Array-ch.cc Array-i= =2Ecc Array-d.cc \=0A Array-s.cc Array-so.cc Array-str.cc Array-idx-vec.cc = \=0A MArray-C.cc MArray-ch.cc MArray-i.cc MArray-d.cc MArray-s.cc \=0A oct-= inttypes.cc=0A=0AMATRIX_SRC :=3D Array-flags.cc Array-util.cc CColVector.cc= \=0A CDiagMatrix.cc CMatrix.cc CNDArray.cc CRowVector.cc \=0A CmplxAEPBAL.= cc CmplxCHOL.cc CmplxDET.cc CmplxHESS.cc \=0A CmplxLU.cc CmplxQR.cc CmplxQR= P.cc CmplxSCHUR.cc CmplxSVD.cc \=0A CmplxGSVD.cc EIG.cc boolMatrix.cc boolN= DArray.cc chMatrix.cc \=0A chNDArray.cc dColVector.cc dDiagMatrix.cc dMatri= x.cc \=0A dNDArray.cc dRowVector.cc dbleAEPBAL.cc dbleCHOL.cc \=0A dbleDET.= cc dbleHESS.cc dbleLU.cc dbleQR.cc dbleQRP.cc \=0A dbleSCHUR.cc dbleSVD.cc = dbleGSVD.cc\=0A int8NDArray.cc uint8NDArray.cc int16NDArray.cc uint16NDArr= ay.cc \=0A int32NDArray.cc uint32NDArray.cc int64NDArray.cc uint64NDArray.c= c =0A=0AMX_OP_SRC :=3D $(shell $(AWK) -f $(srcdir)/mk-ops.awk prefix=3Dmx l= ist_cc_files=3D1 $(srcdir)/mx-ops)=0A=0AVX_OP_SRC :=3D $(shell $(AWK) -f $(= srcdir)/mk-ops.awk prefix=3Dvx list_cc_files=3D1 $(srcdir)/vx-ops)=0A=0ALIB= OCTAVE_CXX_SOURCES :=3D Bounds.cc CollocWt.cc \=0A DASPK.cc DASRT.cc DASSL.= cc FEGrid.cc LinConst.cc \=0A LPsolve.cc LSODE.cc NLEqn.cc ODES.cc \=0A Qua= d.cc Range.cc data-conv.cc dir-ops.cc \=0A file-ops.cc file-stat.cc glob-ma= tch.cc idx-vector.cc \=0A lo-ieee.cc lo-mappers.cc lo-specfun.cc lo-sysdep.= cc \=0A lo-utils.cc mach-info.cc oct-alloc.cc oct-env.cc \=0A oct-fftw.cc o= ct-group.cc oct-passwd.cc oct-rand.cc oct-shlib.cc \=0A oct-syscalls.cc oct= -time.cc prog-args.cc so-array.cc str-vec.cc \=0A $(TEMPLATE_SRC) \=0A $(TI= _SRC) \=0A $(MATRIX_SRC) \=0A $(MX_OP_SRC) \=0A $(VX_OP_SRC)=0A=0ALIBOCTAVE= _C_SOURCES :=3D f2c-main.c filemode.c getopt.c getopt1.c \=0A lo-cieee.c lo= -cutils.c mkdir.c oct-getopt.c rename.c \=0A rmdir.c strftime.c strptime.c = tempname.c tempnam.c=0A=0ALIBOCTAVE_SOURCES :=3D $(LIBOCTAVE_CXX_SOURCES) $= (LIBOCTAVE_C_SOURCES)=0A=0ALIBOCT_READLINE_CXX_SOURCES :=3D cmd-edit.cc cmd= -hist.cc=0A=0ALIBOCT_READLINE_C_SOURCES :=3D oct-rl-edit.c oct-rl-hist.c=0A= =0ALIBOCT_READLINE_SOURCES :=3D $(LIBOCT_READLINE_CXX_SOURCES) $(LIBOCT_REA= DLINE_C_SOURCES)=0A=0ALIBOCT_PATHSEARCH_CXX_SOURCES :=3D pathsearch.cc=0A= =0ALIBOCT_PATHSEARCH_C_SOURCES :=3D kpse-xfns.c=0A=0ALIBOCT_PATHSEARCH_SOUR= CES :=3D \=0A $(LIBOCT_PATHSEARCH_C_SOURCES) $(LIBOCT_PATHSEARCH_CXX_SOURCE= S)=0A=0ASOURCES :=3D \=0A $(LIBOCTAVE_SOURCES) \=0A $(LIBOCT_READLINE_SOURC= ES) \=0A $(LIBOCT_PATHSEARCH_SOURCES)=0A=0AEXTRAS :=3D mx-inlines.cc kpse.c= c intNDArray.cc=0A=0AINCLUDES_FOR_INSTALL :=3D $(INCLUDES) $(TEMPLATE_SRC) = $(EXTRAS)=0A=0ADISTFILES :=3D Makefile.in ChangeLog mk-ops.awk mx-ops vx-op= s \=0A $(SOURCES) $(INCLUDES) $(EXTRAS) $(OPTS_INC_DATA)=0A=0Aifeq ($(SHARE= D_LIBS), true)=0A BINDISTLIBS =3D liboctave/liboctave=0A BINDISTFILES =3D= liboctave.$(SHLEXT_VER)=0Aendif=0A=0AMAKEDEPS_1 :=3D $(patsubst %.cc, %.d,= $(SOURCES))=0AMAKEDEPS :=3D $(patsubst %.c, %.d, $(MAKEDEPS_1))=0A=0ALIBOC= TAVE_OBJECTS :=3D \=0A $(LIBOCTAVE_CXX_SOURCES:.cc=3D.o) \=0A $(LIBOCTAVE_C= _SOURCES:.c=3D.o) \=0A $(LIBOCT_READLINE_CXX_SOURCES:.cc=3D.o) \=0A $(LIBOC= T_READLINE_C_SOURCES:.c=3D.o) \=0A $(LIBOCT_PATHSEARCH_CXX_SOURCES:.cc=3D.o= ) \=0A $(LIBOCT_PATHSEARCH_C_SOURCES:.c=3D.o)=0A=0Aifeq ($(SHARED_LIBS), tr= ue)=0A ifdef CXXPICFLAG=0A LIBOCTAVE_PICOBJ :=3D $(addprefix pic/, $(LI= BOCTAVE_OBJECTS))=0A else=0A LIBOCTAVE_PICOBJ :=3D $(LIBOCTAVE_OBJECTS)= =0A endif=0Aendif=0A=0Aall: libraries=0A.PHONY: all=0A=0Aobjects: $(OBJECT= S)=0A=0Astmp-pic: pic=0A at if [ -f stmp-pic ]; then \=0A true; \=0A else \= =0A echo "touch stmp-pic"; \=0A touch stmp-pic; \=0A fi=0A=0Apic:=0A at i= f [ -d pic ]; then \=0A true; \=0A else \=0A echo "mkdir pic"; \=0A m= kdir pic; \=0A fi=0A=0Astamp-prereq: $(OPTS_INC) $(VX_OP_INC) $(VX_OP_SRC) = $(MX_OP_INC) $(MX_OP_SRC) mx-ops.h=0A touch stamp-prereq=0A=0Aifeq ($(SHARE= D_LIBS), true)=0A ifeq ($(STATIC_LIBS), true)=0A libraries: \=0A stamp-= prereq \=0A liboctave.$(LIBEXT) liboctave.$(SHLEXT_VER)=0A else=0A libr= aries: \=0A stamp-prereq \=0A liboctave.$(SHLEXT_VER)=0A endif=0Aelse=0A = ifeq ($(STATIC_LIBS), true)=0A libraries: \=0A stamp-prereq \=0A libocta= ve.$(LIBEXT)=0A else=0A libraries: stamp-prereq=0A endif=0Aendif=0A.PH= ONY: libraries=0A=0Aliboctave.$(LIBEXT): $(LIBOCTAVE_OBJECTS)=0A rm -f $ at = =0A $(TEMPLATE_AR) $(TEMPLATE_ARFLAGS) $ at $(LIBOCTAVE_OBJECTS)=0A $(RANLIB)= $ at =0A=0Aliboctave dot $(SHLEXT_VER): liboctave.$(SHLEXT)=0A rm -f $@=0A $(LN_S= ) $< $ at =0A=0Aliboctave dot $(SHLEXT): $(LIBOCTAVE_PICOBJ)=0A rm -f $@=0A $(SH_L= D) $(SH_LDFLAGS) $(SONAME_FLAGS) -o $ at \=0A $(LIBOCTAVE_PICOBJ) $(LINK_DEPS= )=0A=0A$(LIBOCTAVE_PICOBJ): stmp-pic=0A=0Acheck: all=0A.PHONY: check=0A=0Ai= nstall: install-lib install-inc=0A.PHONY: install=0A=0Ainstall-strip:=0A $(= MAKE) INSTALL_PROGRAM=3D"$(INSTALL_PROGRAM) -s" install=0A.PHONY: install-s= trip=0A=0Ainstall-lib:=0A $(top_srcdir)/mkinstalldirs $(DESTDIR)$(octlibdir= )=0A if $(STATIC_LIBS); then \=0A rm -f $(DESTDIR)$(octlibdir)/liboctave.= $(LIBEXT); \=0A $(INSTALL_DATA) liboctave.$(LIBEXT) \=0A $(DESTDIR)$(= octlibdir)/liboctave.$(LIBEXT); \=0A $(RANLIB) $(DESTDIR)$(octlibdir)/lib= octave.$(LIBEXT); \=0A fi=0A if $(SHARED_LIBS); then \=0A rm -f $(DESTDIR= )$(octlibdir)/liboctave.$(SHLLIB_VER); \=0A $(INSTALL) \=0A liboctave= =2E$(SHLLIB) $(DESTDIR)$(octlibdir)/liboctave.$(SHLLIB_VER); \=0A rm -f $= (DESTDIR)$(octlibdir)/liboctave.$(SHLLIB); \=0A $(LN_S) liboctave.$(SHLLI= B_VER) $(DESTDIR)$(octlibdir)/liboctave.$(SHLLIB); \=0A if test x$(SHLBI= N) !=3D x ; then \=0A rm -f $(DESTDIR)$(bindir)/liboctave.$(SHLBIN); \= =0A $(INSTALL_PROGRAM) \=0A liboctave.$(SHLBIN) $(DESTDIR)$(bindi= r)/liboctave.$(SHLBIN); \=0A fi; \=0A fi=0A.PHONY: install-lib=0A=0Ainsta= ll-inc:=0A $(top_srcdir)/mkinstalldirs $(DESTDIR)$(octincludedir)/octave=0A= for f in $(INCLUDES_FOR_INSTALL); do \=0A rm -f $(DESTDIR)$(octincludedi= r)/octave/$$f; \=0A if [ -f $$f ]; then \=0A $(INSTALL_DATA) $$f $(DE= STDIR)$(octincludedir)/octave/$$f; \=0A else \=0A $(INSTALL_DATA) $(s= rcdir)/$$f $(DESTDIR)$(octincludedir)/octave/$$f; \=0A fi ; \=0A done=0A.= PHONY: install-inc=0A=0Auninstall:=0A rm -f $(DESTDIR)$(octlibdir)/liboctav= e.$(LIBEXT)=0A rm -f $(DESTDIR)$(octlibdir)/liboctave.$(SHLLIB)=0A rm -f $(= DESTDIR)$(octlibdir)/liboctave.$(SHLLIB_VER)=0A if test x$(SHLBIN) !=3D x; = then \=0A rm -f $(DESTDIR)$(bindir)/liboctave.$(SHLBIN); \=0A rm -f $(D= ESTDIR)$(bindir)/liboctave.$(SHLBIN_VER); \=0A fi=0A for f in $(INCLUDES); = do rm -f $(DESTDIR)$(octincludedir)/octave/$$f; done=0A.PHONY: uninstall=0A= =0Atags: $(SOURCES)=0A ctags $(SOURCES)=0A=0ATAGS: $(SOURCES)=0A etags $(SO= URCES)=0A=0Aclean:=0A rm -f *.$(LIBEXT) *.o *.d pic/*.o=0A -rmdir pic=0A rm= -f stmp-pic=0A if $(SHARED_LIBS); then rm -f *.$(SHLEXT_VER) *.$(SHLEXT); = fi=0A.PHONY: clean=0A=0Amostlyclean: clean=0A.PHONY: mostlyclean=0A=0Adistc= lean: clean=0A rm -f Makefile so_locations stamp-prereq $(OPTS_INC)=0A rm -= f mx-ops.h $(MX_OP_INC) $(VX_OP_INC) $(MX_OP_SRC) $(VX_OP_SRC)=0A.PHONY: di= stclean=0A=0Amaintainer-clean: distclean=0A rm -f tags TAGS=0A.PHONY: maint= ainer-clean=0A=0Adist: stamp-prereq=0A ln $(DISTFILES) ../`cat ../.fname`/l= iboctave=0A.PHONY: dist=0A=0Abin-dist:=0A if [ -n "$(BINDISTFILES)" ]; then= \=0A ln $(BINDISTFILES) ../`cat ../.fname`/liboctave; \=0A fi=0A if [ -n= "$(BINDISTLIBS)" ]; then \=0A echo $(BINDISTLIBS) >> ../`cat ../.fname`/= LIBRARIES; \=0A fi=0A.PHONY: bin-dist=0A=0A$(OPTS_INC) : %.h : %.in $(top_s= rcdir)/mk-opts dot pl=0A at echo making $@ from $<=0A @perl $(top_srcdir)/mk-opts= =2Epl --opt-class-header $< > $ at -t=0A @$(top_srcdir)/move-if-change $@-t $@= =0A=0A$(VX_OP_INC) $(VX_OP_SRC) : $(srcdir)/mk-ops.awk vx-ops=0A $(AWK) -f = $(srcdir)/mk-ops.awk prefix=3Dvx $(srcdir)/vx-ops=0A=0A$(MX_OP_INC) $(MX_OP= _SRC) : $(srcdir)/mk-ops.awk mx-ops=0A $(AWK) -f $(srcdir)/mk-ops.awk prefi= x=3Dmx $(srcdir)/mx-ops=0A=0Amx-ops.h : $(srcdir)/mk-ops.awk mx-ops=0A $(AW= K) -f $(srcdir)/mk-ops.awk prefix=3Dmx make_inclusive_header=3Dmx-ops.h $(s= rcdir)/mx-ops > $ at -t=0A $(top_srcdir)/move-if-change $@-t $@=0A=0A=0A# If m= issing, GNU make attempts to create them in the reverse of the=0A# order in= which they are listed here. We rely on that fact to ensure=0A# that defau= lts.h is created before trying to create the .d files.=0A# Hmm. I wonder i= f we can count on that...=0A=0Aifndef omit_deps=0A-include $(MAKEDEPS) stam= p-prereq=0Aendif=0A=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00= =00 --ew6BAiZeqk4r7MaW--