ruby-lapack 1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +56 -0
- data/GPL +340 -0
- data/README.rdoc +61 -0
- data/Rakefile +115 -0
- data/dev/common.rb +9 -0
- data/dev/defs/cbbcsd +297 -0
- data/dev/defs/cbdsqr +196 -0
- data/dev/defs/cgbbrd +174 -0
- data/dev/defs/cgbcon +114 -0
- data/dev/defs/cgbequ +121 -0
- data/dev/defs/cgbequb +128 -0
- data/dev/defs/cgbrfs +182 -0
- data/dev/defs/cgbrfsx +418 -0
- data/dev/defs/cgbsv +134 -0
- data/dev/defs/cgbsvx +356 -0
- data/dev/defs/cgbsvxx +539 -0
- data/dev/defs/cgbtf2 +110 -0
- data/dev/defs/cgbtrf +109 -0
- data/dev/defs/cgbtrs +106 -0
- data/dev/defs/cgebak +95 -0
- data/dev/defs/cgebal +125 -0
- data/dev/defs/cgebd2 +162 -0
- data/dev/defs/cgebrd +178 -0
- data/dev/defs/cgecon +90 -0
- data/dev/defs/cgeequ +107 -0
- data/dev/defs/cgeequb +114 -0
- data/dev/defs/cgees +169 -0
- data/dev/defs/cgeesx +209 -0
- data/dev/defs/cgeev +154 -0
- data/dev/defs/cgeevx +263 -0
- data/dev/defs/cgegs +204 -0
- data/dev/defs/cgegv +261 -0
- data/dev/defs/cgehd2 +115 -0
- data/dev/defs/cgehrd +136 -0
- data/dev/defs/cgelq2 +89 -0
- data/dev/defs/cgelqf +113 -0
- data/dev/defs/cgels +157 -0
- data/dev/defs/cgelsd +211 -0
- data/dev/defs/cgelss +156 -0
- data/dev/defs/cgelsx +155 -0
- data/dev/defs/cgelsy +188 -0
- data/dev/defs/cgeql2 +91 -0
- data/dev/defs/cgeqlf +116 -0
- data/dev/defs/cgeqp3 +127 -0
- data/dev/defs/cgeqpf +118 -0
- data/dev/defs/cgeqr2 +89 -0
- data/dev/defs/cgeqr2p +89 -0
- data/dev/defs/cgeqrf +114 -0
- data/dev/defs/cgeqrfp +114 -0
- data/dev/defs/cgerfs +164 -0
- data/dev/defs/cgerfsx +394 -0
- data/dev/defs/cgerq2 +91 -0
- data/dev/defs/cgerqf +116 -0
- data/dev/defs/cgesc2 +87 -0
- data/dev/defs/cgesdd +203 -0
- data/dev/defs/cgesv +97 -0
- data/dev/defs/cgesvd +195 -0
- data/dev/defs/cgesvx +333 -0
- data/dev/defs/cgesvxx +519 -0
- data/dev/defs/cgetc2 +82 -0
- data/dev/defs/cgetf2 +76 -0
- data/dev/defs/cgetrf +76 -0
- data/dev/defs/cgetri +86 -0
- data/dev/defs/cgetrs +91 -0
- data/dev/defs/cggbak +119 -0
- data/dev/defs/cggbal +144 -0
- data/dev/defs/cgges +247 -0
- data/dev/defs/cggesx +311 -0
- data/dev/defs/cggev +197 -0
- data/dev/defs/cggevx +353 -0
- data/dev/defs/cggglm +160 -0
- data/dev/defs/cgghrd +171 -0
- data/dev/defs/cgglse +157 -0
- data/dev/defs/cggqrf +195 -0
- data/dev/defs/cggrqf +194 -0
- data/dev/defs/cggsvd +324 -0
- data/dev/defs/cggsvp +240 -0
- data/dev/defs/cgtcon +112 -0
- data/dev/defs/cgtrfs +193 -0
- data/dev/defs/cgtsv +97 -0
- data/dev/defs/cgtsvx +275 -0
- data/dev/defs/cgttrf +97 -0
- data/dev/defs/cgttrs +119 -0
- data/dev/defs/cgtts2 +108 -0
- data/dev/defs/chbev +124 -0
- data/dev/defs/chbevd +194 -0
- data/dev/defs/chbevx +234 -0
- data/dev/defs/chbgst +137 -0
- data/dev/defs/chbgv +163 -0
- data/dev/defs/chbgvd +231 -0
- data/dev/defs/chbgvx +265 -0
- data/dev/defs/chbtrd +132 -0
- data/dev/defs/checon +91 -0
- data/dev/defs/cheequb +87 -0
- data/dev/defs/cheev +111 -0
- data/dev/defs/cheevd +178 -0
- data/dev/defs/cheevr +325 -0
- data/dev/defs/cheevx +225 -0
- data/dev/defs/chegs2 +96 -0
- data/dev/defs/chegst +96 -0
- data/dev/defs/chegv +155 -0
- data/dev/defs/chegvd +222 -0
- data/dev/defs/chegvx +270 -0
- data/dev/defs/cherfs +170 -0
- data/dev/defs/cherfsx +380 -0
- data/dev/defs/chesv +147 -0
- data/dev/defs/chesvx +261 -0
- data/dev/defs/chesvxx +481 -0
- data/dev/defs/chetd2 +143 -0
- data/dev/defs/chetf2 +141 -0
- data/dev/defs/chetrd +162 -0
- data/dev/defs/chetrf +151 -0
- data/dev/defs/chetri +83 -0
- data/dev/defs/chetrs +90 -0
- data/dev/defs/chetrs2 +97 -0
- data/dev/defs/chfrk +138 -0
- data/dev/defs/chgeqz +258 -0
- data/dev/defs/chla_transtype +32 -0
- data/dev/defs/chpcon +85 -0
- data/dev/defs/chpev +110 -0
- data/dev/defs/chpevd +179 -0
- data/dev/defs/chpevx +204 -0
- data/dev/defs/chpgst +80 -0
- data/dev/defs/chpgv +145 -0
- data/dev/defs/chpgvd +221 -0
- data/dev/defs/chpgvx +247 -0
- data/dev/defs/chprfs +156 -0
- data/dev/defs/chpsv +134 -0
- data/dev/defs/chpsvx +248 -0
- data/dev/defs/chptrd +118 -0
- data/dev/defs/chptrf +120 -0
- data/dev/defs/chptri +77 -0
- data/dev/defs/chptrs +84 -0
- data/dev/defs/chsein +217 -0
- data/dev/defs/chseqr +263 -0
- data/dev/defs/cla_gbamv +154 -0
- data/dev/defs/cla_gbrcond_c +146 -0
- data/dev/defs/cla_gbrcond_x +140 -0
- data/dev/defs/cla_gbrfsx_extended +391 -0
- data/dev/defs/cla_gbrpvgrw +94 -0
- data/dev/defs/cla_geamv +142 -0
- data/dev/defs/cla_gercond_c +128 -0
- data/dev/defs/cla_gercond_x +122 -0
- data/dev/defs/cla_gerfsx_extended +376 -0
- data/dev/defs/cla_heamv +142 -0
- data/dev/defs/cla_hercond_c +125 -0
- data/dev/defs/cla_hercond_x +119 -0
- data/dev/defs/cla_herfsx_extended +375 -0
- data/dev/defs/cla_herpvgrw +105 -0
- data/dev/defs/cla_lin_berr +79 -0
- data/dev/defs/cla_porcond_c +116 -0
- data/dev/defs/cla_porcond_x +110 -0
- data/dev/defs/cla_porfsx_extended +366 -0
- data/dev/defs/cla_porpvgrw +85 -0
- data/dev/defs/cla_rpvgrw +76 -0
- data/dev/defs/cla_syamv +142 -0
- data/dev/defs/cla_syrcond_c +125 -0
- data/dev/defs/cla_syrcond_x +119 -0
- data/dev/defs/cla_syrfsx_extended +375 -0
- data/dev/defs/cla_syrpvgrw +105 -0
- data/dev/defs/cla_wwaddw +53 -0
- data/dev/defs/clabrd +187 -0
- data/dev/defs/clacgv +44 -0
- data/dev/defs/clacn2 +91 -0
- data/dev/defs/clacon +75 -0
- data/dev/defs/clacp2 +78 -0
- data/dev/defs/clacpy +78 -0
- data/dev/defs/clacrm +88 -0
- data/dev/defs/clacrt +73 -0
- data/dev/defs/cladiv +37 -0
- data/dev/defs/claed0 +121 -0
- data/dev/defs/claed7 +237 -0
- data/dev/defs/claed8 +211 -0
- data/dev/defs/claein +117 -0
- data/dev/defs/claesy +81 -0
- data/dev/defs/claev2 +83 -0
- data/dev/defs/clag2z +73 -0
- data/dev/defs/clags2 +116 -0
- data/dev/defs/clagtm +115 -0
- data/dev/defs/clahef +127 -0
- data/dev/defs/clahqr +159 -0
- data/dev/defs/clahr2 +153 -0
- data/dev/defs/clahrd +141 -0
- data/dev/defs/claic1 +101 -0
- data/dev/defs/clals0 +251 -0
- data/dev/defs/clalsa +267 -0
- data/dev/defs/clalsd +160 -0
- data/dev/defs/clangb +92 -0
- data/dev/defs/clange +84 -0
- data/dev/defs/clangt +77 -0
- data/dev/defs/clanhb +99 -0
- data/dev/defs/clanhe +93 -0
- data/dev/defs/clanhf +211 -0
- data/dev/defs/clanhp +85 -0
- data/dev/defs/clanhs +78 -0
- data/dev/defs/clanht +69 -0
- data/dev/defs/clansb +97 -0
- data/dev/defs/clansp +83 -0
- data/dev/defs/clansy +92 -0
- data/dev/defs/clantb +108 -0
- data/dev/defs/clantp +93 -0
- data/dev/defs/clantr +109 -0
- data/dev/defs/clapll +67 -0
- data/dev/defs/clapmr +73 -0
- data/dev/defs/clapmt +73 -0
- data/dev/defs/claqgb +124 -0
- data/dev/defs/claqge +107 -0
- data/dev/defs/claqhb +105 -0
- data/dev/defs/claqhe +98 -0
- data/dev/defs/claqhp +89 -0
- data/dev/defs/claqp2 +115 -0
- data/dev/defs/claqps +146 -0
- data/dev/defs/claqr0 +203 -0
- data/dev/defs/claqr1 +66 -0
- data/dev/defs/claqr2 +243 -0
- data/dev/defs/claqr3 +238 -0
- data/dev/defs/claqr4 +203 -0
- data/dev/defs/claqr5 +221 -0
- data/dev/defs/claqsb +105 -0
- data/dev/defs/claqsp +89 -0
- data/dev/defs/claqsy +98 -0
- data/dev/defs/clar1v +199 -0
- data/dev/defs/clar2v +88 -0
- data/dev/defs/clarcm +88 -0
- data/dev/defs/clarf +97 -0
- data/dev/defs/clarfb +139 -0
- data/dev/defs/clarfg +71 -0
- data/dev/defs/clarfgp +69 -0
- data/dev/defs/clarft +133 -0
- data/dev/defs/clarfx +88 -0
- data/dev/defs/clargv +88 -0
- data/dev/defs/clarnv +63 -0
- data/dev/defs/clarrv +259 -0
- data/dev/defs/clarscl2 +61 -0
- data/dev/defs/clartg +66 -0
- data/dev/defs/clartv +82 -0
- data/dev/defs/clarz +111 -0
- data/dev/defs/clarzb +150 -0
- data/dev/defs/clarzt +151 -0
- data/dev/defs/clascl +102 -0
- data/dev/defs/clascl2 +61 -0
- data/dev/defs/claset +77 -0
- data/dev/defs/clasr +169 -0
- data/dev/defs/classq +71 -0
- data/dev/defs/claswp +81 -0
- data/dev/defs/clasyf +127 -0
- data/dev/defs/clatbs +206 -0
- data/dev/defs/clatdf +133 -0
- data/dev/defs/clatps +193 -0
- data/dev/defs/clatrd +168 -0
- data/dev/defs/clatrs +202 -0
- data/dev/defs/clatrz +106 -0
- data/dev/defs/clatzm +124 -0
- data/dev/defs/clauu2 +68 -0
- data/dev/defs/clauum +68 -0
- data/dev/defs/cpbcon +99 -0
- data/dev/defs/cpbequ +96 -0
- data/dev/defs/cpbrfs +166 -0
- data/dev/defs/cpbstf +116 -0
- data/dev/defs/cpbsv +136 -0
- data/dev/defs/cpbsvx +314 -0
- data/dev/defs/cpbtf2 +105 -0
- data/dev/defs/cpbtrf +103 -0
- data/dev/defs/cpbtrs +98 -0
- data/dev/defs/cpftrf +183 -0
- data/dev/defs/cpftri +175 -0
- data/dev/defs/cpftrs +185 -0
- data/dev/defs/cpocon +87 -0
- data/dev/defs/cpoequ +80 -0
- data/dev/defs/cpoequb +80 -0
- data/dev/defs/cporfs +160 -0
- data/dev/defs/cporfsx +371 -0
- data/dev/defs/cposv +105 -0
- data/dev/defs/cposvx +281 -0
- data/dev/defs/cposvxx +471 -0
- data/dev/defs/cpotf2 +75 -0
- data/dev/defs/cpotrf +73 -0
- data/dev/defs/cpotri +67 -0
- data/dev/defs/cpotrs +79 -0
- data/dev/defs/cppcon +85 -0
- data/dev/defs/cppequ +82 -0
- data/dev/defs/cpprfs +146 -0
- data/dev/defs/cppsv +115 -0
- data/dev/defs/cppsvx +283 -0
- data/dev/defs/cpptrf +81 -0
- data/dev/defs/cpptri +58 -0
- data/dev/defs/cpptrs +84 -0
- data/dev/defs/cpstf2 +108 -0
- data/dev/defs/cpstrf +108 -0
- data/dev/defs/cptcon +84 -0
- data/dev/defs/cpteqr +116 -0
- data/dev/defs/cptrfs +161 -0
- data/dev/defs/cptsv +89 -0
- data/dev/defs/cptsvx +210 -0
- data/dev/defs/cpttrf +59 -0
- data/dev/defs/cpttrs +98 -0
- data/dev/defs/cptts2 +89 -0
- data/dev/defs/crot +72 -0
- data/dev/defs/cspcon +85 -0
- data/dev/defs/cspmv +121 -0
- data/dev/defs/cspr +98 -0
- data/dev/defs/csprfs +156 -0
- data/dev/defs/cspsv +134 -0
- data/dev/defs/cspsvx +248 -0
- data/dev/defs/csptrf +121 -0
- data/dev/defs/csptri +77 -0
- data/dev/defs/csptrs +84 -0
- data/dev/defs/csrscl +49 -0
- data/dev/defs/cstedc +191 -0
- data/dev/defs/cstegr +233 -0
- data/dev/defs/cstein +159 -0
- data/dev/defs/cstemr +302 -0
- data/dev/defs/csteqr +103 -0
- data/dev/defs/csycon +91 -0
- data/dev/defs/csyconv +90 -0
- data/dev/defs/csyequb +104 -0
- data/dev/defs/csymv +126 -0
- data/dev/defs/csyr +102 -0
- data/dev/defs/csyrfs +170 -0
- data/dev/defs/csyrfsx +380 -0
- data/dev/defs/csysv +149 -0
- data/dev/defs/csysvx +261 -0
- data/dev/defs/csysvxx +485 -0
- data/dev/defs/csyswapr +70 -0
- data/dev/defs/csytf2 +140 -0
- data/dev/defs/csytrf +156 -0
- data/dev/defs/csytri +83 -0
- data/dev/defs/csytri2 +110 -0
- data/dev/defs/csytri2x +90 -0
- data/dev/defs/csytrs +90 -0
- data/dev/defs/csytrs2 +97 -0
- data/dev/defs/ctbcon +109 -0
- data/dev/defs/ctbrfs +164 -0
- data/dev/defs/ctbtrs +113 -0
- data/dev/defs/ctfsm +259 -0
- data/dev/defs/ctftri +183 -0
- data/dev/defs/ctfttp +172 -0
- data/dev/defs/ctfttr +182 -0
- data/dev/defs/ctgevc +194 -0
- data/dev/defs/ctgex2 +158 -0
- data/dev/defs/ctgexc +176 -0
- data/dev/defs/ctgsen +406 -0
- data/dev/defs/ctgsja +344 -0
- data/dev/defs/ctgsna +282 -0
- data/dev/defs/ctgsy2 +235 -0
- data/dev/defs/ctgsyl +273 -0
- data/dev/defs/ctpcon +95 -0
- data/dev/defs/ctprfs +150 -0
- data/dev/defs/ctptri +79 -0
- data/dev/defs/ctptrs +98 -0
- data/dev/defs/ctpttf +172 -0
- data/dev/defs/ctpttr +73 -0
- data/dev/defs/ctrcon +103 -0
- data/dev/defs/ctrevc +188 -0
- data/dev/defs/ctrexc +99 -0
- data/dev/defs/ctrrfs +158 -0
- data/dev/defs/ctrsen +234 -0
- data/dev/defs/ctrsna +223 -0
- data/dev/defs/ctrsyl +126 -0
- data/dev/defs/ctrti2 +76 -0
- data/dev/defs/ctrtri +75 -0
- data/dev/defs/ctrtrs +107 -0
- data/dev/defs/ctrttf +181 -0
- data/dev/defs/ctrttp +72 -0
- data/dev/defs/ctzrqf +104 -0
- data/dev/defs/ctzrzf +128 -0
- data/dev/defs/cunbdb +270 -0
- data/dev/defs/cuncsd +283 -0
- data/dev/defs/cung2l +85 -0
- data/dev/defs/cung2r +85 -0
- data/dev/defs/cungbr +129 -0
- data/dev/defs/cunghr +97 -0
- data/dev/defs/cungl2 +84 -0
- data/dev/defs/cunglq +100 -0
- data/dev/defs/cungql +101 -0
- data/dev/defs/cungqr +101 -0
- data/dev/defs/cungr2 +85 -0
- data/dev/defs/cungrq +101 -0
- data/dev/defs/cungtr +95 -0
- data/dev/defs/cunm2l +130 -0
- data/dev/defs/cunm2r +130 -0
- data/dev/defs/cunmbr +179 -0
- data/dev/defs/cunmhr +157 -0
- data/dev/defs/cunml2 +130 -0
- data/dev/defs/cunmlq +143 -0
- data/dev/defs/cunmql +143 -0
- data/dev/defs/cunmqr +143 -0
- data/dev/defs/cunmr2 +130 -0
- data/dev/defs/cunmr3 +152 -0
- data/dev/defs/cunmrq +143 -0
- data/dev/defs/cunmrz +157 -0
- data/dev/defs/cunmtr +152 -0
- data/dev/defs/cupgtr +87 -0
- data/dev/defs/cupmtr +120 -0
- data/dev/defs/dbbcsd +297 -0
- data/dev/defs/dbdsdc +194 -0
- data/dev/defs/dbdsqr +203 -0
- data/dev/defs/ddisna +84 -0
- data/dev/defs/dgbbrd +167 -0
- data/dev/defs/dgbcon +114 -0
- data/dev/defs/dgbequ +121 -0
- data/dev/defs/dgbequb +128 -0
- data/dev/defs/dgbrfs +182 -0
- data/dev/defs/dgbrfsx +418 -0
- data/dev/defs/dgbsv +134 -0
- data/dev/defs/dgbsvx +353 -0
- data/dev/defs/dgbsvxx +536 -0
- data/dev/defs/dgbtf2 +110 -0
- data/dev/defs/dgbtrf +109 -0
- data/dev/defs/dgbtrs +106 -0
- data/dev/defs/dgebak +95 -0
- data/dev/defs/dgebal +125 -0
- data/dev/defs/dgebd2 +162 -0
- data/dev/defs/dgebrd +178 -0
- data/dev/defs/dgecon +90 -0
- data/dev/defs/dgeequ +107 -0
- data/dev/defs/dgeequb +114 -0
- data/dev/defs/dgees +188 -0
- data/dev/defs/dgeesx +251 -0
- data/dev/defs/dgeev +166 -0
- data/dev/defs/dgeevx +282 -0
- data/dev/defs/dgegs +207 -0
- data/dev/defs/dgegv +286 -0
- data/dev/defs/dgehd2 +115 -0
- data/dev/defs/dgehrd +136 -0
- data/dev/defs/dgejsv +862 -0
- data/dev/defs/dgelq2 +89 -0
- data/dev/defs/dgelqf +113 -0
- data/dev/defs/dgels +158 -0
- data/dev/defs/dgelsd +193 -0
- data/dev/defs/dgelss +149 -0
- data/dev/defs/dgelsx +148 -0
- data/dev/defs/dgelsy +181 -0
- data/dev/defs/dgeql2 +91 -0
- data/dev/defs/dgeqlf +116 -0
- data/dev/defs/dgeqp3 +120 -0
- data/dev/defs/dgeqpf +111 -0
- data/dev/defs/dgeqr2 +89 -0
- data/dev/defs/dgeqr2p +89 -0
- data/dev/defs/dgeqrf +114 -0
- data/dev/defs/dgeqrfp +114 -0
- data/dev/defs/dgerfs +164 -0
- data/dev/defs/dgerfsx +394 -0
- data/dev/defs/dgerq2 +91 -0
- data/dev/defs/dgerqf +116 -0
- data/dev/defs/dgesc2 +86 -0
- data/dev/defs/dgesdd +197 -0
- data/dev/defs/dgesv +97 -0
- data/dev/defs/dgesvd +188 -0
- data/dev/defs/dgesvj +308 -0
- data/dev/defs/dgesvx +333 -0
- data/dev/defs/dgesvxx +516 -0
- data/dev/defs/dgetc2 +82 -0
- data/dev/defs/dgetf2 +76 -0
- data/dev/defs/dgetrf +76 -0
- data/dev/defs/dgetri +86 -0
- data/dev/defs/dgetrs +91 -0
- data/dev/defs/dggbak +119 -0
- data/dev/defs/dggbal +145 -0
- data/dev/defs/dgges +261 -0
- data/dev/defs/dggesx +342 -0
- data/dev/defs/dggev +206 -0
- data/dev/defs/dggevx +371 -0
- data/dev/defs/dggglm +160 -0
- data/dev/defs/dgghrd +174 -0
- data/dev/defs/dgglse +157 -0
- data/dev/defs/dggqrf +195 -0
- data/dev/defs/dggrqf +194 -0
- data/dev/defs/dggsvd +319 -0
- data/dev/defs/dggsvp +233 -0
- data/dev/defs/dgsvj0 +200 -0
- data/dev/defs/dgsvj1 +220 -0
- data/dev/defs/dgtcon +119 -0
- data/dev/defs/dgtrfs +193 -0
- data/dev/defs/dgtsv +100 -0
- data/dev/defs/dgtsvx +275 -0
- data/dev/defs/dgttrf +97 -0
- data/dev/defs/dgttrs +119 -0
- data/dev/defs/dgtts2 +106 -0
- data/dev/defs/dhgeqz +282 -0
- data/dev/defs/dhsein +234 -0
- data/dev/defs/dhseqr +279 -0
- data/dev/defs/disnan +29 -0
- data/dev/defs/dla_gbamv +152 -0
- data/dev/defs/dla_gbrcond +152 -0
- data/dev/defs/dla_gbrfsx_extended +393 -0
- data/dev/defs/dla_gbrpvgrw +90 -0
- data/dev/defs/dla_geamv +142 -0
- data/dev/defs/dla_gercond +134 -0
- data/dev/defs/dla_gerfsx_extended +379 -0
- data/dev/defs/dla_lin_berr +78 -0
- data/dev/defs/dla_porcond +122 -0
- data/dev/defs/dla_porfsx_extended +366 -0
- data/dev/defs/dla_porpvgrw +81 -0
- data/dev/defs/dla_rpvgrw +72 -0
- data/dev/defs/dla_syamv +142 -0
- data/dev/defs/dla_syrcond +131 -0
- data/dev/defs/dla_syrfsx_extended +375 -0
- data/dev/defs/dla_syrpvgrw +101 -0
- data/dev/defs/dla_wwaddw +53 -0
- data/dev/defs/dlabad +43 -0
- data/dev/defs/dlabrd +186 -0
- data/dev/defs/dlacn2 +96 -0
- data/dev/defs/dlacon +80 -0
- data/dev/defs/dlacpy +78 -0
- data/dev/defs/dladiv +57 -0
- data/dev/defs/dlae2 +66 -0
- data/dev/defs/dlaebz +292 -0
- data/dev/defs/dlaed0 +147 -0
- data/dev/defs/dlaed1 +141 -0
- data/dev/defs/dlaed2 +194 -0
- data/dev/defs/dlaed3 +167 -0
- data/dev/defs/dlaed4 +113 -0
- data/dev/defs/dlaed5 +78 -0
- data/dev/defs/dlaed6 +101 -0
- data/dev/defs/dlaed7 +241 -0
- data/dev/defs/dlaed8 +227 -0
- data/dev/defs/dlaed9 +137 -0
- data/dev/defs/dlaeda +147 -0
- data/dev/defs/dlaein +141 -0
- data/dev/defs/dlaev2 +83 -0
- data/dev/defs/dlaexc +107 -0
- data/dev/defs/dlag2 +123 -0
- data/dev/defs/dlag2s +81 -0
- data/dev/defs/dlags2 +108 -0
- data/dev/defs/dlagtf +128 -0
- data/dev/defs/dlagtm +115 -0
- data/dev/defs/dlagts +135 -0
- data/dev/defs/dlagv2 +128 -0
- data/dev/defs/dlahqr +172 -0
- data/dev/defs/dlahr2 +153 -0
- data/dev/defs/dlahrd +141 -0
- data/dev/defs/dlaic1 +101 -0
- data/dev/defs/dlaln2 +187 -0
- data/dev/defs/dlals0 +250 -0
- data/dev/defs/dlalsa +268 -0
- data/dev/defs/dlalsd +152 -0
- data/dev/defs/dlamrg +66 -0
- data/dev/defs/dlaneg +87 -0
- data/dev/defs/dlangb +93 -0
- data/dev/defs/dlange +84 -0
- data/dev/defs/dlangt +77 -0
- data/dev/defs/dlanhs +78 -0
- data/dev/defs/dlansb +97 -0
- data/dev/defs/dlansf +178 -0
- data/dev/defs/dlansp +83 -0
- data/dev/defs/dlanst +69 -0
- data/dev/defs/dlansy +92 -0
- data/dev/defs/dlantb +108 -0
- data/dev/defs/dlantp +93 -0
- data/dev/defs/dlantr +109 -0
- data/dev/defs/dlanv2 +84 -0
- data/dev/defs/dlapll +69 -0
- data/dev/defs/dlapmr +73 -0
- data/dev/defs/dlapmt +73 -0
- data/dev/defs/dlapy2 +30 -0
- data/dev/defs/dlapy3 +34 -0
- data/dev/defs/dlaqgb +124 -0
- data/dev/defs/dlaqge +107 -0
- data/dev/defs/dlaqp2 +115 -0
- data/dev/defs/dlaqps +146 -0
- data/dev/defs/dlaqr0 +225 -0
- data/dev/defs/dlaqr1 +79 -0
- data/dev/defs/dlaqr2 +252 -0
- data/dev/defs/dlaqr3 +247 -0
- data/dev/defs/dlaqr4 +225 -0
- data/dev/defs/dlaqr5 +230 -0
- data/dev/defs/dlaqsb +105 -0
- data/dev/defs/dlaqsp +89 -0
- data/dev/defs/dlaqsy +98 -0
- data/dev/defs/dlaqtr +134 -0
- data/dev/defs/dlar1v +199 -0
- data/dev/defs/dlar2v +86 -0
- data/dev/defs/dlarf +93 -0
- data/dev/defs/dlarfb +139 -0
- data/dev/defs/dlarfg +71 -0
- data/dev/defs/dlarfgp +69 -0
- data/dev/defs/dlarft +133 -0
- data/dev/defs/dlarfx +89 -0
- data/dev/defs/dlargv +74 -0
- data/dev/defs/dlarnv +61 -0
- data/dev/defs/dlarra +106 -0
- data/dev/defs/dlarrb +167 -0
- data/dev/defs/dlarrc +99 -0
- data/dev/defs/dlarrd +290 -0
- data/dev/defs/dlarre +265 -0
- data/dev/defs/dlarrf +168 -0
- data/dev/defs/dlarrj +138 -0
- data/dev/defs/dlarrk +108 -0
- data/dev/defs/dlarrr +62 -0
- data/dev/defs/dlarrv +259 -0
- data/dev/defs/dlarscl2 +61 -0
- data/dev/defs/dlartg +64 -0
- data/dev/defs/dlartgp +62 -0
- data/dev/defs/dlartgs +57 -0
- data/dev/defs/dlartv +82 -0
- data/dev/defs/dlaruv +59 -0
- data/dev/defs/dlarz +109 -0
- data/dev/defs/dlarzb +150 -0
- data/dev/defs/dlarzt +151 -0
- data/dev/defs/dlas2 +71 -0
- data/dev/defs/dlascl +102 -0
- data/dev/defs/dlascl2 +61 -0
- data/dev/defs/dlasd0 +133 -0
- data/dev/defs/dlasd1 +180 -0
- data/dev/defs/dlasd2 +254 -0
- data/dev/defs/dlasd3 +213 -0
- data/dev/defs/dlasd4 +123 -0
- data/dev/defs/dlasd5 +88 -0
- data/dev/defs/dlasd6 +300 -0
- data/dev/defs/dlasd7 +264 -0
- data/dev/defs/dlasd8 +144 -0
- data/dev/defs/dlasda +276 -0
- data/dev/defs/dlasdq +187 -0
- data/dev/defs/dlasdt +76 -0
- data/dev/defs/dlaset +81 -0
- data/dev/defs/dlasq1 +75 -0
- data/dev/defs/dlasq2 +73 -0
- data/dev/defs/dlasq3 +141 -0
- data/dev/defs/dlasq4 +107 -0
- data/dev/defs/dlasq5 +100 -0
- data/dev/defs/dlasq6 +90 -0
- data/dev/defs/dlasr +169 -0
- data/dev/defs/dlasrt +53 -0
- data/dev/defs/dlassq +68 -0
- data/dev/defs/dlasv2 +100 -0
- data/dev/defs/dlaswp +81 -0
- data/dev/defs/dlasy2 +145 -0
- data/dev/defs/dlasyf +126 -0
- data/dev/defs/dlat2s +83 -0
- data/dev/defs/dlatbs +206 -0
- data/dev/defs/dlatdf +131 -0
- data/dev/defs/dlatps +192 -0
- data/dev/defs/dlatrd +168 -0
- data/dev/defs/dlatrs +202 -0
- data/dev/defs/dlatrz +106 -0
- data/dev/defs/dlatzm +123 -0
- data/dev/defs/dlauu2 +68 -0
- data/dev/defs/dlauum +68 -0
- data/dev/defs/dopgtr +87 -0
- data/dev/defs/dopmtr +120 -0
- data/dev/defs/dorbdb +270 -0
- data/dev/defs/dorcsd +264 -0
- data/dev/defs/dorg2l +85 -0
- data/dev/defs/dorg2r +85 -0
- data/dev/defs/dorgbr +129 -0
- data/dev/defs/dorghr +97 -0
- data/dev/defs/dorgl2 +84 -0
- data/dev/defs/dorglq +100 -0
- data/dev/defs/dorgql +101 -0
- data/dev/defs/dorgqr +101 -0
- data/dev/defs/dorgr2 +85 -0
- data/dev/defs/dorgrq +101 -0
- data/dev/defs/dorgtr +95 -0
- data/dev/defs/dorm2l +130 -0
- data/dev/defs/dorm2r +130 -0
- data/dev/defs/dormbr +176 -0
- data/dev/defs/dormhr +157 -0
- data/dev/defs/dorml2 +130 -0
- data/dev/defs/dormlq +143 -0
- data/dev/defs/dormql +143 -0
- data/dev/defs/dormqr +143 -0
- data/dev/defs/dormr2 +130 -0
- data/dev/defs/dormr3 +152 -0
- data/dev/defs/dormrq +143 -0
- data/dev/defs/dormrz +157 -0
- data/dev/defs/dormtr +152 -0
- data/dev/defs/dpbcon +98 -0
- data/dev/defs/dpbequ +96 -0
- data/dev/defs/dpbrfs +166 -0
- data/dev/defs/dpbstf +115 -0
- data/dev/defs/dpbsv +136 -0
- data/dev/defs/dpbsvx +314 -0
- data/dev/defs/dpbtf2 +105 -0
- data/dev/defs/dpbtrf +103 -0
- data/dev/defs/dpbtrs +98 -0
- data/dev/defs/dpftrf +161 -0
- data/dev/defs/dpftri +154 -0
- data/dev/defs/dpftrs +164 -0
- data/dev/defs/dpocon +87 -0
- data/dev/defs/dpoequ +80 -0
- data/dev/defs/dpoequb +80 -0
- data/dev/defs/dporfs +160 -0
- data/dev/defs/dporfsx +370 -0
- data/dev/defs/dposv +105 -0
- data/dev/defs/dposvx +281 -0
- data/dev/defs/dposvxx +468 -0
- data/dev/defs/dpotf2 +75 -0
- data/dev/defs/dpotrf +73 -0
- data/dev/defs/dpotri +67 -0
- data/dev/defs/dpotrs +79 -0
- data/dev/defs/dppcon +85 -0
- data/dev/defs/dppequ +82 -0
- data/dev/defs/dpprfs +146 -0
- data/dev/defs/dppsv +115 -0
- data/dev/defs/dppsvx +283 -0
- data/dev/defs/dpptrf +81 -0
- data/dev/defs/dpptri +58 -0
- data/dev/defs/dpptrs +84 -0
- data/dev/defs/dpstf2 +108 -0
- data/dev/defs/dpstrf +108 -0
- data/dev/defs/dptcon +84 -0
- data/dev/defs/dpteqr +117 -0
- data/dev/defs/dptrfs +141 -0
- data/dev/defs/dptsv +89 -0
- data/dev/defs/dptsvx +203 -0
- data/dev/defs/dpttrf +59 -0
- data/dev/defs/dpttrs +88 -0
- data/dev/defs/dptts2 +77 -0
- data/dev/defs/drscl +49 -0
- data/dev/defs/dsbev +117 -0
- data/dev/defs/dsbevd +169 -0
- data/dev/defs/dsbevx +231 -0
- data/dev/defs/dsbgst +130 -0
- data/dev/defs/dsbgv +156 -0
- data/dev/defs/dsbgvd +206 -0
- data/dev/defs/dsbgvx +259 -0
- data/dev/defs/dsbtrd +132 -0
- data/dev/defs/dsfrk +134 -0
- data/dev/defs/dsgesv +170 -0
- data/dev/defs/dspcon +92 -0
- data/dev/defs/dspev +103 -0
- data/dev/defs/dspevd +155 -0
- data/dev/defs/dspevx +197 -0
- data/dev/defs/dspgst +80 -0
- data/dev/defs/dspgv +139 -0
- data/dev/defs/dspgvd +188 -0
- data/dev/defs/dspgvx +241 -0
- data/dev/defs/dsposv +173 -0
- data/dev/defs/dsprfs +156 -0
- data/dev/defs/dspsv +134 -0
- data/dev/defs/dspsvx +249 -0
- data/dev/defs/dsptrd +118 -0
- data/dev/defs/dsptrf +120 -0
- data/dev/defs/dsptri +77 -0
- data/dev/defs/dsptrs +84 -0
- data/dev/defs/dstebz +229 -0
- data/dev/defs/dstedc +165 -0
- data/dev/defs/dstegr +233 -0
- data/dev/defs/dstein +152 -0
- data/dev/defs/dstemr +285 -0
- data/dev/defs/dsteqr +103 -0
- data/dev/defs/dsterf +54 -0
- data/dev/defs/dstev +88 -0
- data/dev/defs/dstevd +138 -0
- data/dev/defs/dstevr +273 -0
- data/dev/defs/dstevx +193 -0
- data/dev/defs/dsycon +98 -0
- data/dev/defs/dsyconv +90 -0
- data/dev/defs/dsyequb +104 -0
- data/dev/defs/dsyev +104 -0
- data/dev/defs/dsyevd +157 -0
- data/dev/defs/dsyevr +300 -0
- data/dev/defs/dsyevx +218 -0
- data/dev/defs/dsygs2 +96 -0
- data/dev/defs/dsygst +96 -0
- data/dev/defs/dsygv +148 -0
- data/dev/defs/dsygvd +197 -0
- data/dev/defs/dsygvx +263 -0
- data/dev/defs/dsyrfs +170 -0
- data/dev/defs/dsyrfsx +380 -0
- data/dev/defs/dsysv +149 -0
- data/dev/defs/dsysvx +261 -0
- data/dev/defs/dsysvxx +481 -0
- data/dev/defs/dsyswapr +70 -0
- data/dev/defs/dsytd2 +142 -0
- data/dev/defs/dsytf2 +143 -0
- data/dev/defs/dsytrd +162 -0
- data/dev/defs/dsytrf +156 -0
- data/dev/defs/dsytri +83 -0
- data/dev/defs/dsytri2 +110 -0
- data/dev/defs/dsytri2x +90 -0
- data/dev/defs/dsytrs +90 -0
- data/dev/defs/dsytrs2 +97 -0
- data/dev/defs/dtbcon +109 -0
- data/dev/defs/dtbrfs +164 -0
- data/dev/defs/dtbtrs +113 -0
- data/dev/defs/dtfsm +243 -0
- data/dev/defs/dtftri +163 -0
- data/dev/defs/dtfttp +151 -0
- data/dev/defs/dtfttr +176 -0
- data/dev/defs/dtgevc +265 -0
- data/dev/defs/dtgex2 +191 -0
- data/dev/defs/dtgexc +190 -0
- data/dev/defs/dtgsen +422 -0
- data/dev/defs/dtgsja +343 -0
- data/dev/defs/dtgsna +354 -0
- data/dev/defs/dtgsy2 +252 -0
- data/dev/defs/dtgsyl +274 -0
- data/dev/defs/dtpcon +95 -0
- data/dev/defs/dtprfs +150 -0
- data/dev/defs/dtptri +79 -0
- data/dev/defs/dtptrs +98 -0
- data/dev/defs/dtpttf +151 -0
- data/dev/defs/dtpttr +73 -0
- data/dev/defs/dtrcon +103 -0
- data/dev/defs/dtrevc +191 -0
- data/dev/defs/dtrexc +113 -0
- data/dev/defs/dtrrfs +158 -0
- data/dev/defs/dtrsen +284 -0
- data/dev/defs/dtrsna +239 -0
- data/dev/defs/dtrsyl +133 -0
- data/dev/defs/dtrti2 +76 -0
- data/dev/defs/dtrtri +75 -0
- data/dev/defs/dtrtrs +107 -0
- data/dev/defs/dtrttf +171 -0
- data/dev/defs/dtrttp +72 -0
- data/dev/defs/dtzrqf +104 -0
- data/dev/defs/dtzrzf +128 -0
- data/dev/defs/dzsum1 +49 -0
- data/dev/defs/icmax1 +55 -0
- data/dev/defs/ieeeck +49 -0
- data/dev/defs/ilaclc +46 -0
- data/dev/defs/ilaclr +46 -0
- data/dev/defs/iladiag +30 -0
- data/dev/defs/iladlc +46 -0
- data/dev/defs/iladlr +46 -0
- data/dev/defs/ilaenv +133 -0
- data/dev/defs/ilaprec +33 -0
- data/dev/defs/ilaslc +46 -0
- data/dev/defs/ilaslr +46 -0
- data/dev/defs/ilatrans +32 -0
- data/dev/defs/ilauplo +30 -0
- data/dev/defs/ilaver +35 -0
- data/dev/defs/ilazlc +46 -0
- data/dev/defs/ilazlr +46 -0
- data/dev/defs/iparmq +177 -0
- data/dev/defs/izmax1 +55 -0
- data/dev/defs/lsamen +50 -0
- data/dev/defs/sbbcsd +297 -0
- data/dev/defs/sbdsdc +192 -0
- data/dev/defs/sbdsqr +203 -0
- data/dev/defs/scsum1 +49 -0
- data/dev/defs/sdisna +84 -0
- data/dev/defs/sgbbrd +167 -0
- data/dev/defs/sgbcon +114 -0
- data/dev/defs/sgbequ +121 -0
- data/dev/defs/sgbequb +128 -0
- data/dev/defs/sgbrfs +182 -0
- data/dev/defs/sgbrfsx +419 -0
- data/dev/defs/sgbsv +134 -0
- data/dev/defs/sgbsvx +356 -0
- data/dev/defs/sgbsvxx +539 -0
- data/dev/defs/sgbtf2 +110 -0
- data/dev/defs/sgbtrf +109 -0
- data/dev/defs/sgbtrs +106 -0
- data/dev/defs/sgebak +95 -0
- data/dev/defs/sgebal +125 -0
- data/dev/defs/sgebd2 +162 -0
- data/dev/defs/sgebrd +178 -0
- data/dev/defs/sgecon +90 -0
- data/dev/defs/sgeequ +107 -0
- data/dev/defs/sgeequb +114 -0
- data/dev/defs/sgees +188 -0
- data/dev/defs/sgeesx +251 -0
- data/dev/defs/sgeev +166 -0
- data/dev/defs/sgeevx +282 -0
- data/dev/defs/sgegs +207 -0
- data/dev/defs/sgegv +286 -0
- data/dev/defs/sgehd2 +115 -0
- data/dev/defs/sgehrd +136 -0
- data/dev/defs/sgejsv +860 -0
- data/dev/defs/sgelq2 +89 -0
- data/dev/defs/sgelqf +113 -0
- data/dev/defs/sgels +158 -0
- data/dev/defs/sgelsd +194 -0
- data/dev/defs/sgelss +149 -0
- data/dev/defs/sgelsx +148 -0
- data/dev/defs/sgelsy +181 -0
- data/dev/defs/sgeql2 +91 -0
- data/dev/defs/sgeqlf +116 -0
- data/dev/defs/sgeqp3 +120 -0
- data/dev/defs/sgeqpf +111 -0
- data/dev/defs/sgeqr2 +89 -0
- data/dev/defs/sgeqr2p +89 -0
- data/dev/defs/sgeqrf +114 -0
- data/dev/defs/sgeqrfp +114 -0
- data/dev/defs/sgerfs +164 -0
- data/dev/defs/sgerfsx +394 -0
- data/dev/defs/sgerq2 +91 -0
- data/dev/defs/sgerqf +116 -0
- data/dev/defs/sgesc2 +86 -0
- data/dev/defs/sgesdd +197 -0
- data/dev/defs/sgesv +97 -0
- data/dev/defs/sgesvd +188 -0
- data/dev/defs/sgesvj +304 -0
- data/dev/defs/sgesvx +333 -0
- data/dev/defs/sgesvxx +519 -0
- data/dev/defs/sgetc2 +82 -0
- data/dev/defs/sgetf2 +76 -0
- data/dev/defs/sgetrf +76 -0
- data/dev/defs/sgetri +86 -0
- data/dev/defs/sgetrs +91 -0
- data/dev/defs/sggbak +119 -0
- data/dev/defs/sggbal +144 -0
- data/dev/defs/sgges +261 -0
- data/dev/defs/sggesx +342 -0
- data/dev/defs/sggev +206 -0
- data/dev/defs/sggevx +371 -0
- data/dev/defs/sggglm +160 -0
- data/dev/defs/sgghrd +174 -0
- data/dev/defs/sgglse +157 -0
- data/dev/defs/sggqrf +195 -0
- data/dev/defs/sggrqf +194 -0
- data/dev/defs/sggsvd +319 -0
- data/dev/defs/sggsvp +233 -0
- data/dev/defs/sgsvj0 +200 -0
- data/dev/defs/sgsvj1 +220 -0
- data/dev/defs/sgtcon +119 -0
- data/dev/defs/sgtrfs +193 -0
- data/dev/defs/sgtsv +100 -0
- data/dev/defs/sgtsvx +275 -0
- data/dev/defs/sgttrf +97 -0
- data/dev/defs/sgttrs +119 -0
- data/dev/defs/sgtts2 +106 -0
- data/dev/defs/shgeqz +282 -0
- data/dev/defs/shsein +234 -0
- data/dev/defs/shseqr +279 -0
- data/dev/defs/sisnan +29 -0
- data/dev/defs/sla_gbamv +152 -0
- data/dev/defs/sla_gbrcond +152 -0
- data/dev/defs/sla_gbrfsx_extended +391 -0
- data/dev/defs/sla_gbrpvgrw +90 -0
- data/dev/defs/sla_geamv +142 -0
- data/dev/defs/sla_gercond +134 -0
- data/dev/defs/sla_gerfsx_extended +376 -0
- data/dev/defs/sla_lin_berr +78 -0
- data/dev/defs/sla_porcond +122 -0
- data/dev/defs/sla_porfsx_extended +363 -0
- data/dev/defs/sla_porpvgrw +81 -0
- data/dev/defs/sla_rpvgrw +72 -0
- data/dev/defs/sla_syamv +142 -0
- data/dev/defs/sla_syrcond +131 -0
- data/dev/defs/sla_syrfsx_extended +372 -0
- data/dev/defs/sla_syrpvgrw +101 -0
- data/dev/defs/sla_wwaddw +53 -0
- data/dev/defs/slabad +43 -0
- data/dev/defs/slabrd +186 -0
- data/dev/defs/slacn2 +96 -0
- data/dev/defs/slacon +80 -0
- data/dev/defs/slacpy +78 -0
- data/dev/defs/sladiv +57 -0
- data/dev/defs/slae2 +66 -0
- data/dev/defs/slaebz +292 -0
- data/dev/defs/slaed0 +147 -0
- data/dev/defs/slaed1 +141 -0
- data/dev/defs/slaed2 +194 -0
- data/dev/defs/slaed3 +167 -0
- data/dev/defs/slaed4 +113 -0
- data/dev/defs/slaed5 +78 -0
- data/dev/defs/slaed6 +101 -0
- data/dev/defs/slaed7 +241 -0
- data/dev/defs/slaed8 +227 -0
- data/dev/defs/slaed9 +137 -0
- data/dev/defs/slaeda +147 -0
- data/dev/defs/slaein +141 -0
- data/dev/defs/slaev2 +83 -0
- data/dev/defs/slaexc +107 -0
- data/dev/defs/slag2 +123 -0
- data/dev/defs/slag2d +74 -0
- data/dev/defs/slags2 +108 -0
- data/dev/defs/slagtf +128 -0
- data/dev/defs/slagtm +115 -0
- data/dev/defs/slagts +135 -0
- data/dev/defs/slagv2 +128 -0
- data/dev/defs/slahqr +172 -0
- data/dev/defs/slahr2 +153 -0
- data/dev/defs/slahrd +142 -0
- data/dev/defs/slaic1 +101 -0
- data/dev/defs/slaln2 +187 -0
- data/dev/defs/slals0 +250 -0
- data/dev/defs/slalsa +268 -0
- data/dev/defs/slalsd +150 -0
- data/dev/defs/slamrg +66 -0
- data/dev/defs/slaneg +87 -0
- data/dev/defs/slangb +93 -0
- data/dev/defs/slange +84 -0
- data/dev/defs/slangt +77 -0
- data/dev/defs/slanhs +78 -0
- data/dev/defs/slansb +97 -0
- data/dev/defs/slansf +179 -0
- data/dev/defs/slansp +83 -0
- data/dev/defs/slanst +69 -0
- data/dev/defs/slansy +92 -0
- data/dev/defs/slantb +108 -0
- data/dev/defs/slantp +93 -0
- data/dev/defs/slantr +109 -0
- data/dev/defs/slanv2 +84 -0
- data/dev/defs/slapll +69 -0
- data/dev/defs/slapmr +73 -0
- data/dev/defs/slapmt +73 -0
- data/dev/defs/slapy2 +30 -0
- data/dev/defs/slapy3 +34 -0
- data/dev/defs/slaqgb +124 -0
- data/dev/defs/slaqge +107 -0
- data/dev/defs/slaqp2 +115 -0
- data/dev/defs/slaqps +146 -0
- data/dev/defs/slaqr0 +225 -0
- data/dev/defs/slaqr1 +79 -0
- data/dev/defs/slaqr2 +252 -0
- data/dev/defs/slaqr3 +247 -0
- data/dev/defs/slaqr4 +225 -0
- data/dev/defs/slaqr5 +230 -0
- data/dev/defs/slaqsb +105 -0
- data/dev/defs/slaqsp +89 -0
- data/dev/defs/slaqsy +98 -0
- data/dev/defs/slaqtr +134 -0
- data/dev/defs/slar1v +199 -0
- data/dev/defs/slar2v +86 -0
- data/dev/defs/slarf +93 -0
- data/dev/defs/slarfb +139 -0
- data/dev/defs/slarfg +71 -0
- data/dev/defs/slarfgp +69 -0
- data/dev/defs/slarft +133 -0
- data/dev/defs/slarfx +89 -0
- data/dev/defs/slargv +74 -0
- data/dev/defs/slarnv +61 -0
- data/dev/defs/slarra +106 -0
- data/dev/defs/slarrb +167 -0
- data/dev/defs/slarrc +99 -0
- data/dev/defs/slarrd +290 -0
- data/dev/defs/slarre +265 -0
- data/dev/defs/slarrf +165 -0
- data/dev/defs/slarrj +138 -0
- data/dev/defs/slarrk +108 -0
- data/dev/defs/slarrr +62 -0
- data/dev/defs/slarrv +259 -0
- data/dev/defs/slarscl2 +61 -0
- data/dev/defs/slartg +64 -0
- data/dev/defs/slartgp +62 -0
- data/dev/defs/slartgs +57 -0
- data/dev/defs/slartv +82 -0
- data/dev/defs/slaruv +59 -0
- data/dev/defs/slarz +109 -0
- data/dev/defs/slarzb +150 -0
- data/dev/defs/slarzt +151 -0
- data/dev/defs/slas2 +71 -0
- data/dev/defs/slascl +102 -0
- data/dev/defs/slascl2 +61 -0
- data/dev/defs/slasd0 +131 -0
- data/dev/defs/slasd1 +179 -0
- data/dev/defs/slasd2 +254 -0
- data/dev/defs/slasd3 +213 -0
- data/dev/defs/slasd4 +123 -0
- data/dev/defs/slasd5 +88 -0
- data/dev/defs/slasd6 +300 -0
- data/dev/defs/slasd7 +264 -0
- data/dev/defs/slasd8 +144 -0
- data/dev/defs/slasda +275 -0
- data/dev/defs/slasdq +187 -0
- data/dev/defs/slasdt +76 -0
- data/dev/defs/slaset +81 -0
- data/dev/defs/slasq1 +75 -0
- data/dev/defs/slasq2 +73 -0
- data/dev/defs/slasq3 +141 -0
- data/dev/defs/slasq4 +107 -0
- data/dev/defs/slasq5 +100 -0
- data/dev/defs/slasq6 +90 -0
- data/dev/defs/slasr +169 -0
- data/dev/defs/slasrt +53 -0
- data/dev/defs/slassq +68 -0
- data/dev/defs/slasv2 +100 -0
- data/dev/defs/slaswp +81 -0
- data/dev/defs/slasy2 +145 -0
- data/dev/defs/slasyf +126 -0
- data/dev/defs/slatbs +206 -0
- data/dev/defs/slatdf +131 -0
- data/dev/defs/slatps +192 -0
- data/dev/defs/slatrd +168 -0
- data/dev/defs/slatrs +202 -0
- data/dev/defs/slatrz +106 -0
- data/dev/defs/slatzm +123 -0
- data/dev/defs/slauu2 +68 -0
- data/dev/defs/slauum +68 -0
- data/dev/defs/sopgtr +87 -0
- data/dev/defs/sopmtr +120 -0
- data/dev/defs/sorbdb +270 -0
- data/dev/defs/sorcsd +264 -0
- data/dev/defs/sorg2l +85 -0
- data/dev/defs/sorg2r +85 -0
- data/dev/defs/sorgbr +129 -0
- data/dev/defs/sorghr +97 -0
- data/dev/defs/sorgl2 +84 -0
- data/dev/defs/sorglq +100 -0
- data/dev/defs/sorgql +101 -0
- data/dev/defs/sorgqr +101 -0
- data/dev/defs/sorgr2 +85 -0
- data/dev/defs/sorgrq +101 -0
- data/dev/defs/sorgtr +95 -0
- data/dev/defs/sorm2l +130 -0
- data/dev/defs/sorm2r +130 -0
- data/dev/defs/sormbr +176 -0
- data/dev/defs/sormhr +157 -0
- data/dev/defs/sorml2 +130 -0
- data/dev/defs/sormlq +143 -0
- data/dev/defs/sormql +143 -0
- data/dev/defs/sormqr +143 -0
- data/dev/defs/sormr2 +130 -0
- data/dev/defs/sormr3 +152 -0
- data/dev/defs/sormrq +143 -0
- data/dev/defs/sormrz +157 -0
- data/dev/defs/sormtr +152 -0
- data/dev/defs/spbcon +98 -0
- data/dev/defs/spbequ +96 -0
- data/dev/defs/spbrfs +166 -0
- data/dev/defs/spbstf +115 -0
- data/dev/defs/spbsv +136 -0
- data/dev/defs/spbsvx +314 -0
- data/dev/defs/spbtf2 +105 -0
- data/dev/defs/spbtrf +103 -0
- data/dev/defs/spbtrs +98 -0
- data/dev/defs/spftrf +161 -0
- data/dev/defs/spftri +154 -0
- data/dev/defs/spftrs +164 -0
- data/dev/defs/spocon +87 -0
- data/dev/defs/spoequ +80 -0
- data/dev/defs/spoequb +80 -0
- data/dev/defs/sporfs +160 -0
- data/dev/defs/sporfsx +370 -0
- data/dev/defs/sposv +105 -0
- data/dev/defs/sposvx +281 -0
- data/dev/defs/sposvxx +471 -0
- data/dev/defs/spotf2 +75 -0
- data/dev/defs/spotrf +73 -0
- data/dev/defs/spotri +67 -0
- data/dev/defs/spotrs +79 -0
- data/dev/defs/sppcon +85 -0
- data/dev/defs/sppequ +82 -0
- data/dev/defs/spprfs +146 -0
- data/dev/defs/sppsv +115 -0
- data/dev/defs/sppsvx +283 -0
- data/dev/defs/spptrf +81 -0
- data/dev/defs/spptri +58 -0
- data/dev/defs/spptrs +84 -0
- data/dev/defs/spstf2 +108 -0
- data/dev/defs/spstrf +108 -0
- data/dev/defs/sptcon +84 -0
- data/dev/defs/spteqr +117 -0
- data/dev/defs/sptrfs +141 -0
- data/dev/defs/sptsv +89 -0
- data/dev/defs/sptsvx +203 -0
- data/dev/defs/spttrf +59 -0
- data/dev/defs/spttrs +88 -0
- data/dev/defs/sptts2 +77 -0
- data/dev/defs/srscl +49 -0
- data/dev/defs/ssbev +117 -0
- data/dev/defs/ssbevd +169 -0
- data/dev/defs/ssbevx +231 -0
- data/dev/defs/ssbgst +130 -0
- data/dev/defs/ssbgv +156 -0
- data/dev/defs/ssbgvd +206 -0
- data/dev/defs/ssbgvx +259 -0
- data/dev/defs/ssbtrd +132 -0
- data/dev/defs/ssfrk +134 -0
- data/dev/defs/sspcon +92 -0
- data/dev/defs/sspev +103 -0
- data/dev/defs/sspevd +154 -0
- data/dev/defs/sspevx +197 -0
- data/dev/defs/sspgst +80 -0
- data/dev/defs/sspgv +139 -0
- data/dev/defs/sspgvd +188 -0
- data/dev/defs/sspgvx +241 -0
- data/dev/defs/ssprfs +156 -0
- data/dev/defs/sspsv +134 -0
- data/dev/defs/sspsvx +249 -0
- data/dev/defs/ssptrd +118 -0
- data/dev/defs/ssptrf +120 -0
- data/dev/defs/ssptri +77 -0
- data/dev/defs/ssptrs +84 -0
- data/dev/defs/sstebz +229 -0
- data/dev/defs/sstedc +164 -0
- data/dev/defs/sstegr +233 -0
- data/dev/defs/sstein +152 -0
- data/dev/defs/sstemr +285 -0
- data/dev/defs/ssteqr +103 -0
- data/dev/defs/ssterf +54 -0
- data/dev/defs/sstev +88 -0
- data/dev/defs/sstevd +138 -0
- data/dev/defs/sstevr +275 -0
- data/dev/defs/sstevx +193 -0
- data/dev/defs/ssycon +98 -0
- data/dev/defs/ssyconv +90 -0
- data/dev/defs/ssyequb +104 -0
- data/dev/defs/ssyev +104 -0
- data/dev/defs/ssyevd +157 -0
- data/dev/defs/ssyevr +302 -0
- data/dev/defs/ssyevx +218 -0
- data/dev/defs/ssygs2 +96 -0
- data/dev/defs/ssygst +96 -0
- data/dev/defs/ssygv +148 -0
- data/dev/defs/ssygvd +197 -0
- data/dev/defs/ssygvx +263 -0
- data/dev/defs/ssyrfs +170 -0
- data/dev/defs/ssyrfsx +380 -0
- data/dev/defs/ssysv +149 -0
- data/dev/defs/ssysvx +261 -0
- data/dev/defs/ssysvxx +484 -0
- data/dev/defs/ssyswapr +70 -0
- data/dev/defs/ssytd2 +142 -0
- data/dev/defs/ssytf2 +143 -0
- data/dev/defs/ssytrd +162 -0
- data/dev/defs/ssytrf +156 -0
- data/dev/defs/ssytri +83 -0
- data/dev/defs/ssytri2 +110 -0
- data/dev/defs/ssytri2x +90 -0
- data/dev/defs/ssytrs +90 -0
- data/dev/defs/ssytrs2 +97 -0
- data/dev/defs/stbcon +109 -0
- data/dev/defs/stbrfs +164 -0
- data/dev/defs/stbtrs +113 -0
- data/dev/defs/stfsm +243 -0
- data/dev/defs/stftri +163 -0
- data/dev/defs/stfttp +151 -0
- data/dev/defs/stfttr +174 -0
- data/dev/defs/stgevc +265 -0
- data/dev/defs/stgex2 +191 -0
- data/dev/defs/stgexc +190 -0
- data/dev/defs/stgsen +421 -0
- data/dev/defs/stgsja +343 -0
- data/dev/defs/stgsna +354 -0
- data/dev/defs/stgsy2 +252 -0
- data/dev/defs/stgsyl +274 -0
- data/dev/defs/stpcon +95 -0
- data/dev/defs/stprfs +150 -0
- data/dev/defs/stptri +79 -0
- data/dev/defs/stptrs +98 -0
- data/dev/defs/stpttf +151 -0
- data/dev/defs/stpttr +73 -0
- data/dev/defs/strcon +103 -0
- data/dev/defs/strevc +191 -0
- data/dev/defs/strexc +113 -0
- data/dev/defs/strrfs +158 -0
- data/dev/defs/strsen +284 -0
- data/dev/defs/strsna +239 -0
- data/dev/defs/strsyl +133 -0
- data/dev/defs/strti2 +76 -0
- data/dev/defs/strtri +75 -0
- data/dev/defs/strtrs +107 -0
- data/dev/defs/strttf +171 -0
- data/dev/defs/strttp +72 -0
- data/dev/defs/stzrqf +104 -0
- data/dev/defs/stzrzf +128 -0
- data/dev/defs/xerbla +40 -0
- data/dev/defs/xerbla_array +65 -0
- data/dev/defs/zbbcsd +297 -0
- data/dev/defs/zbdsqr +196 -0
- data/dev/defs/zcgesv +176 -0
- data/dev/defs/zcposv +182 -0
- data/dev/defs/zdrscl +49 -0
- data/dev/defs/zgbbrd +174 -0
- data/dev/defs/zgbcon +114 -0
- data/dev/defs/zgbequ +121 -0
- data/dev/defs/zgbequb +128 -0
- data/dev/defs/zgbrfs +182 -0
- data/dev/defs/zgbrfsx +418 -0
- data/dev/defs/zgbsv +134 -0
- data/dev/defs/zgbsvx +356 -0
- data/dev/defs/zgbsvxx +536 -0
- data/dev/defs/zgbtf2 +110 -0
- data/dev/defs/zgbtrf +109 -0
- data/dev/defs/zgbtrs +106 -0
- data/dev/defs/zgebak +95 -0
- data/dev/defs/zgebal +125 -0
- data/dev/defs/zgebd2 +162 -0
- data/dev/defs/zgebrd +178 -0
- data/dev/defs/zgecon +90 -0
- data/dev/defs/zgeequ +107 -0
- data/dev/defs/zgeequb +114 -0
- data/dev/defs/zgees +170 -0
- data/dev/defs/zgeesx +209 -0
- data/dev/defs/zgeev +154 -0
- data/dev/defs/zgeevx +263 -0
- data/dev/defs/zgegs +205 -0
- data/dev/defs/zgegv +261 -0
- data/dev/defs/zgehd2 +115 -0
- data/dev/defs/zgehrd +136 -0
- data/dev/defs/zgelq2 +89 -0
- data/dev/defs/zgelqf +113 -0
- data/dev/defs/zgels +157 -0
- data/dev/defs/zgelsd +211 -0
- data/dev/defs/zgelss +156 -0
- data/dev/defs/zgelsx +155 -0
- data/dev/defs/zgelsy +188 -0
- data/dev/defs/zgeql2 +91 -0
- data/dev/defs/zgeqlf +116 -0
- data/dev/defs/zgeqp3 +127 -0
- data/dev/defs/zgeqpf +118 -0
- data/dev/defs/zgeqr2 +89 -0
- data/dev/defs/zgeqr2p +89 -0
- data/dev/defs/zgeqrf +114 -0
- data/dev/defs/zgeqrfp +114 -0
- data/dev/defs/zgerfs +164 -0
- data/dev/defs/zgerfsx +394 -0
- data/dev/defs/zgerq2 +91 -0
- data/dev/defs/zgerqf +116 -0
- data/dev/defs/zgesc2 +87 -0
- data/dev/defs/zgesdd +203 -0
- data/dev/defs/zgesv +97 -0
- data/dev/defs/zgesvd +195 -0
- data/dev/defs/zgesvx +333 -0
- data/dev/defs/zgesvxx +516 -0
- data/dev/defs/zgetc2 +82 -0
- data/dev/defs/zgetf2 +76 -0
- data/dev/defs/zgetrf +76 -0
- data/dev/defs/zgetri +86 -0
- data/dev/defs/zgetrs +91 -0
- data/dev/defs/zggbak +119 -0
- data/dev/defs/zggbal +144 -0
- data/dev/defs/zgges +247 -0
- data/dev/defs/zggesx +311 -0
- data/dev/defs/zggev +197 -0
- data/dev/defs/zggevx +353 -0
- data/dev/defs/zggglm +160 -0
- data/dev/defs/zgghrd +171 -0
- data/dev/defs/zgglse +157 -0
- data/dev/defs/zggqrf +195 -0
- data/dev/defs/zggrqf +194 -0
- data/dev/defs/zggsvd +324 -0
- data/dev/defs/zggsvp +240 -0
- data/dev/defs/zgtcon +112 -0
- data/dev/defs/zgtrfs +193 -0
- data/dev/defs/zgtsv +97 -0
- data/dev/defs/zgtsvx +275 -0
- data/dev/defs/zgttrf +97 -0
- data/dev/defs/zgttrs +119 -0
- data/dev/defs/zgtts2 +108 -0
- data/dev/defs/zhbev +124 -0
- data/dev/defs/zhbevd +194 -0
- data/dev/defs/zhbevx +234 -0
- data/dev/defs/zhbgst +137 -0
- data/dev/defs/zhbgv +163 -0
- data/dev/defs/zhbgvd +231 -0
- data/dev/defs/zhbgvx +265 -0
- data/dev/defs/zhbtrd +132 -0
- data/dev/defs/zhecon +91 -0
- data/dev/defs/zheequb +87 -0
- data/dev/defs/zheev +111 -0
- data/dev/defs/zheevd +178 -0
- data/dev/defs/zheevr +325 -0
- data/dev/defs/zheevx +225 -0
- data/dev/defs/zhegs2 +96 -0
- data/dev/defs/zhegst +96 -0
- data/dev/defs/zhegv +155 -0
- data/dev/defs/zhegvd +222 -0
- data/dev/defs/zhegvx +270 -0
- data/dev/defs/zherfs +170 -0
- data/dev/defs/zherfsx +380 -0
- data/dev/defs/zhesv +147 -0
- data/dev/defs/zhesvx +261 -0
- data/dev/defs/zhesvxx +478 -0
- data/dev/defs/zhetd2 +143 -0
- data/dev/defs/zhetf2 +141 -0
- data/dev/defs/zhetrd +162 -0
- data/dev/defs/zhetrf +151 -0
- data/dev/defs/zhetri +83 -0
- data/dev/defs/zhetrs +90 -0
- data/dev/defs/zhetrs2 +97 -0
- data/dev/defs/zhfrk +138 -0
- data/dev/defs/zhgeqz +258 -0
- data/dev/defs/zhpcon +85 -0
- data/dev/defs/zhpev +110 -0
- data/dev/defs/zhpevd +180 -0
- data/dev/defs/zhpevx +204 -0
- data/dev/defs/zhpgst +80 -0
- data/dev/defs/zhpgv +145 -0
- data/dev/defs/zhpgvd +221 -0
- data/dev/defs/zhpgvx +247 -0
- data/dev/defs/zhprfs +156 -0
- data/dev/defs/zhpsv +134 -0
- data/dev/defs/zhpsvx +248 -0
- data/dev/defs/zhptrd +118 -0
- data/dev/defs/zhptrf +120 -0
- data/dev/defs/zhptri +77 -0
- data/dev/defs/zhptrs +84 -0
- data/dev/defs/zhsein +217 -0
- data/dev/defs/zhseqr +263 -0
- data/dev/defs/zla_gbamv +154 -0
- data/dev/defs/zla_gbrcond_c +146 -0
- data/dev/defs/zla_gbrcond_x +140 -0
- data/dev/defs/zla_gbrfsx_extended +391 -0
- data/dev/defs/zla_gbrpvgrw +94 -0
- data/dev/defs/zla_geamv +142 -0
- data/dev/defs/zla_gercond_c +128 -0
- data/dev/defs/zla_gercond_x +122 -0
- data/dev/defs/zla_gerfsx_extended +378 -0
- data/dev/defs/zla_heamv +142 -0
- data/dev/defs/zla_hercond_c +125 -0
- data/dev/defs/zla_hercond_x +119 -0
- data/dev/defs/zla_herfsx_extended +375 -0
- data/dev/defs/zla_herpvgrw +105 -0
- data/dev/defs/zla_lin_berr +79 -0
- data/dev/defs/zla_porcond_c +116 -0
- data/dev/defs/zla_porcond_x +110 -0
- data/dev/defs/zla_porfsx_extended +366 -0
- data/dev/defs/zla_porpvgrw +85 -0
- data/dev/defs/zla_rpvgrw +76 -0
- data/dev/defs/zla_syamv +142 -0
- data/dev/defs/zla_syrcond_c +125 -0
- data/dev/defs/zla_syrcond_x +119 -0
- data/dev/defs/zla_syrfsx_extended +375 -0
- data/dev/defs/zla_syrpvgrw +105 -0
- data/dev/defs/zla_wwaddw +53 -0
- data/dev/defs/zlabrd +187 -0
- data/dev/defs/zlacgv +44 -0
- data/dev/defs/zlacn2 +91 -0
- data/dev/defs/zlacon +75 -0
- data/dev/defs/zlacp2 +78 -0
- data/dev/defs/zlacpy +78 -0
- data/dev/defs/zlacrm +88 -0
- data/dev/defs/zlacrt +73 -0
- data/dev/defs/zladiv +37 -0
- data/dev/defs/zlaed0 +121 -0
- data/dev/defs/zlaed7 +237 -0
- data/dev/defs/zlaed8 +211 -0
- data/dev/defs/zlaein +117 -0
- data/dev/defs/zlaesy +81 -0
- data/dev/defs/zlaev2 +83 -0
- data/dev/defs/zlag2c +82 -0
- data/dev/defs/zlags2 +116 -0
- data/dev/defs/zlagtm +115 -0
- data/dev/defs/zlahef +127 -0
- data/dev/defs/zlahqr +159 -0
- data/dev/defs/zlahr2 +153 -0
- data/dev/defs/zlahrd +141 -0
- data/dev/defs/zlaic1 +101 -0
- data/dev/defs/zlals0 +251 -0
- data/dev/defs/zlalsa +267 -0
- data/dev/defs/zlalsd +160 -0
- data/dev/defs/zlangb +92 -0
- data/dev/defs/zlange +84 -0
- data/dev/defs/zlangt +77 -0
- data/dev/defs/zlanhb +99 -0
- data/dev/defs/zlanhe +93 -0
- data/dev/defs/zlanhf +211 -0
- data/dev/defs/zlanhp +85 -0
- data/dev/defs/zlanhs +78 -0
- data/dev/defs/zlanht +69 -0
- data/dev/defs/zlansb +97 -0
- data/dev/defs/zlansp +83 -0
- data/dev/defs/zlansy +92 -0
- data/dev/defs/zlantb +108 -0
- data/dev/defs/zlantp +93 -0
- data/dev/defs/zlantr +109 -0
- data/dev/defs/zlapll +67 -0
- data/dev/defs/zlapmr +73 -0
- data/dev/defs/zlapmt +73 -0
- data/dev/defs/zlaqgb +124 -0
- data/dev/defs/zlaqge +107 -0
- data/dev/defs/zlaqhb +105 -0
- data/dev/defs/zlaqhe +98 -0
- data/dev/defs/zlaqhp +89 -0
- data/dev/defs/zlaqp2 +115 -0
- data/dev/defs/zlaqps +141 -0
- data/dev/defs/zlaqr0 +203 -0
- data/dev/defs/zlaqr1 +66 -0
- data/dev/defs/zlaqr2 +243 -0
- data/dev/defs/zlaqr3 +238 -0
- data/dev/defs/zlaqr4 +203 -0
- data/dev/defs/zlaqr5 +221 -0
- data/dev/defs/zlaqsb +105 -0
- data/dev/defs/zlaqsp +89 -0
- data/dev/defs/zlaqsy +98 -0
- data/dev/defs/zlar1v +199 -0
- data/dev/defs/zlar2v +88 -0
- data/dev/defs/zlarcm +88 -0
- data/dev/defs/zlarf +97 -0
- data/dev/defs/zlarfb +139 -0
- data/dev/defs/zlarfg +71 -0
- data/dev/defs/zlarfgp +69 -0
- data/dev/defs/zlarft +133 -0
- data/dev/defs/zlarfx +88 -0
- data/dev/defs/zlargv +88 -0
- data/dev/defs/zlarnv +63 -0
- data/dev/defs/zlarrv +259 -0
- data/dev/defs/zlarscl2 +61 -0
- data/dev/defs/zlartg +66 -0
- data/dev/defs/zlartv +82 -0
- data/dev/defs/zlarz +111 -0
- data/dev/defs/zlarzb +150 -0
- data/dev/defs/zlarzt +151 -0
- data/dev/defs/zlascl +102 -0
- data/dev/defs/zlascl2 +61 -0
- data/dev/defs/zlaset +77 -0
- data/dev/defs/zlasr +169 -0
- data/dev/defs/zlassq +71 -0
- data/dev/defs/zlaswp +81 -0
- data/dev/defs/zlasyf +127 -0
- data/dev/defs/zlat2c +85 -0
- data/dev/defs/zlatbs +206 -0
- data/dev/defs/zlatdf +133 -0
- data/dev/defs/zlatps +193 -0
- data/dev/defs/zlatrd +168 -0
- data/dev/defs/zlatrs +202 -0
- data/dev/defs/zlatrz +106 -0
- data/dev/defs/zlatzm +124 -0
- data/dev/defs/zlauu2 +68 -0
- data/dev/defs/zlauum +68 -0
- data/dev/defs/zpbcon +99 -0
- data/dev/defs/zpbequ +96 -0
- data/dev/defs/zpbrfs +166 -0
- data/dev/defs/zpbstf +116 -0
- data/dev/defs/zpbsv +136 -0
- data/dev/defs/zpbsvx +314 -0
- data/dev/defs/zpbtf2 +105 -0
- data/dev/defs/zpbtrf +103 -0
- data/dev/defs/zpbtrs +98 -0
- data/dev/defs/zpftrf +182 -0
- data/dev/defs/zpftri +175 -0
- data/dev/defs/zpftrs +185 -0
- data/dev/defs/zpocon +87 -0
- data/dev/defs/zpoequ +80 -0
- data/dev/defs/zpoequb +80 -0
- data/dev/defs/zporfs +160 -0
- data/dev/defs/zporfsx +370 -0
- data/dev/defs/zposv +105 -0
- data/dev/defs/zposvx +281 -0
- data/dev/defs/zposvxx +468 -0
- data/dev/defs/zpotf2 +75 -0
- data/dev/defs/zpotrf +73 -0
- data/dev/defs/zpotri +67 -0
- data/dev/defs/zpotrs +79 -0
- data/dev/defs/zppcon +85 -0
- data/dev/defs/zppequ +82 -0
- data/dev/defs/zpprfs +146 -0
- data/dev/defs/zppsv +115 -0
- data/dev/defs/zppsvx +283 -0
- data/dev/defs/zpptrf +81 -0
- data/dev/defs/zpptri +58 -0
- data/dev/defs/zpptrs +84 -0
- data/dev/defs/zpstf2 +108 -0
- data/dev/defs/zpstrf +108 -0
- data/dev/defs/zptcon +84 -0
- data/dev/defs/zpteqr +116 -0
- data/dev/defs/zptrfs +161 -0
- data/dev/defs/zptsv +89 -0
- data/dev/defs/zptsvx +210 -0
- data/dev/defs/zpttrf +59 -0
- data/dev/defs/zpttrs +98 -0
- data/dev/defs/zptts2 +89 -0
- data/dev/defs/zrot +72 -0
- data/dev/defs/zspcon +85 -0
- data/dev/defs/zspmv +119 -0
- data/dev/defs/zspr +98 -0
- data/dev/defs/zsprfs +156 -0
- data/dev/defs/zspsv +134 -0
- data/dev/defs/zspsvx +248 -0
- data/dev/defs/zsptrf +121 -0
- data/dev/defs/zsptri +77 -0
- data/dev/defs/zsptrs +84 -0
- data/dev/defs/zstedc +192 -0
- data/dev/defs/zstegr +233 -0
- data/dev/defs/zstein +159 -0
- data/dev/defs/zstemr +302 -0
- data/dev/defs/zsteqr +103 -0
- data/dev/defs/zsycon +91 -0
- data/dev/defs/zsyconv +90 -0
- data/dev/defs/zsyequb +104 -0
- data/dev/defs/zsymv +126 -0
- data/dev/defs/zsyr +102 -0
- data/dev/defs/zsyrfs +170 -0
- data/dev/defs/zsyrfsx +380 -0
- data/dev/defs/zsysv +149 -0
- data/dev/defs/zsysvx +261 -0
- data/dev/defs/zsysvxx +482 -0
- data/dev/defs/zsyswapr +70 -0
- data/dev/defs/zsytf2 +140 -0
- data/dev/defs/zsytrf +156 -0
- data/dev/defs/zsytri +83 -0
- data/dev/defs/zsytri2 +111 -0
- data/dev/defs/zsytri2x +90 -0
- data/dev/defs/zsytrs +90 -0
- data/dev/defs/zsytrs2 +97 -0
- data/dev/defs/ztbcon +109 -0
- data/dev/defs/ztbrfs +164 -0
- data/dev/defs/ztbtrs +113 -0
- data/dev/defs/ztfsm +259 -0
- data/dev/defs/ztftri +183 -0
- data/dev/defs/ztfttp +172 -0
- data/dev/defs/ztfttr +182 -0
- data/dev/defs/ztgevc +194 -0
- data/dev/defs/ztgex2 +158 -0
- data/dev/defs/ztgexc +176 -0
- data/dev/defs/ztgsen +406 -0
- data/dev/defs/ztgsja +344 -0
- data/dev/defs/ztgsna +282 -0
- data/dev/defs/ztgsy2 +235 -0
- data/dev/defs/ztgsyl +273 -0
- data/dev/defs/ztpcon +95 -0
- data/dev/defs/ztprfs +150 -0
- data/dev/defs/ztptri +79 -0
- data/dev/defs/ztptrs +98 -0
- data/dev/defs/ztpttf +172 -0
- data/dev/defs/ztpttr +73 -0
- data/dev/defs/ztrcon +103 -0
- data/dev/defs/ztrevc +188 -0
- data/dev/defs/ztrexc +99 -0
- data/dev/defs/ztrrfs +158 -0
- data/dev/defs/ztrsen +234 -0
- data/dev/defs/ztrsna +223 -0
- data/dev/defs/ztrsyl +126 -0
- data/dev/defs/ztrti2 +76 -0
- data/dev/defs/ztrtri +75 -0
- data/dev/defs/ztrtrs +107 -0
- data/dev/defs/ztrttf +181 -0
- data/dev/defs/ztrttp +72 -0
- data/dev/defs/ztzrqf +104 -0
- data/dev/defs/ztzrzf +128 -0
- data/dev/defs/zunbdb +270 -0
- data/dev/defs/zuncsd +283 -0
- data/dev/defs/zung2l +85 -0
- data/dev/defs/zung2r +85 -0
- data/dev/defs/zungbr +129 -0
- data/dev/defs/zunghr +97 -0
- data/dev/defs/zungl2 +84 -0
- data/dev/defs/zunglq +100 -0
- data/dev/defs/zungql +101 -0
- data/dev/defs/zungqr +101 -0
- data/dev/defs/zungr2 +85 -0
- data/dev/defs/zungrq +101 -0
- data/dev/defs/zungtr +95 -0
- data/dev/defs/zunm2l +130 -0
- data/dev/defs/zunm2r +130 -0
- data/dev/defs/zunmbr +177 -0
- data/dev/defs/zunmhr +157 -0
- data/dev/defs/zunml2 +130 -0
- data/dev/defs/zunmlq +143 -0
- data/dev/defs/zunmql +143 -0
- data/dev/defs/zunmqr +143 -0
- data/dev/defs/zunmr2 +130 -0
- data/dev/defs/zunmr3 +152 -0
- data/dev/defs/zunmrq +143 -0
- data/dev/defs/zunmrz +157 -0
- data/dev/defs/zunmtr +152 -0
- data/dev/defs/zupgtr +87 -0
- data/dev/defs/zupmtr +120 -0
- data/dev/make_csrc.rb +857 -0
- data/dev/mkdoc.rb +265 -0
- data/dev/parse.rb +1972 -0
- data/doc/bd.html +16 -0
- data/doc/c.html +36 -0
- data/doc/cbd.html +161 -0
- data/doc/cgb.html +1865 -0
- data/doc/cge.html +5261 -0
- data/doc/cgg.html +2027 -0
- data/doc/cgt.html +711 -0
- data/doc/chb.html +1031 -0
- data/doc/che.html +3165 -0
- data/doc/chg.html +201 -0
- data/doc/chp.html +1696 -0
- data/doc/chs.html +386 -0
- data/doc/cpb.html +994 -0
- data/doc/cpo.html +1520 -0
- data/doc/cpp.html +770 -0
- data/doc/cpt.html +706 -0
- data/doc/csp.html +905 -0
- data/doc/cst.html +742 -0
- data/doc/csy.html +2194 -0
- data/doc/ctb.html +284 -0
- data/doc/ctg.html +1544 -0
- data/doc/ctp.html +553 -0
- data/doc/ctr.html +1281 -0
- data/doc/ctz.html +211 -0
- data/doc/cun.html +2553 -0
- data/doc/cup.html +166 -0
- data/doc/d.html +35 -0
- data/doc/dbd.html +304 -0
- data/doc/ddi.html +87 -0
- data/doc/dgb.html +1857 -0
- data/doc/dge.html +7267 -0
- data/doc/dgg.html +2102 -0
- data/doc/dgt.html +713 -0
- data/doc/dhg.html +225 -0
- data/doc/dhs.html +414 -0
- data/doc/di.html +14 -0
- data/doc/dop.html +166 -0
- data/doc/dor.html +2540 -0
- data/doc/dpb.html +992 -0
- data/doc/dpo.html +1517 -0
- data/doc/dpp.html +770 -0
- data/doc/dpt.html +675 -0
- data/doc/dsb.html +995 -0
- data/doc/dsp.html +1777 -0
- data/doc/dst.html +1422 -0
- data/doc/dsy.html +3433 -0
- data/doc/dtb.html +284 -0
- data/doc/dtg.html +1730 -0
- data/doc/dtp.html +532 -0
- data/doc/dtr.html +1346 -0
- data/doc/dtz.html +211 -0
- data/doc/gb.html +16 -0
- data/doc/ge.html +16 -0
- data/doc/gg.html +16 -0
- data/doc/gt.html +16 -0
- data/doc/hb.html +14 -0
- data/doc/he.html +14 -0
- data/doc/hg.html +16 -0
- data/doc/hp.html +14 -0
- data/doc/hs.html +16 -0
- data/doc/index.html +53 -0
- data/doc/op.html +14 -0
- data/doc/or.html +14 -0
- data/doc/others.html +1142 -0
- data/doc/pb.html +16 -0
- data/doc/po.html +16 -0
- data/doc/pp.html +16 -0
- data/doc/pt.html +16 -0
- data/doc/s.html +35 -0
- data/doc/sb.html +14 -0
- data/doc/sbd.html +303 -0
- data/doc/sdi.html +87 -0
- data/doc/sgb.html +1863 -0
- data/doc/sge.html +7263 -0
- data/doc/sgg.html +2102 -0
- data/doc/sgt.html +713 -0
- data/doc/shg.html +225 -0
- data/doc/shs.html +414 -0
- data/doc/sop.html +166 -0
- data/doc/sor.html +2540 -0
- data/doc/sp.html +16 -0
- data/doc/spb.html +992 -0
- data/doc/spo.html +1520 -0
- data/doc/spp.html +770 -0
- data/doc/spt.html +675 -0
- data/doc/ssb.html +995 -0
- data/doc/ssp.html +1647 -0
- data/doc/sst.html +1423 -0
- data/doc/ssy.html +3438 -0
- data/doc/st.html +16 -0
- data/doc/stb.html +284 -0
- data/doc/stg.html +1729 -0
- data/doc/stp.html +532 -0
- data/doc/str.html +1346 -0
- data/doc/stz.html +211 -0
- data/doc/sy.html +16 -0
- data/doc/tb.html +16 -0
- data/doc/tg.html +16 -0
- data/doc/tp.html +16 -0
- data/doc/tr.html +16 -0
- data/doc/tz.html +16 -0
- data/doc/un.html +14 -0
- data/doc/up.html +14 -0
- data/doc/z.html +36 -0
- data/doc/zbd.html +161 -0
- data/doc/zgb.html +1862 -0
- data/doc/zge.html +5258 -0
- data/doc/zgg.html +2027 -0
- data/doc/zgt.html +711 -0
- data/doc/zhb.html +1031 -0
- data/doc/zhe.html +3162 -0
- data/doc/zhg.html +201 -0
- data/doc/zhp.html +1697 -0
- data/doc/zhs.html +386 -0
- data/doc/zpb.html +994 -0
- data/doc/zpo.html +1517 -0
- data/doc/zpp.html +770 -0
- data/doc/zpt.html +706 -0
- data/doc/zsp.html +905 -0
- data/doc/zst.html +743 -0
- data/doc/zsy.html +2191 -0
- data/doc/ztb.html +284 -0
- data/doc/ztg.html +1544 -0
- data/doc/ztp.html +553 -0
- data/doc/ztr.html +1281 -0
- data/doc/ztz.html +211 -0
- data/doc/zun.html +2553 -0
- data/doc/zup.html +166 -0
- data/ext/cbbcsd.c +279 -0
- data/ext/cbdsqr.c +178 -0
- data/ext/cgbbrd.c +153 -0
- data/ext/cgbcon.c +94 -0
- data/ext/cgbequ.c +94 -0
- data/ext/cgbequb.c +92 -0
- data/ext/cgbrfs.c +157 -0
- data/ext/cgbrfsx.c +245 -0
- data/ext/cgbsv.c +111 -0
- data/ext/cgbsvx.c +282 -0
- data/ext/cgbsvxx.c +285 -0
- data/ext/cgbtf2.c +89 -0
- data/ext/cgbtrf.c +89 -0
- data/ext/cgbtrs.c +107 -0
- data/ext/cgebak.c +97 -0
- data/ext/cgebal.c +87 -0
- data/ext/cgebd2.c +108 -0
- data/ext/cgebrd.c +123 -0
- data/ext/cgecon.c +74 -0
- data/ext/cgeequ.c +84 -0
- data/ext/cgeequb.c +84 -0
- data/ext/cgees.c +138 -0
- data/ext/cgeesx.c +148 -0
- data/ext/cgeev.c +128 -0
- data/ext/cgeevx.c +169 -0
- data/ext/cgegs.c +162 -0
- data/ext/cgegv.c +167 -0
- data/ext/cgehd2.c +88 -0
- data/ext/cgehrd.c +103 -0
- data/ext/cgelq2.c +82 -0
- data/ext/cgelqf.c +99 -0
- data/ext/cgels.c +133 -0
- data/ext/cgelsd.c +150 -0
- data/ext/cgelss.c +147 -0
- data/ext/cgelsx.c +135 -0
- data/ext/cgelsy.c +162 -0
- data/ext/cgeql2.c +84 -0
- data/ext/cgeqlf.c +99 -0
- data/ext/cgeqp3.c +125 -0
- data/ext/cgeqpf.c +110 -0
- data/ext/cgeqr2.c +84 -0
- data/ext/cgeqr2p.c +84 -0
- data/ext/cgeqrf.c +99 -0
- data/ext/cgeqrfp.c +99 -0
- data/ext/cgerfs.c +149 -0
- data/ext/cgerfsx.c +215 -0
- data/ext/cgerq2.c +82 -0
- data/ext/cgerqf.c +99 -0
- data/ext/cgesc2.c +104 -0
- data/ext/cgesdd.c +131 -0
- data/ext/cgesv.c +103 -0
- data/ext/cgesvd.c +142 -0
- data/ext/cgesvx.c +274 -0
- data/ext/cgesvxx.c +277 -0
- data/ext/cgetc2.c +85 -0
- data/ext/cgetf2.c +81 -0
- data/ext/cgetrf.c +81 -0
- data/ext/cgetri.c +99 -0
- data/ext/cgetrs.c +99 -0
- data/ext/cggbak.c +109 -0
- data/ext/cggbal.c +124 -0
- data/ext/cgges.c +188 -0
- data/ext/cggesx.c +226 -0
- data/ext/cggev.c +167 -0
- data/ext/cggevx.c +222 -0
- data/ext/cggglm.c +152 -0
- data/ext/cgghrd.c +163 -0
- data/ext/cgglse.c +167 -0
- data/ext/cggqrf.c +133 -0
- data/ext/cggrqf.c +137 -0
- data/ext/cggsvd.c +180 -0
- data/ext/cggsvp.c +170 -0
- data/ext/cgtcon.c +117 -0
- data/ext/cgtrfs.c +205 -0
- data/ext/cgtsv.c +138 -0
- data/ext/cgtsvx.c +252 -0
- data/ext/cgttrf.c +128 -0
- data/ext/cgttrs.c +133 -0
- data/ext/cgtts2.c +130 -0
- data/ext/chbev.c +106 -0
- data/ext/chbevd.c +154 -0
- data/ext/chbevx.c +156 -0
- data/ext/chbgst.c +116 -0
- data/ext/chbgv.c +136 -0
- data/ext/chbgvd.c +184 -0
- data/ext/chbgvx.c +185 -0
- data/ext/chbtrd.c +126 -0
- data/ext/checon.c +83 -0
- data/ext/cheequb.c +78 -0
- data/ext/cheev.c +106 -0
- data/ext/cheevd.c +139 -0
- data/ext/cheevr.c +186 -0
- data/ext/cheevx.c +156 -0
- data/ext/chegs2.c +91 -0
- data/ext/chegst.c +91 -0
- data/ext/chegv.c +136 -0
- data/ext/chegvd.c +169 -0
- data/ext/chegvx.c +186 -0
- data/ext/cherfs.c +149 -0
- data/ext/cherfsx.c +214 -0
- data/ext/chesv.c +119 -0
- data/ext/chesvx.c +179 -0
- data/ext/chesvxx.c +254 -0
- data/ext/chetd2.c +97 -0
- data/ext/chetf2.c +81 -0
- data/ext/chetrd.c +109 -0
- data/ext/chetrf.c +93 -0
- data/ext/chetri.c +88 -0
- data/ext/chetrs.c +99 -0
- data/ext/chetrs2.c +102 -0
- data/ext/chfrk.c +105 -0
- data/ext/chgeqz.c +204 -0
- data/ext/chla_transtype.c +47 -0
- data/ext/chpcon.c +81 -0
- data/ext/chpev.c +101 -0
- data/ext/chpevd.c +149 -0
- data/ext/chpevx.c +140 -0
- data/ext/chpgst.c +90 -0
- data/ext/chpgv.c +128 -0
- data/ext/chpgvd.c +166 -0
- data/ext/chpgvx.c +166 -0
- data/ext/chprfs.c +145 -0
- data/ext/chpsv.c +106 -0
- data/ext/chpsvx.c +159 -0
- data/ext/chptrd.c +96 -0
- data/ext/chptrf.c +80 -0
- data/ext/chptri.c +85 -0
- data/ext/chptrs.c +97 -0
- data/ext/chsein.c +181 -0
- data/ext/chseqr.c +141 -0
- data/ext/cla_gbamv.c +123 -0
- data/ext/cla_gbrcond_c.c +138 -0
- data/ext/cla_gbrcond_x.c +134 -0
- data/ext/cla_gbrfsx_extended.c +291 -0
- data/ext/cla_gbrpvgrw.c +83 -0
- data/ext/cla_geamv.c +113 -0
- data/ext/cla_gercond_c.c +130 -0
- data/ext/cla_gercond_x.c +126 -0
- data/ext/cla_gerfsx_extended.c +277 -0
- data/ext/cla_heamv.c +112 -0
- data/ext/cla_hercond_c.c +130 -0
- data/ext/cla_hercond_x.c +126 -0
- data/ext/cla_herfsx_extended.c +279 -0
- data/ext/cla_herpvgrw.c +103 -0
- data/ext/cla_lin_berr.c +80 -0
- data/ext/cla_porcond_c.c +118 -0
- data/ext/cla_porcond_x.c +114 -0
- data/ext/cla_porfsx_extended.c +267 -0
- data/ext/cla_porpvgrw.c +91 -0
- data/ext/cla_rpvgrw.c +75 -0
- data/ext/cla_syamv.c +111 -0
- data/ext/cla_syrcond_c.c +130 -0
- data/ext/cla_syrcond_x.c +126 -0
- data/ext/cla_syrfsx_extended.c +279 -0
- data/ext/cla_syrpvgrw.c +103 -0
- data/ext/cla_wwaddw.c +98 -0
- data/ext/clabrd.c +128 -0
- data/ext/clacgv.c +71 -0
- data/ext/clacn2.c +99 -0
- data/ext/clacon.c +76 -0
- data/ext/clacp2.c +73 -0
- data/ext/clacpy.c +73 -0
- data/ext/clacrm.c +86 -0
- data/ext/clacrt.c +104 -0
- data/ext/cladiv.c +53 -0
- data/ext/claed0.c +130 -0
- data/ext/claed7.c +243 -0
- data/ext/claed8.c +194 -0
- data/ext/claein.c +109 -0
- data/ext/claesy.c +70 -0
- data/ext/claev2.c +67 -0
- data/ext/clag2z.c +72 -0
- data/ext/clags2.c +88 -0
- data/ext/clagtm.c +128 -0
- data/ext/clahef.c +93 -0
- data/ext/clahqr.c +131 -0
- data/ext/clahr2.c +108 -0
- data/ext/clahrd.c +108 -0
- data/ext/claic1.c +86 -0
- data/ext/clals0.c +197 -0
- data/ext/clalsa.c +266 -0
- data/ext/clalsd.c +141 -0
- data/ext/clangb.c +72 -0
- data/ext/clange.c +70 -0
- data/ext/clangt.c +83 -0
- data/ext/clanhb.c +74 -0
- data/ext/clanhe.c +68 -0
- data/ext/clanhf.c +76 -0
- data/ext/clanhp.c +70 -0
- data/ext/clanhs.c +66 -0
- data/ext/clanht.c +71 -0
- data/ext/clansb.c +74 -0
- data/ext/clansp.c +70 -0
- data/ext/clansy.c +68 -0
- data/ext/clantb.c +76 -0
- data/ext/clantp.c +76 -0
- data/ext/clantr.c +78 -0
- data/ext/clapll.c +101 -0
- data/ext/clapmr.c +93 -0
- data/ext/clapmt.c +97 -0
- data/ext/claqgb.c +113 -0
- data/ext/claqge.c +105 -0
- data/ext/claqhb.c +93 -0
- data/ext/claqhe.c +93 -0
- data/ext/claqhp.c +90 -0
- data/ext/claqp2.c +154 -0
- data/ext/claqps.c +204 -0
- data/ext/claqr0.c +141 -0
- data/ext/claqr1.c +72 -0
- data/ext/claqr2.c +170 -0
- data/ext/claqr3.c +170 -0
- data/ext/claqr4.c +141 -0
- data/ext/claqr5.c +175 -0
- data/ext/claqsb.c +97 -0
- data/ext/claqsp.c +90 -0
- data/ext/claqsy.c +93 -0
- data/ext/clar1v.c +169 -0
- data/ext/clar2v.c +145 -0
- data/ext/clarcm.c +82 -0
- data/ext/clarf.c +98 -0
- data/ext/clarfb.c +119 -0
- data/ext/clarfg.c +80 -0
- data/ext/clarfgp.c +80 -0
- data/ext/clarft.c +101 -0
- data/ext/clarfx.c +90 -0
- data/ext/clargv.c +110 -0
- data/ext/clarnv.c +79 -0
- data/ext/clarrv.c +267 -0
- data/ext/clarscl2.c +78 -0
- data/ext/clartg.c +59 -0
- data/ext/clartv.c +126 -0
- data/ext/clarz.c +102 -0
- data/ext/clarzb.c +123 -0
- data/ext/clarzt.c +101 -0
- data/ext/clascl.c +93 -0
- data/ext/clascl2.c +78 -0
- data/ext/claset.c +84 -0
- data/ext/clasr.c +106 -0
- data/ext/classq.c +66 -0
- data/ext/claswp.c +90 -0
- data/ext/clasyf.c +93 -0
- data/ext/clatbs.c +126 -0
- data/ext/clatdf.c +115 -0
- data/ext/clatps.c +120 -0
- data/ext/clatrd.c +101 -0
- data/ext/clatrs.c +122 -0
- data/ext/clatrz.c +83 -0
- data/ext/clatzm.c +128 -0
- data/ext/clauu2.c +73 -0
- data/ext/clauum.c +73 -0
- data/ext/cpbcon.c +78 -0
- data/ext/cpbequ.c +79 -0
- data/ext/cpbrfs.c +141 -0
- data/ext/cpbstf.c +77 -0
- data/ext/cpbsv.c +103 -0
- data/ext/cpbsvx.c +197 -0
- data/ext/cpbtf2.c +77 -0
- data/ext/cpbtrf.c +77 -0
- data/ext/cpbtrs.c +91 -0
- data/ext/cpftrf.c +78 -0
- data/ext/cpftri.c +78 -0
- data/ext/cpftrs.c +93 -0
- data/ext/cpocon.c +74 -0
- data/ext/cpoequ.c +71 -0
- data/ext/cpoequb.c +71 -0
- data/ext/cporfs.c +137 -0
- data/ext/cporfsx.c +202 -0
- data/ext/cposv.c +99 -0
- data/ext/cposvx.c +193 -0
- data/ext/cposvxx.c +231 -0
- data/ext/cpotf2.c +73 -0
- data/ext/cpotrf.c +73 -0
- data/ext/cpotri.c +73 -0
- data/ext/cpotrs.c +87 -0
- data/ext/cppcon.c +74 -0
- data/ext/cppequ.c +75 -0
- data/ext/cpprfs.c +135 -0
- data/ext/cppsv.c +100 -0
- data/ext/cppsvx.c +187 -0
- data/ext/cpptrf.c +74 -0
- data/ext/cpptri.c +74 -0
- data/ext/cpptrs.c +89 -0
- data/ext/cpstf2.c +91 -0
- data/ext/cpstrf.c +91 -0
- data/ext/cptcon.c +77 -0
- data/ext/cpteqr.c +122 -0
- data/ext/cptrfs.c +157 -0
- data/ext/cptsv.c +115 -0
- data/ext/cptsvx.c +167 -0
- data/ext/cpttrf.c +89 -0
- data/ext/cpttrs.c +97 -0
- data/ext/cptts2.c +94 -0
- data/ext/crot.c +103 -0
- data/ext/cspcon.c +81 -0
- data/ext/cspmv.c +111 -0
- data/ext/cspr.c +92 -0
- data/ext/csprfs.c +145 -0
- data/ext/cspsv.c +106 -0
- data/ext/cspsvx.c +159 -0
- data/ext/csptrf.c +80 -0
- data/ext/csptri.c +85 -0
- data/ext/csptrs.c +97 -0
- data/ext/csrscl.c +75 -0
- data/ext/cstedc.c +173 -0
- data/ext/cstegr.c +184 -0
- data/ext/cstein.c +130 -0
- data/ext/cstemr.c +189 -0
- data/ext/csteqr.c +122 -0
- data/ext/csycon.c +83 -0
- data/ext/csyconv.c +80 -0
- data/ext/csyequb.c +78 -0
- data/ext/csymv.c +111 -0
- data/ext/csyr.c +91 -0
- data/ext/csyrfs.c +149 -0
- data/ext/csyrfsx.c +214 -0
- data/ext/csysv.c +125 -0
- data/ext/csysvx.c +179 -0
- data/ext/csysvxx.c +254 -0
- data/ext/csyswapr.c +78 -0
- data/ext/csytf2.c +81 -0
- data/ext/csytrf.c +93 -0
- data/ext/csytri.c +88 -0
- data/ext/csytri2.c +104 -0
- data/ext/csytri2x.c +92 -0
- data/ext/csytrs.c +99 -0
- data/ext/csytrs2.c +102 -0
- data/ext/ctbcon.c +82 -0
- data/ext/ctbrfs.c +123 -0
- data/ext/ctbtrs.c +99 -0
- data/ext/ctfsm.c +107 -0
- data/ext/ctftri.c +82 -0
- data/ext/ctfttp.c +75 -0
- data/ext/ctfttr.c +76 -0
- data/ext/ctgevc.c +152 -0
- data/ext/ctgex2.c +167 -0
- data/ext/ctgexc.c +168 -0
- data/ext/ctgsen.c +240 -0
- data/ext/ctgsja.c +223 -0
- data/ext/ctgsna.c +160 -0
- data/ext/ctgsy2.c +172 -0
- data/ext/ctgsyl.c +186 -0
- data/ext/ctpcon.c +78 -0
- data/ext/ctprfs.c +119 -0
- data/ext/ctptri.c +78 -0
- data/ext/ctptrs.c +97 -0
- data/ext/ctpttf.c +75 -0
- data/ext/ctpttr.c +72 -0
- data/ext/ctrcon.c +78 -0
- data/ext/ctrevc.c +150 -0
- data/ext/ctrexc.c +107 -0
- data/ext/ctrrfs.c +119 -0
- data/ext/ctrsen.c +150 -0
- data/ext/ctrsna.c +133 -0
- data/ext/ctrsyl.c +112 -0
- data/ext/ctrti2.c +77 -0
- data/ext/ctrtri.c +77 -0
- data/ext/ctrtrs.c +95 -0
- data/ext/ctrttf.c +73 -0
- data/ext/ctrttp.c +69 -0
- data/ext/ctzrqf.c +79 -0
- data/ext/ctzrzf.c +97 -0
- data/ext/cunbdb.c +228 -0
- data/ext/cuncsd.c +200 -0
- data/ext/cung2l.c +88 -0
- data/ext/cung2r.c +88 -0
- data/ext/cungbr.c +111 -0
- data/ext/cunghr.c +107 -0
- data/ext/cungl2.c +86 -0
- data/ext/cunglq.c +103 -0
- data/ext/cungql.c +103 -0
- data/ext/cungqr.c +103 -0
- data/ext/cungr2.c +86 -0
- data/ext/cungrq.c +103 -0
- data/ext/cungtr.c +103 -0
- data/ext/cunm2l.c +110 -0
- data/ext/cunm2r.c +110 -0
- data/ext/cunmbr.c +135 -0
- data/ext/cunmhr.c +129 -0
- data/ext/cunml2.c +106 -0
- data/ext/cunmlq.c +121 -0
- data/ext/cunmql.c +125 -0
- data/ext/cunmqr.c +125 -0
- data/ext/cunmr2.c +106 -0
- data/ext/cunmr3.c +110 -0
- data/ext/cunmrq.c +121 -0
- data/ext/cunmrz.c +125 -0
- data/ext/cunmtr.c +125 -0
- data/ext/cupgtr.c +87 -0
- data/ext/cupmtr.c +112 -0
- data/ext/dbbcsd.c +283 -0
- data/ext/dbdsdc.c +147 -0
- data/ext/dbdsqr.c +178 -0
- data/ext/ddisna.c +71 -0
- data/ext/dgbbrd.c +150 -0
- data/ext/dgbcon.c +94 -0
- data/ext/dgbequ.c +94 -0
- data/ext/dgbequb.c +92 -0
- data/ext/dgbrfs.c +157 -0
- data/ext/dgbrfsx.c +245 -0
- data/ext/dgbsv.c +111 -0
- data/ext/dgbsvx.c +282 -0
- data/ext/dgbsvxx.c +285 -0
- data/ext/dgbtf2.c +89 -0
- data/ext/dgbtrf.c +89 -0
- data/ext/dgbtrs.c +107 -0
- data/ext/dgebak.c +97 -0
- data/ext/dgebal.c +87 -0
- data/ext/dgebd2.c +108 -0
- data/ext/dgebrd.c +123 -0
- data/ext/dgecon.c +74 -0
- data/ext/dgeequ.c +84 -0
- data/ext/dgeequb.c +84 -0
- data/ext/dgees.c +144 -0
- data/ext/dgeesx.c +166 -0
- data/ext/dgeev.c +133 -0
- data/ext/dgeevx.c +177 -0
- data/ext/dgegs.c +167 -0
- data/ext/dgegv.c +167 -0
- data/ext/dgehd2.c +88 -0
- data/ext/dgehrd.c +103 -0
- data/ext/dgejsv.c +155 -0
- data/ext/dgelq2.c +82 -0
- data/ext/dgelqf.c +99 -0
- data/ext/dgels.c +133 -0
- data/ext/dgelsd.c +145 -0
- data/ext/dgelss.c +144 -0
- data/ext/dgelsx.c +132 -0
- data/ext/dgelsy.c +159 -0
- data/ext/dgeql2.c +84 -0
- data/ext/dgeqlf.c +99 -0
- data/ext/dgeqp3.c +122 -0
- data/ext/dgeqpf.c +107 -0
- data/ext/dgeqr2.c +84 -0
- data/ext/dgeqr2p.c +84 -0
- data/ext/dgeqrf.c +99 -0
- data/ext/dgeqrfp.c +99 -0
- data/ext/dgerfs.c +149 -0
- data/ext/dgerfsx.c +215 -0
- data/ext/dgerq2.c +82 -0
- data/ext/dgerqf.c +99 -0
- data/ext/dgesc2.c +104 -0
- data/ext/dgesdd.c +128 -0
- data/ext/dgesv.c +103 -0
- data/ext/dgesvd.c +139 -0
- data/ext/dgesvj.c +152 -0
- data/ext/dgesvx.c +274 -0
- data/ext/dgesvxx.c +277 -0
- data/ext/dgetc2.c +85 -0
- data/ext/dgetf2.c +81 -0
- data/ext/dgetrf.c +81 -0
- data/ext/dgetri.c +99 -0
- data/ext/dgetrs.c +99 -0
- data/ext/dggbak.c +109 -0
- data/ext/dggbal.c +124 -0
- data/ext/dgges.c +194 -0
- data/ext/dggesx.c +227 -0
- data/ext/dggev.c +167 -0
- data/ext/dggevx.c +225 -0
- data/ext/dggglm.c +152 -0
- data/ext/dgghrd.c +163 -0
- data/ext/dgglse.c +167 -0
- data/ext/dggqrf.c +133 -0
- data/ext/dggrqf.c +137 -0
- data/ext/dggsvd.c +177 -0
- data/ext/dggsvp.c +167 -0
- data/ext/dgsvj0.c +178 -0
- data/ext/dgsvj1.c +182 -0
- data/ext/dgtcon.c +120 -0
- data/ext/dgtrfs.c +205 -0
- data/ext/dgtsv.c +138 -0
- data/ext/dgtsvx.c +252 -0
- data/ext/dgttrf.c +128 -0
- data/ext/dgttrs.c +133 -0
- data/ext/dgtts2.c +130 -0
- data/ext/dhgeqz.c +209 -0
- data/ext/dhsein.c +201 -0
- data/ext/dhseqr.c +149 -0
- data/ext/disnan.c +47 -0
- data/ext/dla_gbamv.c +125 -0
- data/ext/dla_gbrcond.c +138 -0
- data/ext/dla_gbrfsx_extended.c +289 -0
- data/ext/dla_gbrpvgrw.c +83 -0
- data/ext/dla_geamv.c +115 -0
- data/ext/dla_gercond.c +130 -0
- data/ext/dla_gerfsx_extended.c +277 -0
- data/ext/dla_lin_berr.c +80 -0
- data/ext/dla_porcond.c +118 -0
- data/ext/dla_porfsx_extended.c +267 -0
- data/ext/dla_porpvgrw.c +91 -0
- data/ext/dla_rpvgrw.c +75 -0
- data/ext/dla_syamv.c +109 -0
- data/ext/dla_syrcond.c +130 -0
- data/ext/dla_syrfsx_extended.c +279 -0
- data/ext/dla_syrpvgrw.c +103 -0
- data/ext/dla_wwaddw.c +98 -0
- data/ext/dlabad.c +50 -0
- data/ext/dlabrd.c +128 -0
- data/ext/dlacn2.c +102 -0
- data/ext/dlacon.c +79 -0
- data/ext/dlacpy.c +73 -0
- data/ext/dladiv.c +62 -0
- data/ext/dlae2.c +58 -0
- data/ext/dlaebz.c +214 -0
- data/ext/dlaed0.c +123 -0
- data/ext/dlaed1.c +129 -0
- data/ext/dlaed2.c +185 -0
- data/ext/dlaed3.c +157 -0
- data/ext/dlaed4.c +86 -0
- data/ext/dlaed5.c +83 -0
- data/ext/dlaed6.c +86 -0
- data/ext/dlaed7.c +244 -0
- data/ext/dlaed8.c +202 -0
- data/ext/dlaed9.c +107 -0
- data/ext/dlaeda.c +156 -0
- data/ext/dlaein.c +139 -0
- data/ext/dlaev2.c +64 -0
- data/ext/dlaexc.c +114 -0
- data/ext/dlag2.c +87 -0
- data/ext/dlag2s.c +72 -0
- data/ext/dlags2.c +86 -0
- data/ext/dlagtf.c +136 -0
- data/ext/dlagtm.c +128 -0
- data/ext/dlagts.c +135 -0
- data/ext/dlagv2.c +128 -0
- data/ext/dlahqr.c +139 -0
- data/ext/dlahr2.c +108 -0
- data/ext/dlahrd.c +108 -0
- data/ext/dlaic1.c +85 -0
- data/ext/dlaln2.c +116 -0
- data/ext/dlals0.c +197 -0
- data/ext/dlalsa.c +266 -0
- data/ext/dlalsd.c +138 -0
- data/ext/dlamrg.c +76 -0
- data/ext/dlaneg.c +79 -0
- data/ext/dlangb.c +74 -0
- data/ext/dlange.c +70 -0
- data/ext/dlangt.c +83 -0
- data/ext/dlanhs.c +66 -0
- data/ext/dlansb.c +74 -0
- data/ext/dlansf.c +76 -0
- data/ext/dlansp.c +72 -0
- data/ext/dlanst.c +71 -0
- data/ext/dlansy.c +70 -0
- data/ext/dlantb.c +78 -0
- data/ext/dlantp.c +76 -0
- data/ext/dlantr.c +78 -0
- data/ext/dlanv2.c +78 -0
- data/ext/dlapll.c +101 -0
- data/ext/dlapmr.c +93 -0
- data/ext/dlapmt.c +97 -0
- data/ext/dlapy2.c +51 -0
- data/ext/dlapy3.c +55 -0
- data/ext/dlaqgb.c +113 -0
- data/ext/dlaqge.c +105 -0
- data/ext/dlaqp2.c +154 -0
- data/ext/dlaqps.c +204 -0
- data/ext/dlaqr0.c +149 -0
- data/ext/dlaqr1.c +78 -0
- data/ext/dlaqr2.c +178 -0
- data/ext/dlaqr3.c +178 -0
- data/ext/dlaqr4.c +149 -0
- data/ext/dlaqr5.c +196 -0
- data/ext/dlaqsb.c +97 -0
- data/ext/dlaqsp.c +90 -0
- data/ext/dlaqsy.c +93 -0
- data/ext/dlaqtr.c +110 -0
- data/ext/dlar1v.c +169 -0
- data/ext/dlar2v.c +145 -0
- data/ext/dlarf.c +97 -0
- data/ext/dlarfb.c +119 -0
- data/ext/dlarfg.c +79 -0
- data/ext/dlarfgp.c +79 -0
- data/ext/dlarft.c +101 -0
- data/ext/dlarfx.c +89 -0
- data/ext/dlargv.c +110 -0
- data/ext/dlarnv.c +79 -0
- data/ext/dlarra.c +120 -0
- data/ext/dlarrb.c +174 -0
- data/ext/dlarrc.c +92 -0
- data/ext/dlarrd.c +186 -0
- data/ext/dlarre.c +217 -0
- data/ext/dlarrf.c +172 -0
- data/ext/dlarrj.c +143 -0
- data/ext/dlarrk.c +93 -0
- data/ext/dlarrr.c +78 -0
- data/ext/dlarrv.c +267 -0
- data/ext/dlarscl2.c +78 -0
- data/ext/dlartg.c +57 -0
- data/ext/dlartgp.c +57 -0
- data/ext/dlartgs.c +58 -0
- data/ext/dlartv.c +126 -0
- data/ext/dlaruv.c +75 -0
- data/ext/dlarz.c +101 -0
- data/ext/dlarzb.c +123 -0
- data/ext/dlarzt.c +101 -0
- data/ext/dlas2.c +58 -0
- data/ext/dlascl.c +93 -0
- data/ext/dlascl2.c +78 -0
- data/ext/dlasd0.c +116 -0
- data/ext/dlasd1.c +158 -0
- data/ext/dlasd2.c +224 -0
- data/ext/dlasd3.c +198 -0
- data/ext/dlasd4.c +89 -0
- data/ext/dlasd5.c +86 -0
- data/ext/dlasd6.c +232 -0
- data/ext/dlasd7.c +221 -0
- data/ext/dlasd8.c +169 -0
- data/ext/dlasda.c +217 -0
- data/ext/dlasdq.c +182 -0
- data/ext/dlasdt.c +78 -0
- data/ext/dlaset.c +82 -0
- data/ext/dlasq1.c +92 -0
- data/ext/dlasq2.c +70 -0
- data/ext/dlasq3.c +134 -0
- data/ext/dlasq4.c +103 -0
- data/ext/dlasq5.c +90 -0
- data/ext/dlasq6.c +82 -0
- data/ext/dlasr.c +106 -0
- data/ext/dlasrt.c +70 -0
- data/ext/dlassq.c +66 -0
- data/ext/dlasv2.c +70 -0
- data/ext/dlaswp.c +90 -0
- data/ext/dlasy2.c +122 -0
- data/ext/dlasyf.c +93 -0
- data/ext/dlat2s.c +72 -0
- data/ext/dlatbs.c +126 -0
- data/ext/dlatdf.c +115 -0
- data/ext/dlatps.c +120 -0
- data/ext/dlatrd.c +101 -0
- data/ext/dlatrs.c +122 -0
- data/ext/dlatrz.c +83 -0
- data/ext/dlatzm.c +127 -0
- data/ext/dlauu2.c +73 -0
- data/ext/dlauum.c +73 -0
- data/ext/dopgtr.c +87 -0
- data/ext/dopmtr.c +112 -0
- data/ext/dorbdb.c +228 -0
- data/ext/dorcsd.c +193 -0
- data/ext/dorg2l.c +88 -0
- data/ext/dorg2r.c +88 -0
- data/ext/dorgbr.c +111 -0
- data/ext/dorghr.c +107 -0
- data/ext/dorgl2.c +86 -0
- data/ext/dorglq.c +103 -0
- data/ext/dorgql.c +103 -0
- data/ext/dorgqr.c +103 -0
- data/ext/dorgr2.c +86 -0
- data/ext/dorgrq.c +103 -0
- data/ext/dorgtr.c +103 -0
- data/ext/dorm2l.c +110 -0
- data/ext/dorm2r.c +110 -0
- data/ext/dormbr.c +135 -0
- data/ext/dormhr.c +129 -0
- data/ext/dorml2.c +106 -0
- data/ext/dormlq.c +121 -0
- data/ext/dormql.c +125 -0
- data/ext/dormqr.c +125 -0
- data/ext/dormr2.c +106 -0
- data/ext/dormr3.c +110 -0
- data/ext/dormrq.c +121 -0
- data/ext/dormrz.c +125 -0
- data/ext/dormtr.c +125 -0
- data/ext/dpbcon.c +78 -0
- data/ext/dpbequ.c +79 -0
- data/ext/dpbrfs.c +141 -0
- data/ext/dpbstf.c +77 -0
- data/ext/dpbsv.c +103 -0
- data/ext/dpbsvx.c +197 -0
- data/ext/dpbtf2.c +77 -0
- data/ext/dpbtrf.c +77 -0
- data/ext/dpbtrs.c +91 -0
- data/ext/dpftrf.c +78 -0
- data/ext/dpftri.c +78 -0
- data/ext/dpftrs.c +93 -0
- data/ext/dpocon.c +74 -0
- data/ext/dpoequ.c +71 -0
- data/ext/dpoequb.c +71 -0
- data/ext/dporfs.c +137 -0
- data/ext/dporfsx.c +202 -0
- data/ext/dposv.c +99 -0
- data/ext/dposvx.c +193 -0
- data/ext/dposvxx.c +231 -0
- data/ext/dpotf2.c +73 -0
- data/ext/dpotrf.c +73 -0
- data/ext/dpotri.c +73 -0
- data/ext/dpotrs.c +87 -0
- data/ext/dppcon.c +74 -0
- data/ext/dppequ.c +75 -0
- data/ext/dpprfs.c +135 -0
- data/ext/dppsv.c +100 -0
- data/ext/dppsvx.c +187 -0
- data/ext/dpptrf.c +74 -0
- data/ext/dpptri.c +74 -0
- data/ext/dpptrs.c +89 -0
- data/ext/dpstf2.c +91 -0
- data/ext/dpstrf.c +91 -0
- data/ext/dptcon.c +77 -0
- data/ext/dpteqr.c +122 -0
- data/ext/dptrfs.c +150 -0
- data/ext/dptsv.c +115 -0
- data/ext/dptsvx.c +164 -0
- data/ext/dpttrf.c +89 -0
- data/ext/dpttrs.c +93 -0
- data/ext/dptts2.c +90 -0
- data/ext/drscl.c +75 -0
- data/ext/dsbev.c +103 -0
- data/ext/dsbevd.c +136 -0
- data/ext/dsbevx.c +153 -0
- data/ext/dsbgst.c +113 -0
- data/ext/dsbgv.c +133 -0
- data/ext/dsbgvd.c +166 -0
- data/ext/dsbgvx.c +193 -0
- data/ext/dsbtrd.c +126 -0
- data/ext/dsfrk.c +105 -0
- data/ext/dsgesv.c +111 -0
- data/ext/dspcon.c +84 -0
- data/ext/dspev.c +98 -0
- data/ext/dspevd.c +131 -0
- data/ext/dspevx.c +137 -0
- data/ext/dspgst.c +90 -0
- data/ext/dspgv.c +125 -0
- data/ext/dspgvd.c +158 -0
- data/ext/dspgvx.c +164 -0
- data/ext/dsposv.c +107 -0
- data/ext/dsprfs.c +145 -0
- data/ext/dspsv.c +106 -0
- data/ext/dspsvx.c +159 -0
- data/ext/dsptrd.c +96 -0
- data/ext/dsptrf.c +80 -0
- data/ext/dsptri.c +85 -0
- data/ext/dsptrs.c +97 -0
- data/ext/dstebz.c +131 -0
- data/ext/dstedc.c +155 -0
- data/ext/dstegr.c +184 -0
- data/ext/dstein.c +130 -0
- data/ext/dstemr.c +189 -0
- data/ext/dsteqr.c +122 -0
- data/ext/dsterf.c +89 -0
- data/ext/dstev.c +107 -0
- data/ext/dstevd.c +140 -0
- data/ext/dstevr.c +184 -0
- data/ext/dstevx.c +154 -0
- data/ext/dsycon.c +86 -0
- data/ext/dsyconv.c +80 -0
- data/ext/dsyequb.c +78 -0
- data/ext/dsyev.c +103 -0
- data/ext/dsyevd.c +121 -0
- data/ext/dsyevr.c +168 -0
- data/ext/dsyevx.c +153 -0
- data/ext/dsygs2.c +91 -0
- data/ext/dsygst.c +91 -0
- data/ext/dsygv.c +133 -0
- data/ext/dsygvd.c +151 -0
- data/ext/dsygvx.c +183 -0
- data/ext/dsyrfs.c +149 -0
- data/ext/dsyrfsx.c +214 -0
- data/ext/dsysv.c +125 -0
- data/ext/dsysvx.c +179 -0
- data/ext/dsysvxx.c +254 -0
- data/ext/dsyswapr.c +78 -0
- data/ext/dsytd2.c +97 -0
- data/ext/dsytf2.c +81 -0
- data/ext/dsytrd.c +109 -0
- data/ext/dsytrf.c +93 -0
- data/ext/dsytri.c +88 -0
- data/ext/dsytri2.c +104 -0
- data/ext/dsytri2x.c +92 -0
- data/ext/dsytrs.c +99 -0
- data/ext/dsytrs2.c +102 -0
- data/ext/dtbcon.c +82 -0
- data/ext/dtbrfs.c +123 -0
- data/ext/dtbtrs.c +99 -0
- data/ext/dtfsm.c +106 -0
- data/ext/dtftri.c +82 -0
- data/ext/dtfttp.c +75 -0
- data/ext/dtfttr.c +76 -0
- data/ext/dtgevc.c +149 -0
- data/ext/dtgex2.c +176 -0
- data/ext/dtgexc.c +183 -0
- data/ext/dtgsen.c +248 -0
- data/ext/dtgsja.c +223 -0
- data/ext/dtgsna.c +160 -0
- data/ext/dtgsy2.c +178 -0
- data/ext/dtgsyl.c +186 -0
- data/ext/dtpcon.c +78 -0
- data/ext/dtprfs.c +119 -0
- data/ext/dtptri.c +78 -0
- data/ext/dtptrs.c +97 -0
- data/ext/dtpttf.c +75 -0
- data/ext/dtpttr.c +72 -0
- data/ext/dtrcon.c +78 -0
- data/ext/dtrevc.c +146 -0
- data/ext/dtrexc.c +112 -0
- data/ext/dtrrfs.c +119 -0
- data/ext/dtrsen.c +165 -0
- data/ext/dtrsna.c +133 -0
- data/ext/dtrsyl.c +112 -0
- data/ext/dtrti2.c +77 -0
- data/ext/dtrtri.c +77 -0
- data/ext/dtrtrs.c +95 -0
- data/ext/dtrttf.c +73 -0
- data/ext/dtrttp.c +69 -0
- data/ext/dtzrqf.c +79 -0
- data/ext/dtzrzf.c +97 -0
- data/ext/dzsum1.c +59 -0
- data/ext/extconf.rb +136 -0
- data/ext/f2c_minimal.h +36 -0
- data/ext/icmax1.c +59 -0
- data/ext/ieeeck.c +55 -0
- data/ext/ilaclc.c +61 -0
- data/ext/ilaclr.c +61 -0
- data/ext/iladiag.c +47 -0
- data/ext/iladlc.c +61 -0
- data/ext/iladlr.c +61 -0
- data/ext/ilaenv.c +71 -0
- data/ext/ilaprec.c +47 -0
- data/ext/ilaslc.c +61 -0
- data/ext/ilaslr.c +61 -0
- data/ext/ilatrans.c +47 -0
- data/ext/ilauplo.c +47 -0
- data/ext/ilaver.c +49 -0
- data/ext/ilazlc.c +61 -0
- data/ext/ilazlr.c +61 -0
- data/ext/iparmq.c +71 -0
- data/ext/izmax1.c +59 -0
- data/ext/lsamen.c +55 -0
- data/ext/rb_lapack.c +3279 -0
- data/ext/rb_lapack.h +18 -0
- data/ext/sbbcsd.c +283 -0
- data/ext/sbdsdc.c +153 -0
- data/ext/sbdsqr.c +178 -0
- data/ext/scsum1.c +59 -0
- data/ext/sdisna.c +71 -0
- data/ext/sgbbrd.c +150 -0
- data/ext/sgbcon.c +94 -0
- data/ext/sgbequ.c +94 -0
- data/ext/sgbequb.c +92 -0
- data/ext/sgbrfs.c +157 -0
- data/ext/sgbrfsx.c +245 -0
- data/ext/sgbsv.c +111 -0
- data/ext/sgbsvx.c +282 -0
- data/ext/sgbsvxx.c +285 -0
- data/ext/sgbtf2.c +89 -0
- data/ext/sgbtrf.c +89 -0
- data/ext/sgbtrs.c +107 -0
- data/ext/sgebak.c +97 -0
- data/ext/sgebal.c +87 -0
- data/ext/sgebd2.c +108 -0
- data/ext/sgebrd.c +123 -0
- data/ext/sgecon.c +74 -0
- data/ext/sgeequ.c +84 -0
- data/ext/sgeequb.c +84 -0
- data/ext/sgees.c +144 -0
- data/ext/sgeesx.c +166 -0
- data/ext/sgeev.c +133 -0
- data/ext/sgeevx.c +177 -0
- data/ext/sgegs.c +167 -0
- data/ext/sgegv.c +167 -0
- data/ext/sgehd2.c +88 -0
- data/ext/sgehrd.c +103 -0
- data/ext/sgejsv.c +155 -0
- data/ext/sgelq2.c +82 -0
- data/ext/sgelqf.c +99 -0
- data/ext/sgels.c +133 -0
- data/ext/sgelsd.c +145 -0
- data/ext/sgelss.c +144 -0
- data/ext/sgelsx.c +132 -0
- data/ext/sgelsy.c +159 -0
- data/ext/sgeql2.c +84 -0
- data/ext/sgeqlf.c +99 -0
- data/ext/sgeqp3.c +122 -0
- data/ext/sgeqpf.c +107 -0
- data/ext/sgeqr2.c +84 -0
- data/ext/sgeqr2p.c +84 -0
- data/ext/sgeqrf.c +99 -0
- data/ext/sgeqrfp.c +99 -0
- data/ext/sgerfs.c +149 -0
- data/ext/sgerfsx.c +215 -0
- data/ext/sgerq2.c +82 -0
- data/ext/sgerqf.c +99 -0
- data/ext/sgesc2.c +104 -0
- data/ext/sgesdd.c +128 -0
- data/ext/sgesv.c +103 -0
- data/ext/sgesvd.c +139 -0
- data/ext/sgesvj.c +152 -0
- data/ext/sgesvx.c +274 -0
- data/ext/sgesvxx.c +277 -0
- data/ext/sgetc2.c +85 -0
- data/ext/sgetf2.c +81 -0
- data/ext/sgetrf.c +81 -0
- data/ext/sgetri.c +99 -0
- data/ext/sgetrs.c +99 -0
- data/ext/sggbak.c +109 -0
- data/ext/sggbal.c +124 -0
- data/ext/sgges.c +194 -0
- data/ext/sggesx.c +227 -0
- data/ext/sggev.c +167 -0
- data/ext/sggevx.c +225 -0
- data/ext/sggglm.c +152 -0
- data/ext/sgghrd.c +163 -0
- data/ext/sgglse.c +167 -0
- data/ext/sggqrf.c +133 -0
- data/ext/sggrqf.c +137 -0
- data/ext/sggsvd.c +177 -0
- data/ext/sggsvp.c +167 -0
- data/ext/sgsvj0.c +178 -0
- data/ext/sgsvj1.c +182 -0
- data/ext/sgtcon.c +120 -0
- data/ext/sgtrfs.c +205 -0
- data/ext/sgtsv.c +138 -0
- data/ext/sgtsvx.c +252 -0
- data/ext/sgttrf.c +128 -0
- data/ext/sgttrs.c +133 -0
- data/ext/sgtts2.c +130 -0
- data/ext/shgeqz.c +209 -0
- data/ext/shsein.c +201 -0
- data/ext/shseqr.c +149 -0
- data/ext/sisnan.c +47 -0
- data/ext/sla_gbamv.c +125 -0
- data/ext/sla_gbrcond.c +138 -0
- data/ext/sla_gbrfsx_extended.c +287 -0
- data/ext/sla_gbrpvgrw.c +83 -0
- data/ext/sla_geamv.c +115 -0
- data/ext/sla_gercond.c +130 -0
- data/ext/sla_gerfsx_extended.c +279 -0
- data/ext/sla_lin_berr.c +80 -0
- data/ext/sla_porcond.c +118 -0
- data/ext/sla_porfsx_extended.c +267 -0
- data/ext/sla_porpvgrw.c +91 -0
- data/ext/sla_rpvgrw.c +75 -0
- data/ext/sla_syamv.c +112 -0
- data/ext/sla_syrcond.c +130 -0
- data/ext/sla_syrfsx_extended.c +279 -0
- data/ext/sla_syrpvgrw.c +103 -0
- data/ext/sla_wwaddw.c +98 -0
- data/ext/slabad.c +50 -0
- data/ext/slabrd.c +128 -0
- data/ext/slacn2.c +102 -0
- data/ext/slacon.c +79 -0
- data/ext/slacpy.c +73 -0
- data/ext/sladiv.c +62 -0
- data/ext/slae2.c +58 -0
- data/ext/slaebz.c +214 -0
- data/ext/slaed0.c +123 -0
- data/ext/slaed1.c +129 -0
- data/ext/slaed2.c +185 -0
- data/ext/slaed3.c +157 -0
- data/ext/slaed4.c +86 -0
- data/ext/slaed5.c +83 -0
- data/ext/slaed6.c +86 -0
- data/ext/slaed7.c +244 -0
- data/ext/slaed8.c +202 -0
- data/ext/slaed9.c +107 -0
- data/ext/slaeda.c +156 -0
- data/ext/slaein.c +139 -0
- data/ext/slaev2.c +64 -0
- data/ext/slaexc.c +114 -0
- data/ext/slag2.c +87 -0
- data/ext/slag2d.c +72 -0
- data/ext/slags2.c +86 -0
- data/ext/slagtf.c +136 -0
- data/ext/slagtm.c +128 -0
- data/ext/slagts.c +135 -0
- data/ext/slagv2.c +128 -0
- data/ext/slahqr.c +139 -0
- data/ext/slahr2.c +108 -0
- data/ext/slahrd.c +110 -0
- data/ext/slaic1.c +85 -0
- data/ext/slaln2.c +116 -0
- data/ext/slals0.c +197 -0
- data/ext/slalsa.c +266 -0
- data/ext/slalsd.c +138 -0
- data/ext/slamrg.c +76 -0
- data/ext/slaneg.c +79 -0
- data/ext/slangb.c +74 -0
- data/ext/slange.c +70 -0
- data/ext/slangt.c +83 -0
- data/ext/slanhs.c +66 -0
- data/ext/slansb.c +74 -0
- data/ext/slansf.c +74 -0
- data/ext/slansp.c +72 -0
- data/ext/slanst.c +71 -0
- data/ext/slansy.c +70 -0
- data/ext/slantb.c +78 -0
- data/ext/slantp.c +76 -0
- data/ext/slantr.c +78 -0
- data/ext/slanv2.c +78 -0
- data/ext/slapll.c +101 -0
- data/ext/slapmr.c +93 -0
- data/ext/slapmt.c +97 -0
- data/ext/slapy2.c +51 -0
- data/ext/slapy3.c +55 -0
- data/ext/slaqgb.c +113 -0
- data/ext/slaqge.c +105 -0
- data/ext/slaqp2.c +154 -0
- data/ext/slaqps.c +204 -0
- data/ext/slaqr0.c +149 -0
- data/ext/slaqr1.c +78 -0
- data/ext/slaqr2.c +178 -0
- data/ext/slaqr3.c +178 -0
- data/ext/slaqr4.c +149 -0
- data/ext/slaqr5.c +196 -0
- data/ext/slaqsb.c +97 -0
- data/ext/slaqsp.c +90 -0
- data/ext/slaqsy.c +93 -0
- data/ext/slaqtr.c +110 -0
- data/ext/slar1v.c +169 -0
- data/ext/slar2v.c +145 -0
- data/ext/slarf.c +97 -0
- data/ext/slarfb.c +119 -0
- data/ext/slarfg.c +79 -0
- data/ext/slarfgp.c +79 -0
- data/ext/slarft.c +101 -0
- data/ext/slarfx.c +89 -0
- data/ext/slargv.c +110 -0
- data/ext/slarnv.c +79 -0
- data/ext/slarra.c +120 -0
- data/ext/slarrb.c +174 -0
- data/ext/slarrc.c +92 -0
- data/ext/slarrd.c +186 -0
- data/ext/slarre.c +217 -0
- data/ext/slarrf.c +172 -0
- data/ext/slarrj.c +143 -0
- data/ext/slarrk.c +93 -0
- data/ext/slarrr.c +78 -0
- data/ext/slarrv.c +267 -0
- data/ext/slarscl2.c +78 -0
- data/ext/slartg.c +57 -0
- data/ext/slartgp.c +57 -0
- data/ext/slartgs.c +58 -0
- data/ext/slartv.c +126 -0
- data/ext/slaruv.c +75 -0
- data/ext/slarz.c +101 -0
- data/ext/slarzb.c +123 -0
- data/ext/slarzt.c +101 -0
- data/ext/slas2.c +58 -0
- data/ext/slascl.c +93 -0
- data/ext/slascl2.c +78 -0
- data/ext/slasd0.c +116 -0
- data/ext/slasd1.c +156 -0
- data/ext/slasd2.c +224 -0
- data/ext/slasd3.c +208 -0
- data/ext/slasd4.c +89 -0
- data/ext/slasd5.c +86 -0
- data/ext/slasd6.c +232 -0
- data/ext/slasd7.c +221 -0
- data/ext/slasd8.c +169 -0
- data/ext/slasda.c +217 -0
- data/ext/slasdq.c +182 -0
- data/ext/slasdt.c +78 -0
- data/ext/slaset.c +82 -0
- data/ext/slasq1.c +92 -0
- data/ext/slasq2.c +70 -0
- data/ext/slasq3.c +134 -0
- data/ext/slasq4.c +103 -0
- data/ext/slasq5.c +90 -0
- data/ext/slasq6.c +82 -0
- data/ext/slasr.c +106 -0
- data/ext/slasrt.c +70 -0
- data/ext/slassq.c +66 -0
- data/ext/slasv2.c +70 -0
- data/ext/slaswp.c +90 -0
- data/ext/slasy2.c +122 -0
- data/ext/slasyf.c +93 -0
- data/ext/slatbs.c +126 -0
- data/ext/slatdf.c +115 -0
- data/ext/slatps.c +120 -0
- data/ext/slatrd.c +101 -0
- data/ext/slatrs.c +122 -0
- data/ext/slatrz.c +83 -0
- data/ext/slatzm.c +127 -0
- data/ext/slauu2.c +73 -0
- data/ext/slauum.c +73 -0
- data/ext/sopgtr.c +87 -0
- data/ext/sopmtr.c +112 -0
- data/ext/sorbdb.c +228 -0
- data/ext/sorcsd.c +193 -0
- data/ext/sorg2l.c +88 -0
- data/ext/sorg2r.c +88 -0
- data/ext/sorgbr.c +111 -0
- data/ext/sorghr.c +107 -0
- data/ext/sorgl2.c +86 -0
- data/ext/sorglq.c +103 -0
- data/ext/sorgql.c +103 -0
- data/ext/sorgqr.c +103 -0
- data/ext/sorgr2.c +86 -0
- data/ext/sorgrq.c +103 -0
- data/ext/sorgtr.c +103 -0
- data/ext/sorm2l.c +110 -0
- data/ext/sorm2r.c +110 -0
- data/ext/sormbr.c +135 -0
- data/ext/sormhr.c +129 -0
- data/ext/sorml2.c +106 -0
- data/ext/sormlq.c +121 -0
- data/ext/sormql.c +125 -0
- data/ext/sormqr.c +125 -0
- data/ext/sormr2.c +106 -0
- data/ext/sormr3.c +110 -0
- data/ext/sormrq.c +121 -0
- data/ext/sormrz.c +125 -0
- data/ext/sormtr.c +125 -0
- data/ext/spbcon.c +78 -0
- data/ext/spbequ.c +79 -0
- data/ext/spbrfs.c +141 -0
- data/ext/spbstf.c +77 -0
- data/ext/spbsv.c +103 -0
- data/ext/spbsvx.c +197 -0
- data/ext/spbtf2.c +77 -0
- data/ext/spbtrf.c +77 -0
- data/ext/spbtrs.c +91 -0
- data/ext/spftrf.c +78 -0
- data/ext/spftri.c +78 -0
- data/ext/spftrs.c +93 -0
- data/ext/spocon.c +74 -0
- data/ext/spoequ.c +71 -0
- data/ext/spoequb.c +71 -0
- data/ext/sporfs.c +137 -0
- data/ext/sporfsx.c +202 -0
- data/ext/sposv.c +99 -0
- data/ext/sposvx.c +193 -0
- data/ext/sposvxx.c +231 -0
- data/ext/spotf2.c +73 -0
- data/ext/spotrf.c +73 -0
- data/ext/spotri.c +73 -0
- data/ext/spotrs.c +87 -0
- data/ext/sppcon.c +74 -0
- data/ext/sppequ.c +75 -0
- data/ext/spprfs.c +135 -0
- data/ext/sppsv.c +100 -0
- data/ext/sppsvx.c +187 -0
- data/ext/spptrf.c +74 -0
- data/ext/spptri.c +74 -0
- data/ext/spptrs.c +89 -0
- data/ext/spstf2.c +91 -0
- data/ext/spstrf.c +91 -0
- data/ext/sptcon.c +77 -0
- data/ext/spteqr.c +122 -0
- data/ext/sptrfs.c +150 -0
- data/ext/sptsv.c +115 -0
- data/ext/sptsvx.c +164 -0
- data/ext/spttrf.c +89 -0
- data/ext/spttrs.c +93 -0
- data/ext/sptts2.c +90 -0
- data/ext/srscl.c +75 -0
- data/ext/ssbev.c +103 -0
- data/ext/ssbevd.c +136 -0
- data/ext/ssbevx.c +153 -0
- data/ext/ssbgst.c +113 -0
- data/ext/ssbgv.c +133 -0
- data/ext/ssbgvd.c +166 -0
- data/ext/ssbgvx.c +193 -0
- data/ext/ssbtrd.c +126 -0
- data/ext/ssfrk.c +105 -0
- data/ext/sspcon.c +84 -0
- data/ext/sspev.c +98 -0
- data/ext/sspevd.c +131 -0
- data/ext/sspevx.c +137 -0
- data/ext/sspgst.c +90 -0
- data/ext/sspgv.c +125 -0
- data/ext/sspgvd.c +158 -0
- data/ext/sspgvx.c +164 -0
- data/ext/ssprfs.c +145 -0
- data/ext/sspsv.c +106 -0
- data/ext/sspsvx.c +159 -0
- data/ext/ssptrd.c +96 -0
- data/ext/ssptrf.c +80 -0
- data/ext/ssptri.c +85 -0
- data/ext/ssptrs.c +97 -0
- data/ext/sstebz.c +131 -0
- data/ext/sstedc.c +155 -0
- data/ext/sstegr.c +184 -0
- data/ext/sstein.c +130 -0
- data/ext/sstemr.c +189 -0
- data/ext/ssteqr.c +122 -0
- data/ext/ssterf.c +89 -0
- data/ext/sstev.c +107 -0
- data/ext/sstevd.c +140 -0
- data/ext/sstevr.c +184 -0
- data/ext/sstevx.c +154 -0
- data/ext/ssycon.c +86 -0
- data/ext/ssyconv.c +80 -0
- data/ext/ssyequb.c +78 -0
- data/ext/ssyev.c +103 -0
- data/ext/ssyevd.c +121 -0
- data/ext/ssyevr.c +168 -0
- data/ext/ssyevx.c +153 -0
- data/ext/ssygs2.c +91 -0
- data/ext/ssygst.c +91 -0
- data/ext/ssygv.c +133 -0
- data/ext/ssygvd.c +151 -0
- data/ext/ssygvx.c +187 -0
- data/ext/ssyrfs.c +149 -0
- data/ext/ssyrfsx.c +214 -0
- data/ext/ssysv.c +125 -0
- data/ext/ssysvx.c +179 -0
- data/ext/ssysvxx.c +254 -0
- data/ext/ssyswapr.c +78 -0
- data/ext/ssytd2.c +97 -0
- data/ext/ssytf2.c +81 -0
- data/ext/ssytrd.c +109 -0
- data/ext/ssytrf.c +93 -0
- data/ext/ssytri.c +88 -0
- data/ext/ssytri2.c +123 -0
- data/ext/ssytri2x.c +92 -0
- data/ext/ssytrs.c +99 -0
- data/ext/ssytrs2.c +102 -0
- data/ext/stbcon.c +82 -0
- data/ext/stbrfs.c +123 -0
- data/ext/stbtrs.c +99 -0
- data/ext/stfsm.c +108 -0
- data/ext/stftri.c +82 -0
- data/ext/stfttp.c +75 -0
- data/ext/stfttr.c +76 -0
- data/ext/stgevc.c +149 -0
- data/ext/stgex2.c +180 -0
- data/ext/stgexc.c +187 -0
- data/ext/stgsen.c +248 -0
- data/ext/stgsja.c +223 -0
- data/ext/stgsna.c +160 -0
- data/ext/stgsy2.c +178 -0
- data/ext/stgsyl.c +186 -0
- data/ext/stpcon.c +78 -0
- data/ext/stprfs.c +119 -0
- data/ext/stptri.c +78 -0
- data/ext/stptrs.c +97 -0
- data/ext/stpttf.c +75 -0
- data/ext/stpttr.c +72 -0
- data/ext/strcon.c +78 -0
- data/ext/strevc.c +146 -0
- data/ext/strexc.c +112 -0
- data/ext/strrfs.c +119 -0
- data/ext/strsen.c +165 -0
- data/ext/strsna.c +133 -0
- data/ext/strsyl.c +112 -0
- data/ext/strti2.c +77 -0
- data/ext/strtri.c +77 -0
- data/ext/strtrs.c +95 -0
- data/ext/strttf.c +73 -0
- data/ext/strttp.c +69 -0
- data/ext/stzrqf.c +79 -0
- data/ext/stzrzf.c +97 -0
- data/ext/xerbla.c +48 -0
- data/ext/xerbla_array.c +49 -0
- data/ext/zbbcsd.c +279 -0
- data/ext/zbdsqr.c +178 -0
- data/ext/zcgesv.c +114 -0
- data/ext/zcposv.c +110 -0
- data/ext/zdrscl.c +75 -0
- data/ext/zgbbrd.c +153 -0
- data/ext/zgbcon.c +94 -0
- data/ext/zgbequ.c +94 -0
- data/ext/zgbequb.c +92 -0
- data/ext/zgbrfs.c +157 -0
- data/ext/zgbrfsx.c +245 -0
- data/ext/zgbsv.c +111 -0
- data/ext/zgbsvx.c +282 -0
- data/ext/zgbsvxx.c +285 -0
- data/ext/zgbtf2.c +89 -0
- data/ext/zgbtrf.c +89 -0
- data/ext/zgbtrs.c +107 -0
- data/ext/zgebak.c +97 -0
- data/ext/zgebal.c +87 -0
- data/ext/zgebd2.c +108 -0
- data/ext/zgebrd.c +123 -0
- data/ext/zgecon.c +74 -0
- data/ext/zgeequ.c +84 -0
- data/ext/zgeequb.c +84 -0
- data/ext/zgees.c +138 -0
- data/ext/zgeesx.c +148 -0
- data/ext/zgeev.c +128 -0
- data/ext/zgeevx.c +169 -0
- data/ext/zgegs.c +162 -0
- data/ext/zgegv.c +167 -0
- data/ext/zgehd2.c +88 -0
- data/ext/zgehrd.c +103 -0
- data/ext/zgelq2.c +82 -0
- data/ext/zgelqf.c +99 -0
- data/ext/zgels.c +133 -0
- data/ext/zgelsd.c +150 -0
- data/ext/zgelss.c +147 -0
- data/ext/zgelsx.c +135 -0
- data/ext/zgelsy.c +162 -0
- data/ext/zgeql2.c +84 -0
- data/ext/zgeqlf.c +99 -0
- data/ext/zgeqp3.c +125 -0
- data/ext/zgeqpf.c +110 -0
- data/ext/zgeqr2.c +84 -0
- data/ext/zgeqr2p.c +84 -0
- data/ext/zgeqrf.c +99 -0
- data/ext/zgeqrfp.c +99 -0
- data/ext/zgerfs.c +149 -0
- data/ext/zgerfsx.c +215 -0
- data/ext/zgerq2.c +82 -0
- data/ext/zgerqf.c +99 -0
- data/ext/zgesc2.c +104 -0
- data/ext/zgesdd.c +131 -0
- data/ext/zgesv.c +103 -0
- data/ext/zgesvd.c +142 -0
- data/ext/zgesvx.c +274 -0
- data/ext/zgesvxx.c +277 -0
- data/ext/zgetc2.c +85 -0
- data/ext/zgetf2.c +81 -0
- data/ext/zgetrf.c +81 -0
- data/ext/zgetri.c +99 -0
- data/ext/zgetrs.c +99 -0
- data/ext/zggbak.c +109 -0
- data/ext/zggbal.c +124 -0
- data/ext/zgges.c +188 -0
- data/ext/zggesx.c +226 -0
- data/ext/zggev.c +167 -0
- data/ext/zggevx.c +222 -0
- data/ext/zggglm.c +152 -0
- data/ext/zgghrd.c +163 -0
- data/ext/zgglse.c +167 -0
- data/ext/zggqrf.c +133 -0
- data/ext/zggrqf.c +137 -0
- data/ext/zggsvd.c +180 -0
- data/ext/zggsvp.c +170 -0
- data/ext/zgtcon.c +117 -0
- data/ext/zgtrfs.c +205 -0
- data/ext/zgtsv.c +138 -0
- data/ext/zgtsvx.c +252 -0
- data/ext/zgttrf.c +128 -0
- data/ext/zgttrs.c +133 -0
- data/ext/zgtts2.c +130 -0
- data/ext/zhbev.c +106 -0
- data/ext/zhbevd.c +154 -0
- data/ext/zhbevx.c +156 -0
- data/ext/zhbgst.c +116 -0
- data/ext/zhbgv.c +136 -0
- data/ext/zhbgvd.c +184 -0
- data/ext/zhbgvx.c +185 -0
- data/ext/zhbtrd.c +126 -0
- data/ext/zhecon.c +83 -0
- data/ext/zheequb.c +78 -0
- data/ext/zheev.c +106 -0
- data/ext/zheevd.c +139 -0
- data/ext/zheevr.c +186 -0
- data/ext/zheevx.c +156 -0
- data/ext/zhegs2.c +91 -0
- data/ext/zhegst.c +91 -0
- data/ext/zhegv.c +136 -0
- data/ext/zhegvd.c +169 -0
- data/ext/zhegvx.c +186 -0
- data/ext/zherfs.c +149 -0
- data/ext/zherfsx.c +214 -0
- data/ext/zhesv.c +119 -0
- data/ext/zhesvx.c +179 -0
- data/ext/zhesvxx.c +254 -0
- data/ext/zhetd2.c +97 -0
- data/ext/zhetf2.c +81 -0
- data/ext/zhetrd.c +109 -0
- data/ext/zhetrf.c +93 -0
- data/ext/zhetri.c +88 -0
- data/ext/zhetrs.c +99 -0
- data/ext/zhetrs2.c +102 -0
- data/ext/zhfrk.c +105 -0
- data/ext/zhgeqz.c +204 -0
- data/ext/zhpcon.c +81 -0
- data/ext/zhpev.c +101 -0
- data/ext/zhpevd.c +149 -0
- data/ext/zhpevx.c +140 -0
- data/ext/zhpgst.c +90 -0
- data/ext/zhpgv.c +128 -0
- data/ext/zhpgvd.c +166 -0
- data/ext/zhpgvx.c +166 -0
- data/ext/zhprfs.c +145 -0
- data/ext/zhpsv.c +106 -0
- data/ext/zhpsvx.c +159 -0
- data/ext/zhptrd.c +96 -0
- data/ext/zhptrf.c +80 -0
- data/ext/zhptri.c +85 -0
- data/ext/zhptrs.c +97 -0
- data/ext/zhsein.c +181 -0
- data/ext/zhseqr.c +141 -0
- data/ext/zla_gbamv.c +123 -0
- data/ext/zla_gbrcond_c.c +138 -0
- data/ext/zla_gbrcond_x.c +134 -0
- data/ext/zla_gbrfsx_extended.c +291 -0
- data/ext/zla_gbrpvgrw.c +83 -0
- data/ext/zla_geamv.c +115 -0
- data/ext/zla_gercond_c.c +130 -0
- data/ext/zla_gercond_x.c +126 -0
- data/ext/zla_gerfsx_extended.c +277 -0
- data/ext/zla_heamv.c +112 -0
- data/ext/zla_hercond_c.c +130 -0
- data/ext/zla_hercond_x.c +126 -0
- data/ext/zla_herfsx_extended.c +279 -0
- data/ext/zla_herpvgrw.c +103 -0
- data/ext/zla_lin_berr.c +80 -0
- data/ext/zla_porcond_c.c +118 -0
- data/ext/zla_porcond_x.c +114 -0
- data/ext/zla_porfsx_extended.c +267 -0
- data/ext/zla_porpvgrw.c +91 -0
- data/ext/zla_rpvgrw.c +75 -0
- data/ext/zla_syamv.c +112 -0
- data/ext/zla_syrcond_c.c +130 -0
- data/ext/zla_syrcond_x.c +126 -0
- data/ext/zla_syrfsx_extended.c +279 -0
- data/ext/zla_syrpvgrw.c +103 -0
- data/ext/zla_wwaddw.c +98 -0
- data/ext/zlabrd.c +128 -0
- data/ext/zlacgv.c +71 -0
- data/ext/zlacn2.c +99 -0
- data/ext/zlacon.c +76 -0
- data/ext/zlacp2.c +73 -0
- data/ext/zlacpy.c +73 -0
- data/ext/zlacrm.c +86 -0
- data/ext/zlacrt.c +104 -0
- data/ext/zladiv.c +53 -0
- data/ext/zlaed0.c +130 -0
- data/ext/zlaed7.c +243 -0
- data/ext/zlaed8.c +194 -0
- data/ext/zlaein.c +109 -0
- data/ext/zlaesy.c +70 -0
- data/ext/zlaev2.c +67 -0
- data/ext/zlag2c.c +72 -0
- data/ext/zlags2.c +88 -0
- data/ext/zlagtm.c +128 -0
- data/ext/zlahef.c +93 -0
- data/ext/zlahqr.c +131 -0
- data/ext/zlahr2.c +108 -0
- data/ext/zlahrd.c +108 -0
- data/ext/zlaic1.c +86 -0
- data/ext/zlals0.c +197 -0
- data/ext/zlalsa.c +266 -0
- data/ext/zlalsd.c +141 -0
- data/ext/zlangb.c +72 -0
- data/ext/zlange.c +70 -0
- data/ext/zlangt.c +83 -0
- data/ext/zlanhb.c +74 -0
- data/ext/zlanhe.c +70 -0
- data/ext/zlanhf.c +76 -0
- data/ext/zlanhp.c +72 -0
- data/ext/zlanhs.c +66 -0
- data/ext/zlanht.c +71 -0
- data/ext/zlansb.c +74 -0
- data/ext/zlansp.c +72 -0
- data/ext/zlansy.c +70 -0
- data/ext/zlantb.c +78 -0
- data/ext/zlantp.c +76 -0
- data/ext/zlantr.c +78 -0
- data/ext/zlapll.c +101 -0
- data/ext/zlapmr.c +93 -0
- data/ext/zlapmt.c +97 -0
- data/ext/zlaqgb.c +113 -0
- data/ext/zlaqge.c +105 -0
- data/ext/zlaqhb.c +93 -0
- data/ext/zlaqhe.c +93 -0
- data/ext/zlaqhp.c +90 -0
- data/ext/zlaqp2.c +154 -0
- data/ext/zlaqps.c +204 -0
- data/ext/zlaqr0.c +149 -0
- data/ext/zlaqr1.c +72 -0
- data/ext/zlaqr2.c +170 -0
- data/ext/zlaqr3.c +170 -0
- data/ext/zlaqr4.c +143 -0
- data/ext/zlaqr5.c +175 -0
- data/ext/zlaqsb.c +97 -0
- data/ext/zlaqsp.c +90 -0
- data/ext/zlaqsy.c +93 -0
- data/ext/zlar1v.c +169 -0
- data/ext/zlar2v.c +145 -0
- data/ext/zlarcm.c +82 -0
- data/ext/zlarf.c +98 -0
- data/ext/zlarfb.c +119 -0
- data/ext/zlarfg.c +80 -0
- data/ext/zlarfgp.c +80 -0
- data/ext/zlarft.c +101 -0
- data/ext/zlarfx.c +90 -0
- data/ext/zlargv.c +110 -0
- data/ext/zlarnv.c +79 -0
- data/ext/zlarrv.c +267 -0
- data/ext/zlarscl2.c +78 -0
- data/ext/zlartg.c +59 -0
- data/ext/zlartv.c +126 -0
- data/ext/zlarz.c +102 -0
- data/ext/zlarzb.c +123 -0
- data/ext/zlarzt.c +101 -0
- data/ext/zlascl.c +93 -0
- data/ext/zlascl2.c +78 -0
- data/ext/zlaset.c +84 -0
- data/ext/zlasr.c +106 -0
- data/ext/zlassq.c +66 -0
- data/ext/zlaswp.c +90 -0
- data/ext/zlasyf.c +93 -0
- data/ext/zlat2c.c +72 -0
- data/ext/zlatbs.c +126 -0
- data/ext/zlatdf.c +115 -0
- data/ext/zlatps.c +120 -0
- data/ext/zlatrd.c +101 -0
- data/ext/zlatrs.c +122 -0
- data/ext/zlatrz.c +83 -0
- data/ext/zlatzm.c +128 -0
- data/ext/zlauu2.c +73 -0
- data/ext/zlauum.c +73 -0
- data/ext/zpbcon.c +78 -0
- data/ext/zpbequ.c +79 -0
- data/ext/zpbrfs.c +141 -0
- data/ext/zpbstf.c +77 -0
- data/ext/zpbsv.c +103 -0
- data/ext/zpbsvx.c +197 -0
- data/ext/zpbtf2.c +77 -0
- data/ext/zpbtrf.c +77 -0
- data/ext/zpbtrs.c +91 -0
- data/ext/zpftrf.c +78 -0
- data/ext/zpftri.c +78 -0
- data/ext/zpftrs.c +93 -0
- data/ext/zpocon.c +74 -0
- data/ext/zpoequ.c +71 -0
- data/ext/zpoequb.c +71 -0
- data/ext/zporfs.c +137 -0
- data/ext/zporfsx.c +202 -0
- data/ext/zposv.c +99 -0
- data/ext/zposvx.c +193 -0
- data/ext/zposvxx.c +231 -0
- data/ext/zpotf2.c +73 -0
- data/ext/zpotrf.c +73 -0
- data/ext/zpotri.c +73 -0
- data/ext/zpotrs.c +87 -0
- data/ext/zppcon.c +74 -0
- data/ext/zppequ.c +75 -0
- data/ext/zpprfs.c +135 -0
- data/ext/zppsv.c +100 -0
- data/ext/zppsvx.c +187 -0
- data/ext/zpptrf.c +74 -0
- data/ext/zpptri.c +74 -0
- data/ext/zpptrs.c +89 -0
- data/ext/zpstf2.c +91 -0
- data/ext/zpstrf.c +91 -0
- data/ext/zptcon.c +77 -0
- data/ext/zpteqr.c +122 -0
- data/ext/zptrfs.c +157 -0
- data/ext/zptsv.c +119 -0
- data/ext/zptsvx.c +167 -0
- data/ext/zpttrf.c +89 -0
- data/ext/zpttrs.c +97 -0
- data/ext/zptts2.c +94 -0
- data/ext/zrot.c +103 -0
- data/ext/zspcon.c +81 -0
- data/ext/zspmv.c +113 -0
- data/ext/zspr.c +92 -0
- data/ext/zsprfs.c +145 -0
- data/ext/zspsv.c +106 -0
- data/ext/zspsvx.c +159 -0
- data/ext/zsptrf.c +80 -0
- data/ext/zsptri.c +85 -0
- data/ext/zsptrs.c +97 -0
- data/ext/zstedc.c +173 -0
- data/ext/zstegr.c +184 -0
- data/ext/zstein.c +130 -0
- data/ext/zstemr.c +189 -0
- data/ext/zsteqr.c +122 -0
- data/ext/zsycon.c +83 -0
- data/ext/zsyconv.c +80 -0
- data/ext/zsyequb.c +78 -0
- data/ext/zsymv.c +111 -0
- data/ext/zsyr.c +91 -0
- data/ext/zsyrfs.c +149 -0
- data/ext/zsyrfsx.c +214 -0
- data/ext/zsysv.c +125 -0
- data/ext/zsysvx.c +179 -0
- data/ext/zsysvxx.c +254 -0
- data/ext/zsyswapr.c +78 -0
- data/ext/zsytf2.c +81 -0
- data/ext/zsytrf.c +93 -0
- data/ext/zsytri.c +88 -0
- data/ext/zsytri2.c +100 -0
- data/ext/zsytri2x.c +92 -0
- data/ext/zsytrs.c +99 -0
- data/ext/zsytrs2.c +102 -0
- data/ext/ztbcon.c +82 -0
- data/ext/ztbrfs.c +123 -0
- data/ext/ztbtrs.c +99 -0
- data/ext/ztfsm.c +107 -0
- data/ext/ztftri.c +82 -0
- data/ext/ztfttp.c +75 -0
- data/ext/ztfttr.c +76 -0
- data/ext/ztgevc.c +152 -0
- data/ext/ztgex2.c +167 -0
- data/ext/ztgexc.c +168 -0
- data/ext/ztgsen.c +240 -0
- data/ext/ztgsja.c +223 -0
- data/ext/ztgsna.c +160 -0
- data/ext/ztgsy2.c +172 -0
- data/ext/ztgsyl.c +186 -0
- data/ext/ztpcon.c +78 -0
- data/ext/ztprfs.c +119 -0
- data/ext/ztptri.c +78 -0
- data/ext/ztptrs.c +97 -0
- data/ext/ztpttf.c +75 -0
- data/ext/ztpttr.c +72 -0
- data/ext/ztrcon.c +78 -0
- data/ext/ztrevc.c +150 -0
- data/ext/ztrexc.c +107 -0
- data/ext/ztrrfs.c +119 -0
- data/ext/ztrsen.c +150 -0
- data/ext/ztrsna.c +133 -0
- data/ext/ztrsyl.c +112 -0
- data/ext/ztrti2.c +77 -0
- data/ext/ztrtri.c +77 -0
- data/ext/ztrtrs.c +95 -0
- data/ext/ztrttf.c +73 -0
- data/ext/ztrttp.c +69 -0
- data/ext/ztzrqf.c +79 -0
- data/ext/ztzrzf.c +97 -0
- data/ext/zunbdb.c +228 -0
- data/ext/zuncsd.c +200 -0
- data/ext/zung2l.c +88 -0
- data/ext/zung2r.c +88 -0
- data/ext/zungbr.c +111 -0
- data/ext/zunghr.c +107 -0
- data/ext/zungl2.c +86 -0
- data/ext/zunglq.c +103 -0
- data/ext/zungql.c +103 -0
- data/ext/zungqr.c +103 -0
- data/ext/zungr2.c +86 -0
- data/ext/zungrq.c +103 -0
- data/ext/zungtr.c +103 -0
- data/ext/zunm2l.c +110 -0
- data/ext/zunm2r.c +110 -0
- data/ext/zunmbr.c +135 -0
- data/ext/zunmhr.c +129 -0
- data/ext/zunml2.c +106 -0
- data/ext/zunmlq.c +121 -0
- data/ext/zunmql.c +125 -0
- data/ext/zunmqr.c +125 -0
- data/ext/zunmr2.c +106 -0
- data/ext/zunmr3.c +110 -0
- data/ext/zunmrq.c +121 -0
- data/ext/zunmrz.c +125 -0
- data/ext/zunmtr.c +125 -0
- data/ext/zupgtr.c +87 -0
- data/ext/zupmtr.c +112 -0
- data/lib/numru/lapack.rb +51 -0
- data/samples/dsyevr.rb +25 -0
- data/tests/eig/ge/test_gesdd.rb +90 -0
- data/tests/eig/ge/test_gesvd.rb +99 -0
- data/tests/eig/gg/test_ggev.rb +124 -0
- data/tests/eig/gg/test_ggsvd.rb +76 -0
- data/tests/eig/sb/test_sbev.rb +39 -0
- data/tests/lapack_test.rb +50 -0
- data/tests/lin/gb/test_gbsv.rb +46 -0
- data/tests/lin/gb/test_gbsvx.rb +56 -0
- data/tests/lin/ge/test_gels.rb +63 -0
- data/tests/lin/ge/test_gelsd.rb +54 -0
- data/tests/lin/ge/test_gelss.rb +73 -0
- data/tests/lin/ge/test_gelsy.rb +73 -0
- data/tests/lin/ge/test_gesv.rb +43 -0
- data/tests/lin/ge/test_gesvx.rb +52 -0
- data/tests/lin/gt/test_gtsv.rb +39 -0
- data/tests/test_all.rb +7 -0
- metadata +3513 -0
data/doc/st.html
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<HTML>
|
|
2
|
+
<HEAD>
|
|
3
|
+
<TITLE>(real) symmetric tridiagonal routines</TITLE>
|
|
4
|
+
</HEAD>
|
|
5
|
+
<BODY>
|
|
6
|
+
<H1>(real) symmetric tridiagonal routines</H1>
|
|
7
|
+
<UL>
|
|
8
|
+
<LI><A HREF="sst.html">S: REAL</A></LI>
|
|
9
|
+
<LI><A HREF="dst.html">D: DOUBLE PRECISION</A></LI>
|
|
10
|
+
<LI><A HREF="cst.html">C: COMPLEX</A></LI>
|
|
11
|
+
<LI><A HREF="zst.html">Z: COMPLEX*16 or DOUBLE COMPLEX</A></LI>
|
|
12
|
+
</UL>
|
|
13
|
+
<HR />
|
|
14
|
+
<A HREF="index.html">back to index.html</A>
|
|
15
|
+
</BODY>
|
|
16
|
+
</HTML>
|
data/doc/stb.html
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
<HTML>
|
|
2
|
+
<HEAD>
|
|
3
|
+
<TITLE>REAL routines for triangular band matrix</TITLE>
|
|
4
|
+
</HEAD>
|
|
5
|
+
<BODY>
|
|
6
|
+
<A NAME="top"></A>
|
|
7
|
+
<H1>REAL routines for triangular band matrix</H1>
|
|
8
|
+
<UL>
|
|
9
|
+
<LI><A HREF="#stbcon">stbcon</A></LI>
|
|
10
|
+
<LI><A HREF="#stbrfs">stbrfs</A></LI>
|
|
11
|
+
<LI><A HREF="#stbtrs">stbtrs</A></LI>
|
|
12
|
+
</UL>
|
|
13
|
+
|
|
14
|
+
<A NAME="stbcon"></A>
|
|
15
|
+
<H2>stbcon</H2>
|
|
16
|
+
<PRE>
|
|
17
|
+
USAGE:
|
|
18
|
+
rcond, info = NumRu::Lapack.stbcon( norm, uplo, diag, kd, ab, [:usage => usage, :help => help])
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
FORTRAN MANUAL
|
|
22
|
+
SUBROUTINE STBCON( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, IWORK, INFO )
|
|
23
|
+
|
|
24
|
+
* Purpose
|
|
25
|
+
* =======
|
|
26
|
+
*
|
|
27
|
+
* STBCON estimates the reciprocal of the condition number of a
|
|
28
|
+
* triangular band matrix A, in either the 1-norm or the infinity-norm.
|
|
29
|
+
*
|
|
30
|
+
* The norm of A is computed and an estimate is obtained for
|
|
31
|
+
* norm(inv(A)), then the reciprocal of the condition number is
|
|
32
|
+
* computed as
|
|
33
|
+
* RCOND = 1 / ( norm(A) * norm(inv(A)) ).
|
|
34
|
+
*
|
|
35
|
+
|
|
36
|
+
* Arguments
|
|
37
|
+
* =========
|
|
38
|
+
*
|
|
39
|
+
* NORM (input) CHARACTER*1
|
|
40
|
+
* Specifies whether the 1-norm condition number or the
|
|
41
|
+
* infinity-norm condition number is required:
|
|
42
|
+
* = '1' or 'O': 1-norm;
|
|
43
|
+
* = 'I': Infinity-norm.
|
|
44
|
+
*
|
|
45
|
+
* UPLO (input) CHARACTER*1
|
|
46
|
+
* = 'U': A is upper triangular;
|
|
47
|
+
* = 'L': A is lower triangular.
|
|
48
|
+
*
|
|
49
|
+
* DIAG (input) CHARACTER*1
|
|
50
|
+
* = 'N': A is non-unit triangular;
|
|
51
|
+
* = 'U': A is unit triangular.
|
|
52
|
+
*
|
|
53
|
+
* N (input) INTEGER
|
|
54
|
+
* The order of the matrix A. N >= 0.
|
|
55
|
+
*
|
|
56
|
+
* KD (input) INTEGER
|
|
57
|
+
* The number of superdiagonals or subdiagonals of the
|
|
58
|
+
* triangular band matrix A. KD >= 0.
|
|
59
|
+
*
|
|
60
|
+
* AB (input) REAL array, dimension (LDAB,N)
|
|
61
|
+
* The upper or lower triangular band matrix A, stored in the
|
|
62
|
+
* first kd+1 rows of the array. The j-th column of A is stored
|
|
63
|
+
* in the j-th column of the array AB as follows:
|
|
64
|
+
* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
|
|
65
|
+
* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
|
|
66
|
+
* If DIAG = 'U', the diagonal elements of A are not referenced
|
|
67
|
+
* and are assumed to be 1.
|
|
68
|
+
*
|
|
69
|
+
* LDAB (input) INTEGER
|
|
70
|
+
* The leading dimension of the array AB. LDAB >= KD+1.
|
|
71
|
+
*
|
|
72
|
+
* RCOND (output) REAL
|
|
73
|
+
* The reciprocal of the condition number of the matrix A,
|
|
74
|
+
* computed as RCOND = 1/(norm(A) * norm(inv(A))).
|
|
75
|
+
*
|
|
76
|
+
* WORK (workspace) REAL array, dimension (3*N)
|
|
77
|
+
*
|
|
78
|
+
* IWORK (workspace) INTEGER array, dimension (N)
|
|
79
|
+
*
|
|
80
|
+
* INFO (output) INTEGER
|
|
81
|
+
* = 0: successful exit
|
|
82
|
+
* < 0: if INFO = -i, the i-th argument had an illegal value
|
|
83
|
+
*
|
|
84
|
+
|
|
85
|
+
* =====================================================================
|
|
86
|
+
*
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
</PRE>
|
|
90
|
+
<A HREF="#top">go to the page top</A>
|
|
91
|
+
|
|
92
|
+
<A NAME="stbrfs"></A>
|
|
93
|
+
<H2>stbrfs</H2>
|
|
94
|
+
<PRE>
|
|
95
|
+
USAGE:
|
|
96
|
+
ferr, berr, info = NumRu::Lapack.stbrfs( uplo, trans, diag, kd, ab, b, x, [:usage => usage, :help => help])
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
FORTRAN MANUAL
|
|
100
|
+
SUBROUTINE STBRFS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO )
|
|
101
|
+
|
|
102
|
+
* Purpose
|
|
103
|
+
* =======
|
|
104
|
+
*
|
|
105
|
+
* STBRFS provides error bounds and backward error estimates for the
|
|
106
|
+
* solution to a system of linear equations with a triangular band
|
|
107
|
+
* coefficient matrix.
|
|
108
|
+
*
|
|
109
|
+
* The solution matrix X must be computed by STBTRS or some other
|
|
110
|
+
* means before entering this routine. STBRFS does not do iterative
|
|
111
|
+
* refinement because doing so cannot improve the backward error.
|
|
112
|
+
*
|
|
113
|
+
|
|
114
|
+
* Arguments
|
|
115
|
+
* =========
|
|
116
|
+
*
|
|
117
|
+
* UPLO (input) CHARACTER*1
|
|
118
|
+
* = 'U': A is upper triangular;
|
|
119
|
+
* = 'L': A is lower triangular.
|
|
120
|
+
*
|
|
121
|
+
* TRANS (input) CHARACTER*1
|
|
122
|
+
* Specifies the form of the system of equations:
|
|
123
|
+
* = 'N': A * X = B (No transpose)
|
|
124
|
+
* = 'T': A**T * X = B (Transpose)
|
|
125
|
+
* = 'C': A**H * X = B (Conjugate transpose = Transpose)
|
|
126
|
+
*
|
|
127
|
+
* DIAG (input) CHARACTER*1
|
|
128
|
+
* = 'N': A is non-unit triangular;
|
|
129
|
+
* = 'U': A is unit triangular.
|
|
130
|
+
*
|
|
131
|
+
* N (input) INTEGER
|
|
132
|
+
* The order of the matrix A. N >= 0.
|
|
133
|
+
*
|
|
134
|
+
* KD (input) INTEGER
|
|
135
|
+
* The number of superdiagonals or subdiagonals of the
|
|
136
|
+
* triangular band matrix A. KD >= 0.
|
|
137
|
+
*
|
|
138
|
+
* NRHS (input) INTEGER
|
|
139
|
+
* The number of right hand sides, i.e., the number of columns
|
|
140
|
+
* of the matrices B and X. NRHS >= 0.
|
|
141
|
+
*
|
|
142
|
+
* AB (input) REAL array, dimension (LDAB,N)
|
|
143
|
+
* The upper or lower triangular band matrix A, stored in the
|
|
144
|
+
* first kd+1 rows of the array. The j-th column of A is stored
|
|
145
|
+
* in the j-th column of the array AB as follows:
|
|
146
|
+
* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
|
|
147
|
+
* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
|
|
148
|
+
* If DIAG = 'U', the diagonal elements of A are not referenced
|
|
149
|
+
* and are assumed to be 1.
|
|
150
|
+
*
|
|
151
|
+
* LDAB (input) INTEGER
|
|
152
|
+
* The leading dimension of the array AB. LDAB >= KD+1.
|
|
153
|
+
*
|
|
154
|
+
* B (input) REAL array, dimension (LDB,NRHS)
|
|
155
|
+
* The right hand side matrix B.
|
|
156
|
+
*
|
|
157
|
+
* LDB (input) INTEGER
|
|
158
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
159
|
+
*
|
|
160
|
+
* X (input) REAL array, dimension (LDX,NRHS)
|
|
161
|
+
* The solution matrix X.
|
|
162
|
+
*
|
|
163
|
+
* LDX (input) INTEGER
|
|
164
|
+
* The leading dimension of the array X. LDX >= max(1,N).
|
|
165
|
+
*
|
|
166
|
+
* FERR (output) REAL array, dimension (NRHS)
|
|
167
|
+
* The estimated forward error bound for each solution vector
|
|
168
|
+
* X(j) (the j-th column of the solution matrix X).
|
|
169
|
+
* If XTRUE is the true solution corresponding to X(j), FERR(j)
|
|
170
|
+
* is an estimated upper bound for the magnitude of the largest
|
|
171
|
+
* element in (X(j) - XTRUE) divided by the magnitude of the
|
|
172
|
+
* largest element in X(j). The estimate is as reliable as
|
|
173
|
+
* the estimate for RCOND, and is almost always a slight
|
|
174
|
+
* overestimate of the true error.
|
|
175
|
+
*
|
|
176
|
+
* BERR (output) REAL array, dimension (NRHS)
|
|
177
|
+
* The componentwise relative backward error of each solution
|
|
178
|
+
* vector X(j) (i.e., the smallest relative change in
|
|
179
|
+
* any element of A or B that makes X(j) an exact solution).
|
|
180
|
+
*
|
|
181
|
+
* WORK (workspace) REAL array, dimension (3*N)
|
|
182
|
+
*
|
|
183
|
+
* IWORK (workspace) INTEGER array, dimension (N)
|
|
184
|
+
*
|
|
185
|
+
* INFO (output) INTEGER
|
|
186
|
+
* = 0: successful exit
|
|
187
|
+
* < 0: if INFO = -i, the i-th argument had an illegal value
|
|
188
|
+
*
|
|
189
|
+
|
|
190
|
+
* =====================================================================
|
|
191
|
+
*
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
</PRE>
|
|
195
|
+
<A HREF="#top">go to the page top</A>
|
|
196
|
+
|
|
197
|
+
<A NAME="stbtrs"></A>
|
|
198
|
+
<H2>stbtrs</H2>
|
|
199
|
+
<PRE>
|
|
200
|
+
USAGE:
|
|
201
|
+
info, b = NumRu::Lapack.stbtrs( uplo, trans, diag, kd, ab, b, [:usage => usage, :help => help])
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
FORTRAN MANUAL
|
|
205
|
+
SUBROUTINE STBTRS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO )
|
|
206
|
+
|
|
207
|
+
* Purpose
|
|
208
|
+
* =======
|
|
209
|
+
*
|
|
210
|
+
* STBTRS solves a triangular system of the form
|
|
211
|
+
*
|
|
212
|
+
* A * X = B or A**T * X = B,
|
|
213
|
+
*
|
|
214
|
+
* where A is a triangular band matrix of order N, and B is an
|
|
215
|
+
* N-by NRHS matrix. A check is made to verify that A is nonsingular.
|
|
216
|
+
*
|
|
217
|
+
|
|
218
|
+
* Arguments
|
|
219
|
+
* =========
|
|
220
|
+
*
|
|
221
|
+
* UPLO (input) CHARACTER*1
|
|
222
|
+
* = 'U': A is upper triangular;
|
|
223
|
+
* = 'L': A is lower triangular.
|
|
224
|
+
*
|
|
225
|
+
* TRANS (input) CHARACTER*1
|
|
226
|
+
* Specifies the form the system of equations:
|
|
227
|
+
* = 'N': A * X = B (No transpose)
|
|
228
|
+
* = 'T': A**T * X = B (Transpose)
|
|
229
|
+
* = 'C': A**H * X = B (Conjugate transpose = Transpose)
|
|
230
|
+
*
|
|
231
|
+
* DIAG (input) CHARACTER*1
|
|
232
|
+
* = 'N': A is non-unit triangular;
|
|
233
|
+
* = 'U': A is unit triangular.
|
|
234
|
+
*
|
|
235
|
+
* N (input) INTEGER
|
|
236
|
+
* The order of the matrix A. N >= 0.
|
|
237
|
+
*
|
|
238
|
+
* KD (input) INTEGER
|
|
239
|
+
* The number of superdiagonals or subdiagonals of the
|
|
240
|
+
* triangular band matrix A. KD >= 0.
|
|
241
|
+
*
|
|
242
|
+
* NRHS (input) INTEGER
|
|
243
|
+
* The number of right hand sides, i.e., the number of columns
|
|
244
|
+
* of the matrix B. NRHS >= 0.
|
|
245
|
+
*
|
|
246
|
+
* AB (input) REAL array, dimension (LDAB,N)
|
|
247
|
+
* The upper or lower triangular band matrix A, stored in the
|
|
248
|
+
* first kd+1 rows of AB. The j-th column of A is stored
|
|
249
|
+
* in the j-th column of the array AB as follows:
|
|
250
|
+
* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
|
|
251
|
+
* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).
|
|
252
|
+
* If DIAG = 'U', the diagonal elements of A are not referenced
|
|
253
|
+
* and are assumed to be 1.
|
|
254
|
+
*
|
|
255
|
+
* LDAB (input) INTEGER
|
|
256
|
+
* The leading dimension of the array AB. LDAB >= KD+1.
|
|
257
|
+
*
|
|
258
|
+
* B (input/output) REAL array, dimension (LDB,NRHS)
|
|
259
|
+
* On entry, the right hand side matrix B.
|
|
260
|
+
* On exit, if INFO = 0, the solution matrix X.
|
|
261
|
+
*
|
|
262
|
+
* LDB (input) INTEGER
|
|
263
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
264
|
+
*
|
|
265
|
+
* INFO (output) INTEGER
|
|
266
|
+
* = 0: successful exit
|
|
267
|
+
* < 0: if INFO = -i, the i-th argument had an illegal value
|
|
268
|
+
* > 0: if INFO = i, the i-th diagonal element of A is zero,
|
|
269
|
+
* indicating that the matrix is singular and the
|
|
270
|
+
* solutions X have not been computed.
|
|
271
|
+
*
|
|
272
|
+
|
|
273
|
+
* =====================================================================
|
|
274
|
+
*
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
</PRE>
|
|
278
|
+
<A HREF="#top">go to the page top</A>
|
|
279
|
+
|
|
280
|
+
<HR />
|
|
281
|
+
<A HREF="s.html">back to matrix types</A><BR>
|
|
282
|
+
<A HREF="s.html">back to data types</A>
|
|
283
|
+
</BODY>
|
|
284
|
+
</HTML>
|
data/doc/stg.html
ADDED
|
@@ -0,0 +1,1729 @@
|
|
|
1
|
+
<HTML>
|
|
2
|
+
<HEAD>
|
|
3
|
+
<TITLE>REAL routines for triangular matrices, generalized problem (i.e., a pair of triangular matrices) matrix</TITLE>
|
|
4
|
+
</HEAD>
|
|
5
|
+
<BODY>
|
|
6
|
+
<A NAME="top"></A>
|
|
7
|
+
<H1>REAL routines for triangular matrices, generalized problem (i.e., a pair of triangular matrices) matrix</H1>
|
|
8
|
+
<UL>
|
|
9
|
+
<LI><A HREF="#stgevc">stgevc</A></LI>
|
|
10
|
+
<LI><A HREF="#stgex2">stgex2</A></LI>
|
|
11
|
+
<LI><A HREF="#stgexc">stgexc</A></LI>
|
|
12
|
+
<LI><A HREF="#stgsen">stgsen</A></LI>
|
|
13
|
+
<LI><A HREF="#stgsja">stgsja</A></LI>
|
|
14
|
+
<LI><A HREF="#stgsna">stgsna</A></LI>
|
|
15
|
+
<LI><A HREF="#stgsy2">stgsy2</A></LI>
|
|
16
|
+
<LI><A HREF="#stgsyl">stgsyl</A></LI>
|
|
17
|
+
</UL>
|
|
18
|
+
|
|
19
|
+
<A NAME="stgevc"></A>
|
|
20
|
+
<H2>stgevc</H2>
|
|
21
|
+
<PRE>
|
|
22
|
+
USAGE:
|
|
23
|
+
m, info, vl, vr = NumRu::Lapack.stgevc( side, howmny, select, s, p, vl, vr, [:usage => usage, :help => help])
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
FORTRAN MANUAL
|
|
27
|
+
SUBROUTINE STGEVC( SIDE, HOWMNY, SELECT, N, S, LDS, P, LDP, VL, LDVL, VR, LDVR, MM, M, WORK, INFO )
|
|
28
|
+
|
|
29
|
+
* Purpose
|
|
30
|
+
* =======
|
|
31
|
+
*
|
|
32
|
+
* STGEVC computes some or all of the right and/or left eigenvectors of
|
|
33
|
+
* a pair of real matrices (S,P), where S is a quasi-triangular matrix
|
|
34
|
+
* and P is upper triangular. Matrix pairs of this type are produced by
|
|
35
|
+
* the generalized Schur factorization of a matrix pair (A,B):
|
|
36
|
+
*
|
|
37
|
+
* A = Q*S*Z**T, B = Q*P*Z**T
|
|
38
|
+
*
|
|
39
|
+
* as computed by SGGHRD + SHGEQZ.
|
|
40
|
+
*
|
|
41
|
+
* The right eigenvector x and the left eigenvector y of (S,P)
|
|
42
|
+
* corresponding to an eigenvalue w are defined by:
|
|
43
|
+
*
|
|
44
|
+
* S*x = w*P*x, (y**H)*S = w*(y**H)*P,
|
|
45
|
+
*
|
|
46
|
+
* where y**H denotes the conjugate tranpose of y.
|
|
47
|
+
* The eigenvalues are not input to this routine, but are computed
|
|
48
|
+
* directly from the diagonal blocks of S and P.
|
|
49
|
+
*
|
|
50
|
+
* This routine returns the matrices X and/or Y of right and left
|
|
51
|
+
* eigenvectors of (S,P), or the products Z*X and/or Q*Y,
|
|
52
|
+
* where Z and Q are input matrices.
|
|
53
|
+
* If Q and Z are the orthogonal factors from the generalized Schur
|
|
54
|
+
* factorization of a matrix pair (A,B), then Z*X and Q*Y
|
|
55
|
+
* are the matrices of right and left eigenvectors of (A,B).
|
|
56
|
+
*
|
|
57
|
+
|
|
58
|
+
* Arguments
|
|
59
|
+
* =========
|
|
60
|
+
*
|
|
61
|
+
* SIDE (input) CHARACTER*1
|
|
62
|
+
* = 'R': compute right eigenvectors only;
|
|
63
|
+
* = 'L': compute left eigenvectors only;
|
|
64
|
+
* = 'B': compute both right and left eigenvectors.
|
|
65
|
+
*
|
|
66
|
+
* HOWMNY (input) CHARACTER*1
|
|
67
|
+
* = 'A': compute all right and/or left eigenvectors;
|
|
68
|
+
* = 'B': compute all right and/or left eigenvectors,
|
|
69
|
+
* backtransformed by the matrices in VR and/or VL;
|
|
70
|
+
* = 'S': compute selected right and/or left eigenvectors,
|
|
71
|
+
* specified by the logical array SELECT.
|
|
72
|
+
*
|
|
73
|
+
* SELECT (input) LOGICAL array, dimension (N)
|
|
74
|
+
* If HOWMNY='S', SELECT specifies the eigenvectors to be
|
|
75
|
+
* computed. If w(j) is a real eigenvalue, the corresponding
|
|
76
|
+
* real eigenvector is computed if SELECT(j) is .TRUE..
|
|
77
|
+
* If w(j) and w(j+1) are the real and imaginary parts of a
|
|
78
|
+
* complex eigenvalue, the corresponding complex eigenvector
|
|
79
|
+
* is computed if either SELECT(j) or SELECT(j+1) is .TRUE.,
|
|
80
|
+
* and on exit SELECT(j) is set to .TRUE. and SELECT(j+1) is
|
|
81
|
+
* set to .FALSE..
|
|
82
|
+
* Not referenced if HOWMNY = 'A' or 'B'.
|
|
83
|
+
*
|
|
84
|
+
* N (input) INTEGER
|
|
85
|
+
* The order of the matrices S and P. N >= 0.
|
|
86
|
+
*
|
|
87
|
+
* S (input) REAL array, dimension (LDS,N)
|
|
88
|
+
* The upper quasi-triangular matrix S from a generalized Schur
|
|
89
|
+
* factorization, as computed by SHGEQZ.
|
|
90
|
+
*
|
|
91
|
+
* LDS (input) INTEGER
|
|
92
|
+
* The leading dimension of array S. LDS >= max(1,N).
|
|
93
|
+
*
|
|
94
|
+
* P (input) REAL array, dimension (LDP,N)
|
|
95
|
+
* The upper triangular matrix P from a generalized Schur
|
|
96
|
+
* factorization, as computed by SHGEQZ.
|
|
97
|
+
* 2-by-2 diagonal blocks of P corresponding to 2-by-2 blocks
|
|
98
|
+
* of S must be in positive diagonal form.
|
|
99
|
+
*
|
|
100
|
+
* LDP (input) INTEGER
|
|
101
|
+
* The leading dimension of array P. LDP >= max(1,N).
|
|
102
|
+
*
|
|
103
|
+
* VL (input/output) REAL array, dimension (LDVL,MM)
|
|
104
|
+
* On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
|
|
105
|
+
* contain an N-by-N matrix Q (usually the orthogonal matrix Q
|
|
106
|
+
* of left Schur vectors returned by SHGEQZ).
|
|
107
|
+
* On exit, if SIDE = 'L' or 'B', VL contains:
|
|
108
|
+
* if HOWMNY = 'A', the matrix Y of left eigenvectors of (S,P);
|
|
109
|
+
* if HOWMNY = 'B', the matrix Q*Y;
|
|
110
|
+
* if HOWMNY = 'S', the left eigenvectors of (S,P) specified by
|
|
111
|
+
* SELECT, stored consecutively in the columns of
|
|
112
|
+
* VL, in the same order as their eigenvalues.
|
|
113
|
+
*
|
|
114
|
+
* A complex eigenvector corresponding to a complex eigenvalue
|
|
115
|
+
* is stored in two consecutive columns, the first holding the
|
|
116
|
+
* real part, and the second the imaginary part.
|
|
117
|
+
*
|
|
118
|
+
* Not referenced if SIDE = 'R'.
|
|
119
|
+
*
|
|
120
|
+
* LDVL (input) INTEGER
|
|
121
|
+
* The leading dimension of array VL. LDVL >= 1, and if
|
|
122
|
+
* SIDE = 'L' or 'B', LDVL >= N.
|
|
123
|
+
*
|
|
124
|
+
* VR (input/output) REAL array, dimension (LDVR,MM)
|
|
125
|
+
* On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
|
|
126
|
+
* contain an N-by-N matrix Z (usually the orthogonal matrix Z
|
|
127
|
+
* of right Schur vectors returned by SHGEQZ).
|
|
128
|
+
*
|
|
129
|
+
* On exit, if SIDE = 'R' or 'B', VR contains:
|
|
130
|
+
* if HOWMNY = 'A', the matrix X of right eigenvectors of (S,P);
|
|
131
|
+
* if HOWMNY = 'B' or 'b', the matrix Z*X;
|
|
132
|
+
* if HOWMNY = 'S' or 's', the right eigenvectors of (S,P)
|
|
133
|
+
* specified by SELECT, stored consecutively in the
|
|
134
|
+
* columns of VR, in the same order as their
|
|
135
|
+
* eigenvalues.
|
|
136
|
+
*
|
|
137
|
+
* A complex eigenvector corresponding to a complex eigenvalue
|
|
138
|
+
* is stored in two consecutive columns, the first holding the
|
|
139
|
+
* real part and the second the imaginary part.
|
|
140
|
+
*
|
|
141
|
+
* Not referenced if SIDE = 'L'.
|
|
142
|
+
*
|
|
143
|
+
* LDVR (input) INTEGER
|
|
144
|
+
* The leading dimension of the array VR. LDVR >= 1, and if
|
|
145
|
+
* SIDE = 'R' or 'B', LDVR >= N.
|
|
146
|
+
*
|
|
147
|
+
* MM (input) INTEGER
|
|
148
|
+
* The number of columns in the arrays VL and/or VR. MM >= M.
|
|
149
|
+
*
|
|
150
|
+
* M (output) INTEGER
|
|
151
|
+
* The number of columns in the arrays VL and/or VR actually
|
|
152
|
+
* used to store the eigenvectors. If HOWMNY = 'A' or 'B', M
|
|
153
|
+
* is set to N. Each selected real eigenvector occupies one
|
|
154
|
+
* column and each selected complex eigenvector occupies two
|
|
155
|
+
* columns.
|
|
156
|
+
*
|
|
157
|
+
* WORK (workspace) REAL array, dimension (6*N)
|
|
158
|
+
*
|
|
159
|
+
* INFO (output) INTEGER
|
|
160
|
+
* = 0: successful exit.
|
|
161
|
+
* < 0: if INFO = -i, the i-th argument had an illegal value.
|
|
162
|
+
* > 0: the 2-by-2 block (INFO:INFO+1) does not have a complex
|
|
163
|
+
* eigenvalue.
|
|
164
|
+
*
|
|
165
|
+
|
|
166
|
+
* Further Details
|
|
167
|
+
* ===============
|
|
168
|
+
*
|
|
169
|
+
* Allocation of workspace:
|
|
170
|
+
* ---------- -- ---------
|
|
171
|
+
*
|
|
172
|
+
* WORK( j ) = 1-norm of j-th column of A, above the diagonal
|
|
173
|
+
* WORK( N+j ) = 1-norm of j-th column of B, above the diagonal
|
|
174
|
+
* WORK( 2*N+1:3*N ) = real part of eigenvector
|
|
175
|
+
* WORK( 3*N+1:4*N ) = imaginary part of eigenvector
|
|
176
|
+
* WORK( 4*N+1:5*N ) = real part of back-transformed eigenvector
|
|
177
|
+
* WORK( 5*N+1:6*N ) = imaginary part of back-transformed eigenvector
|
|
178
|
+
*
|
|
179
|
+
* Rowwise vs. columnwise solution methods:
|
|
180
|
+
* ------- -- ---------- -------- -------
|
|
181
|
+
*
|
|
182
|
+
* Finding a generalized eigenvector consists basically of solving the
|
|
183
|
+
* singular triangular system
|
|
184
|
+
*
|
|
185
|
+
* (A - w B) x = 0 (for right) or: (A - w B)**H y = 0 (for left)
|
|
186
|
+
*
|
|
187
|
+
* Consider finding the i-th right eigenvector (assume all eigenvalues
|
|
188
|
+
* are real). The equation to be solved is:
|
|
189
|
+
* n i
|
|
190
|
+
* 0 = sum C(j,k) v(k) = sum C(j,k) v(k) for j = i,. . .,1
|
|
191
|
+
* k=j k=j
|
|
192
|
+
*
|
|
193
|
+
* where C = (A - w B) (The components v(i+1:n) are 0.)
|
|
194
|
+
*
|
|
195
|
+
* The "rowwise" method is:
|
|
196
|
+
*
|
|
197
|
+
* (1) v(i) := 1
|
|
198
|
+
* for j = i-1,. . .,1:
|
|
199
|
+
* i
|
|
200
|
+
* (2) compute s = - sum C(j,k) v(k) and
|
|
201
|
+
* k=j+1
|
|
202
|
+
*
|
|
203
|
+
* (3) v(j) := s / C(j,j)
|
|
204
|
+
*
|
|
205
|
+
* Step 2 is sometimes called the "dot product" step, since it is an
|
|
206
|
+
* inner product between the j-th row and the portion of the eigenvector
|
|
207
|
+
* that has been computed so far.
|
|
208
|
+
*
|
|
209
|
+
* The "columnwise" method consists basically in doing the sums
|
|
210
|
+
* for all the rows in parallel. As each v(j) is computed, the
|
|
211
|
+
* contribution of v(j) times the j-th column of C is added to the
|
|
212
|
+
* partial sums. Since FORTRAN arrays are stored columnwise, this has
|
|
213
|
+
* the advantage that at each step, the elements of C that are accessed
|
|
214
|
+
* are adjacent to one another, whereas with the rowwise method, the
|
|
215
|
+
* elements accessed at a step are spaced LDS (and LDP) words apart.
|
|
216
|
+
*
|
|
217
|
+
* When finding left eigenvectors, the matrix in question is the
|
|
218
|
+
* transpose of the one in storage, so the rowwise method then
|
|
219
|
+
* actually accesses columns of A and B at each step, and so is the
|
|
220
|
+
* preferred method.
|
|
221
|
+
*
|
|
222
|
+
* =====================================================================
|
|
223
|
+
*
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
</PRE>
|
|
227
|
+
<A HREF="#top">go to the page top</A>
|
|
228
|
+
|
|
229
|
+
<A NAME="stgex2"></A>
|
|
230
|
+
<H2>stgex2</H2>
|
|
231
|
+
<PRE>
|
|
232
|
+
USAGE:
|
|
233
|
+
info, a, b, q, z = NumRu::Lapack.stgex2( wantq, wantz, a, b, q, ldq, z, j1, n1, n2, [:lwork => lwork, :usage => usage, :help => help])
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
FORTRAN MANUAL
|
|
237
|
+
SUBROUTINE STGEX2( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, J1, N1, N2, WORK, LWORK, INFO )
|
|
238
|
+
|
|
239
|
+
* Purpose
|
|
240
|
+
* =======
|
|
241
|
+
*
|
|
242
|
+
* STGEX2 swaps adjacent diagonal blocks (A11, B11) and (A22, B22)
|
|
243
|
+
* of size 1-by-1 or 2-by-2 in an upper (quasi) triangular matrix pair
|
|
244
|
+
* (A, B) by an orthogonal equivalence transformation.
|
|
245
|
+
*
|
|
246
|
+
* (A, B) must be in generalized real Schur canonical form (as returned
|
|
247
|
+
* by SGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2
|
|
248
|
+
* diagonal blocks. B is upper triangular.
|
|
249
|
+
*
|
|
250
|
+
* Optionally, the matrices Q and Z of generalized Schur vectors are
|
|
251
|
+
* updated.
|
|
252
|
+
*
|
|
253
|
+
* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
|
|
254
|
+
* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
|
|
255
|
+
*
|
|
256
|
+
*
|
|
257
|
+
|
|
258
|
+
* Arguments
|
|
259
|
+
* =========
|
|
260
|
+
*
|
|
261
|
+
* WANTQ (input) LOGICAL
|
|
262
|
+
* .TRUE. : update the left transformation matrix Q;
|
|
263
|
+
* .FALSE.: do not update Q.
|
|
264
|
+
*
|
|
265
|
+
* WANTZ (input) LOGICAL
|
|
266
|
+
* .TRUE. : update the right transformation matrix Z;
|
|
267
|
+
* .FALSE.: do not update Z.
|
|
268
|
+
*
|
|
269
|
+
* N (input) INTEGER
|
|
270
|
+
* The order of the matrices A and B. N >= 0.
|
|
271
|
+
*
|
|
272
|
+
* A (input/output) REAL arrays, dimensions (LDA,N)
|
|
273
|
+
* On entry, the matrix A in the pair (A, B).
|
|
274
|
+
* On exit, the updated matrix A.
|
|
275
|
+
*
|
|
276
|
+
* LDA (input) INTEGER
|
|
277
|
+
* The leading dimension of the array A. LDA >= max(1,N).
|
|
278
|
+
*
|
|
279
|
+
* B (input/output) REAL arrays, dimensions (LDB,N)
|
|
280
|
+
* On entry, the matrix B in the pair (A, B).
|
|
281
|
+
* On exit, the updated matrix B.
|
|
282
|
+
*
|
|
283
|
+
* LDB (input) INTEGER
|
|
284
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
285
|
+
*
|
|
286
|
+
* Q (input/output) REAL array, dimension (LDZ,N)
|
|
287
|
+
* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
|
|
288
|
+
* On exit, the updated matrix Q.
|
|
289
|
+
* Not referenced if WANTQ = .FALSE..
|
|
290
|
+
*
|
|
291
|
+
* LDQ (input) INTEGER
|
|
292
|
+
* The leading dimension of the array Q. LDQ >= 1.
|
|
293
|
+
* If WANTQ = .TRUE., LDQ >= N.
|
|
294
|
+
*
|
|
295
|
+
* Z (input/output) REAL array, dimension (LDZ,N)
|
|
296
|
+
* On entry, if WANTZ =.TRUE., the orthogonal matrix Z.
|
|
297
|
+
* On exit, the updated matrix Z.
|
|
298
|
+
* Not referenced if WANTZ = .FALSE..
|
|
299
|
+
*
|
|
300
|
+
* LDZ (input) INTEGER
|
|
301
|
+
* The leading dimension of the array Z. LDZ >= 1.
|
|
302
|
+
* If WANTZ = .TRUE., LDZ >= N.
|
|
303
|
+
*
|
|
304
|
+
* J1 (input) INTEGER
|
|
305
|
+
* The index to the first block (A11, B11). 1 <= J1 <= N.
|
|
306
|
+
*
|
|
307
|
+
* N1 (input) INTEGER
|
|
308
|
+
* The order of the first block (A11, B11). N1 = 0, 1 or 2.
|
|
309
|
+
*
|
|
310
|
+
* N2 (input) INTEGER
|
|
311
|
+
* The order of the second block (A22, B22). N2 = 0, 1 or 2.
|
|
312
|
+
*
|
|
313
|
+
* WORK (workspace) REAL array, dimension (MAX(1,LWORK)).
|
|
314
|
+
*
|
|
315
|
+
* LWORK (input) INTEGER
|
|
316
|
+
* The dimension of the array WORK.
|
|
317
|
+
* LWORK >= MAX( N*(N2+N1), (N2+N1)*(N2+N1)*2 )
|
|
318
|
+
*
|
|
319
|
+
* INFO (output) INTEGER
|
|
320
|
+
* =0: Successful exit
|
|
321
|
+
* >0: If INFO = 1, the transformed matrix (A, B) would be
|
|
322
|
+
* too far from generalized Schur form; the blocks are
|
|
323
|
+
* not swapped and (A, B) and (Q, Z) are unchanged.
|
|
324
|
+
* The problem of swapping is too ill-conditioned.
|
|
325
|
+
* <0: If INFO = -16: LWORK is too small. Appropriate value
|
|
326
|
+
* for LWORK is returned in WORK(1).
|
|
327
|
+
*
|
|
328
|
+
|
|
329
|
+
* Further Details
|
|
330
|
+
* ===============
|
|
331
|
+
*
|
|
332
|
+
* Based on contributions by
|
|
333
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
334
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
335
|
+
*
|
|
336
|
+
* In the current code both weak and strong stability tests are
|
|
337
|
+
* performed. The user can omit the strong stability test by changing
|
|
338
|
+
* the internal logical parameter WANDS to .FALSE.. See ref. [2] for
|
|
339
|
+
* details.
|
|
340
|
+
*
|
|
341
|
+
* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
|
|
342
|
+
* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
|
|
343
|
+
* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
|
|
344
|
+
* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
|
|
345
|
+
*
|
|
346
|
+
* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
|
|
347
|
+
* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
|
|
348
|
+
* Estimation: Theory, Algorithms and Software,
|
|
349
|
+
* Report UMINF - 94.04, Department of Computing Science, Umea
|
|
350
|
+
* University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
|
|
351
|
+
* Note 87. To appear in Numerical Algorithms, 1996.
|
|
352
|
+
*
|
|
353
|
+
* =====================================================================
|
|
354
|
+
* Replaced various illegal calls to SCOPY by calls to SLASET, or by DO
|
|
355
|
+
* loops. Sven Hammarling, 1/5/02.
|
|
356
|
+
*
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
</PRE>
|
|
360
|
+
<A HREF="#top">go to the page top</A>
|
|
361
|
+
|
|
362
|
+
<A NAME="stgexc"></A>
|
|
363
|
+
<H2>stgexc</H2>
|
|
364
|
+
<PRE>
|
|
365
|
+
USAGE:
|
|
366
|
+
work, info, a, b, q, z, ifst, ilst = NumRu::Lapack.stgexc( wantq, wantz, a, b, q, ldq, z, ifst, ilst, [:lwork => lwork, :usage => usage, :help => help])
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
FORTRAN MANUAL
|
|
370
|
+
SUBROUTINE STGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO )
|
|
371
|
+
|
|
372
|
+
* Purpose
|
|
373
|
+
* =======
|
|
374
|
+
*
|
|
375
|
+
* STGEXC reorders the generalized real Schur decomposition of a real
|
|
376
|
+
* matrix pair (A,B) using an orthogonal equivalence transformation
|
|
377
|
+
*
|
|
378
|
+
* (A, B) = Q * (A, B) * Z',
|
|
379
|
+
*
|
|
380
|
+
* so that the diagonal block of (A, B) with row index IFST is moved
|
|
381
|
+
* to row ILST.
|
|
382
|
+
*
|
|
383
|
+
* (A, B) must be in generalized real Schur canonical form (as returned
|
|
384
|
+
* by SGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2
|
|
385
|
+
* diagonal blocks. B is upper triangular.
|
|
386
|
+
*
|
|
387
|
+
* Optionally, the matrices Q and Z of generalized Schur vectors are
|
|
388
|
+
* updated.
|
|
389
|
+
*
|
|
390
|
+
* Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)'
|
|
391
|
+
* Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
|
|
392
|
+
*
|
|
393
|
+
*
|
|
394
|
+
|
|
395
|
+
* Arguments
|
|
396
|
+
* =========
|
|
397
|
+
*
|
|
398
|
+
* WANTQ (input) LOGICAL
|
|
399
|
+
* .TRUE. : update the left transformation matrix Q;
|
|
400
|
+
* .FALSE.: do not update Q.
|
|
401
|
+
*
|
|
402
|
+
* WANTZ (input) LOGICAL
|
|
403
|
+
* .TRUE. : update the right transformation matrix Z;
|
|
404
|
+
* .FALSE.: do not update Z.
|
|
405
|
+
*
|
|
406
|
+
* N (input) INTEGER
|
|
407
|
+
* The order of the matrices A and B. N >= 0.
|
|
408
|
+
*
|
|
409
|
+
* A (input/output) REAL array, dimension (LDA,N)
|
|
410
|
+
* On entry, the matrix A in generalized real Schur canonical
|
|
411
|
+
* form.
|
|
412
|
+
* On exit, the updated matrix A, again in generalized
|
|
413
|
+
* real Schur canonical form.
|
|
414
|
+
*
|
|
415
|
+
* LDA (input) INTEGER
|
|
416
|
+
* The leading dimension of the array A. LDA >= max(1,N).
|
|
417
|
+
*
|
|
418
|
+
* B (input/output) REAL array, dimension (LDB,N)
|
|
419
|
+
* On entry, the matrix B in generalized real Schur canonical
|
|
420
|
+
* form (A,B).
|
|
421
|
+
* On exit, the updated matrix B, again in generalized
|
|
422
|
+
* real Schur canonical form (A,B).
|
|
423
|
+
*
|
|
424
|
+
* LDB (input) INTEGER
|
|
425
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
426
|
+
*
|
|
427
|
+
* Q (input/output) REAL array, dimension (LDZ,N)
|
|
428
|
+
* On entry, if WANTQ = .TRUE., the orthogonal matrix Q.
|
|
429
|
+
* On exit, the updated matrix Q.
|
|
430
|
+
* If WANTQ = .FALSE., Q is not referenced.
|
|
431
|
+
*
|
|
432
|
+
* LDQ (input) INTEGER
|
|
433
|
+
* The leading dimension of the array Q. LDQ >= 1.
|
|
434
|
+
* If WANTQ = .TRUE., LDQ >= N.
|
|
435
|
+
*
|
|
436
|
+
* Z (input/output) REAL array, dimension (LDZ,N)
|
|
437
|
+
* On entry, if WANTZ = .TRUE., the orthogonal matrix Z.
|
|
438
|
+
* On exit, the updated matrix Z.
|
|
439
|
+
* If WANTZ = .FALSE., Z is not referenced.
|
|
440
|
+
*
|
|
441
|
+
* LDZ (input) INTEGER
|
|
442
|
+
* The leading dimension of the array Z. LDZ >= 1.
|
|
443
|
+
* If WANTZ = .TRUE., LDZ >= N.
|
|
444
|
+
*
|
|
445
|
+
* IFST (input/output) INTEGER
|
|
446
|
+
* ILST (input/output) INTEGER
|
|
447
|
+
* Specify the reordering of the diagonal blocks of (A, B).
|
|
448
|
+
* The block with row index IFST is moved to row ILST, by a
|
|
449
|
+
* sequence of swapping between adjacent blocks.
|
|
450
|
+
* On exit, if IFST pointed on entry to the second row of
|
|
451
|
+
* a 2-by-2 block, it is changed to point to the first row;
|
|
452
|
+
* ILST always points to the first row of the block in its
|
|
453
|
+
* final position (which may differ from its input value by
|
|
454
|
+
* +1 or -1). 1 <= IFST, ILST <= N.
|
|
455
|
+
*
|
|
456
|
+
* WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
|
|
457
|
+
* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
|
|
458
|
+
*
|
|
459
|
+
* LWORK (input) INTEGER
|
|
460
|
+
* The dimension of the array WORK.
|
|
461
|
+
* LWORK >= 1 when N <= 1, otherwise LWORK >= 4*N + 16.
|
|
462
|
+
*
|
|
463
|
+
* If LWORK = -1, then a workspace query is assumed; the routine
|
|
464
|
+
* only calculates the optimal size of the WORK array, returns
|
|
465
|
+
* this value as the first entry of the WORK array, and no error
|
|
466
|
+
* message related to LWORK is issued by XERBLA.
|
|
467
|
+
*
|
|
468
|
+
* INFO (output) INTEGER
|
|
469
|
+
* =0: successful exit.
|
|
470
|
+
* <0: if INFO = -i, the i-th argument had an illegal value.
|
|
471
|
+
* =1: The transformed matrix pair (A, B) would be too far
|
|
472
|
+
* from generalized Schur form; the problem is ill-
|
|
473
|
+
* conditioned. (A, B) may have been partially reordered,
|
|
474
|
+
* and ILST points to the first row of the current
|
|
475
|
+
* position of the block being moved.
|
|
476
|
+
*
|
|
477
|
+
|
|
478
|
+
* Further Details
|
|
479
|
+
* ===============
|
|
480
|
+
*
|
|
481
|
+
* Based on contributions by
|
|
482
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
483
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
484
|
+
*
|
|
485
|
+
* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
|
|
486
|
+
* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
|
|
487
|
+
* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
|
|
488
|
+
* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
|
|
489
|
+
*
|
|
490
|
+
* =====================================================================
|
|
491
|
+
*
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
</PRE>
|
|
495
|
+
<A HREF="#top">go to the page top</A>
|
|
496
|
+
|
|
497
|
+
<A NAME="stgsen"></A>
|
|
498
|
+
<H2>stgsen</H2>
|
|
499
|
+
<PRE>
|
|
500
|
+
USAGE:
|
|
501
|
+
alphar, alphai, beta, m, pl, pr, dif, work, iwork, info, a, b, q, z = NumRu::Lapack.stgsen( ijob, wantq, wantz, select, a, b, q, z, [:lwork => lwork, :liwork => liwork, :usage => usage, :help => help])
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
FORTRAN MANUAL
|
|
505
|
+
SUBROUTINE STGSEN( IJOB, WANTQ, WANTZ, SELECT, N, A, LDA, B, LDB, ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, WORK, LWORK, IWORK, LIWORK, INFO )
|
|
506
|
+
|
|
507
|
+
* Purpose
|
|
508
|
+
* =======
|
|
509
|
+
*
|
|
510
|
+
* STGSEN reorders the generalized real Schur decomposition of a real
|
|
511
|
+
* matrix pair (A, B) (in terms of an orthonormal equivalence trans-
|
|
512
|
+
* formation Q' * (A, B) * Z), so that a selected cluster of eigenvalues
|
|
513
|
+
* appears in the leading diagonal blocks of the upper quasi-triangular
|
|
514
|
+
* matrix A and the upper triangular B. The leading columns of Q and
|
|
515
|
+
* Z form orthonormal bases of the corresponding left and right eigen-
|
|
516
|
+
* spaces (deflating subspaces). (A, B) must be in generalized real
|
|
517
|
+
* Schur canonical form (as returned by SGGES), i.e. A is block upper
|
|
518
|
+
* triangular with 1-by-1 and 2-by-2 diagonal blocks. B is upper
|
|
519
|
+
* triangular.
|
|
520
|
+
*
|
|
521
|
+
* STGSEN also computes the generalized eigenvalues
|
|
522
|
+
*
|
|
523
|
+
* w(j) = (ALPHAR(j) + i*ALPHAI(j))/BETA(j)
|
|
524
|
+
*
|
|
525
|
+
* of the reordered matrix pair (A, B).
|
|
526
|
+
*
|
|
527
|
+
* Optionally, STGSEN computes the estimates of reciprocal condition
|
|
528
|
+
* numbers for eigenvalues and eigenspaces. These are Difu[(A11,B11),
|
|
529
|
+
* (A22,B22)] and Difl[(A11,B11), (A22,B22)], i.e. the separation(s)
|
|
530
|
+
* between the matrix pairs (A11, B11) and (A22,B22) that correspond to
|
|
531
|
+
* the selected cluster and the eigenvalues outside the cluster, resp.,
|
|
532
|
+
* and norms of "projections" onto left and right eigenspaces w.r.t.
|
|
533
|
+
* the selected cluster in the (1,1)-block.
|
|
534
|
+
*
|
|
535
|
+
|
|
536
|
+
* Arguments
|
|
537
|
+
* =========
|
|
538
|
+
*
|
|
539
|
+
* IJOB (input) INTEGER
|
|
540
|
+
* Specifies whether condition numbers are required for the
|
|
541
|
+
* cluster of eigenvalues (PL and PR) or the deflating subspaces
|
|
542
|
+
* (Difu and Difl):
|
|
543
|
+
* =0: Only reorder w.r.t. SELECT. No extras.
|
|
544
|
+
* =1: Reciprocal of norms of "projections" onto left and right
|
|
545
|
+
* eigenspaces w.r.t. the selected cluster (PL and PR).
|
|
546
|
+
* =2: Upper bounds on Difu and Difl. F-norm-based estimate
|
|
547
|
+
* (DIF(1:2)).
|
|
548
|
+
* =3: Estimate of Difu and Difl. 1-norm-based estimate
|
|
549
|
+
* (DIF(1:2)).
|
|
550
|
+
* About 5 times as expensive as IJOB = 2.
|
|
551
|
+
* =4: Compute PL, PR and DIF (i.e. 0, 1 and 2 above): Economic
|
|
552
|
+
* version to get it all.
|
|
553
|
+
* =5: Compute PL, PR and DIF (i.e. 0, 1 and 3 above)
|
|
554
|
+
*
|
|
555
|
+
* WANTQ (input) LOGICAL
|
|
556
|
+
* .TRUE. : update the left transformation matrix Q;
|
|
557
|
+
* .FALSE.: do not update Q.
|
|
558
|
+
*
|
|
559
|
+
* WANTZ (input) LOGICAL
|
|
560
|
+
* .TRUE. : update the right transformation matrix Z;
|
|
561
|
+
* .FALSE.: do not update Z.
|
|
562
|
+
*
|
|
563
|
+
* SELECT (input) LOGICAL array, dimension (N)
|
|
564
|
+
* SELECT specifies the eigenvalues in the selected cluster.
|
|
565
|
+
* To select a real eigenvalue w(j), SELECT(j) must be set to
|
|
566
|
+
* .TRUE.. To select a complex conjugate pair of eigenvalues
|
|
567
|
+
* w(j) and w(j+1), corresponding to a 2-by-2 diagonal block,
|
|
568
|
+
* either SELECT(j) or SELECT(j+1) or both must be set to
|
|
569
|
+
* .TRUE.; a complex conjugate pair of eigenvalues must be
|
|
570
|
+
* either both included in the cluster or both excluded.
|
|
571
|
+
*
|
|
572
|
+
* N (input) INTEGER
|
|
573
|
+
* The order of the matrices A and B. N >= 0.
|
|
574
|
+
*
|
|
575
|
+
* A (input/output) REAL array, dimension(LDA,N)
|
|
576
|
+
* On entry, the upper quasi-triangular matrix A, with (A, B) in
|
|
577
|
+
* generalized real Schur canonical form.
|
|
578
|
+
* On exit, A is overwritten by the reordered matrix A.
|
|
579
|
+
*
|
|
580
|
+
* LDA (input) INTEGER
|
|
581
|
+
* The leading dimension of the array A. LDA >= max(1,N).
|
|
582
|
+
*
|
|
583
|
+
* B (input/output) REAL array, dimension(LDB,N)
|
|
584
|
+
* On entry, the upper triangular matrix B, with (A, B) in
|
|
585
|
+
* generalized real Schur canonical form.
|
|
586
|
+
* On exit, B is overwritten by the reordered matrix B.
|
|
587
|
+
*
|
|
588
|
+
* LDB (input) INTEGER
|
|
589
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
590
|
+
*
|
|
591
|
+
* ALPHAR (output) REAL array, dimension (N)
|
|
592
|
+
* ALPHAI (output) REAL array, dimension (N)
|
|
593
|
+
* BETA (output) REAL array, dimension (N)
|
|
594
|
+
* On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
|
|
595
|
+
* be the generalized eigenvalues. ALPHAR(j) + ALPHAI(j)*i
|
|
596
|
+
* and BETA(j),j=1,...,N are the diagonals of the complex Schur
|
|
597
|
+
* form (S,T) that would result if the 2-by-2 diagonal blocks of
|
|
598
|
+
* the real generalized Schur form of (A,B) were further reduced
|
|
599
|
+
* to triangular form using complex unitary transformations.
|
|
600
|
+
* If ALPHAI(j) is zero, then the j-th eigenvalue is real; if
|
|
601
|
+
* positive, then the j-th and (j+1)-st eigenvalues are a
|
|
602
|
+
* complex conjugate pair, with ALPHAI(j+1) negative.
|
|
603
|
+
*
|
|
604
|
+
* Q (input/output) REAL array, dimension (LDQ,N)
|
|
605
|
+
* On entry, if WANTQ = .TRUE., Q is an N-by-N matrix.
|
|
606
|
+
* On exit, Q has been postmultiplied by the left orthogonal
|
|
607
|
+
* transformation matrix which reorder (A, B); The leading M
|
|
608
|
+
* columns of Q form orthonormal bases for the specified pair of
|
|
609
|
+
* left eigenspaces (deflating subspaces).
|
|
610
|
+
* If WANTQ = .FALSE., Q is not referenced.
|
|
611
|
+
*
|
|
612
|
+
* LDQ (input) INTEGER
|
|
613
|
+
* The leading dimension of the array Q. LDQ >= 1;
|
|
614
|
+
* and if WANTQ = .TRUE., LDQ >= N.
|
|
615
|
+
*
|
|
616
|
+
* Z (input/output) REAL array, dimension (LDZ,N)
|
|
617
|
+
* On entry, if WANTZ = .TRUE., Z is an N-by-N matrix.
|
|
618
|
+
* On exit, Z has been postmultiplied by the left orthogonal
|
|
619
|
+
* transformation matrix which reorder (A, B); The leading M
|
|
620
|
+
* columns of Z form orthonormal bases for the specified pair of
|
|
621
|
+
* left eigenspaces (deflating subspaces).
|
|
622
|
+
* If WANTZ = .FALSE., Z is not referenced.
|
|
623
|
+
*
|
|
624
|
+
* LDZ (input) INTEGER
|
|
625
|
+
* The leading dimension of the array Z. LDZ >= 1;
|
|
626
|
+
* If WANTZ = .TRUE., LDZ >= N.
|
|
627
|
+
*
|
|
628
|
+
* M (output) INTEGER
|
|
629
|
+
* The dimension of the specified pair of left and right eigen-
|
|
630
|
+
* spaces (deflating subspaces). 0 <= M <= N.
|
|
631
|
+
*
|
|
632
|
+
* PL (output) REAL
|
|
633
|
+
* PR (output) REAL
|
|
634
|
+
* If IJOB = 1, 4 or 5, PL, PR are lower bounds on the
|
|
635
|
+
* reciprocal of the norm of "projections" onto left and right
|
|
636
|
+
* eigenspaces with respect to the selected cluster.
|
|
637
|
+
* 0 < PL, PR <= 1.
|
|
638
|
+
* If M = 0 or M = N, PL = PR = 1.
|
|
639
|
+
* If IJOB = 0, 2 or 3, PL and PR are not referenced.
|
|
640
|
+
*
|
|
641
|
+
* DIF (output) REAL array, dimension (2).
|
|
642
|
+
* If IJOB >= 2, DIF(1:2) store the estimates of Difu and Difl.
|
|
643
|
+
* If IJOB = 2 or 4, DIF(1:2) are F-norm-based upper bounds on
|
|
644
|
+
* Difu and Difl. If IJOB = 3 or 5, DIF(1:2) are 1-norm-based
|
|
645
|
+
* estimates of Difu and Difl.
|
|
646
|
+
* If M = 0 or N, DIF(1:2) = F-norm([A, B]).
|
|
647
|
+
* If IJOB = 0 or 1, DIF is not referenced.
|
|
648
|
+
*
|
|
649
|
+
* WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
|
|
650
|
+
* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
|
|
651
|
+
*
|
|
652
|
+
* LWORK (input) INTEGER
|
|
653
|
+
* The dimension of the array WORK. LWORK >= 4*N+16.
|
|
654
|
+
* If IJOB = 1, 2 or 4, LWORK >= MAX(4*N+16, 2*M*(N-M)).
|
|
655
|
+
* If IJOB = 3 or 5, LWORK >= MAX(4*N+16, 4*M*(N-M)).
|
|
656
|
+
*
|
|
657
|
+
* If LWORK = -1, then a workspace query is assumed; the routine
|
|
658
|
+
* only calculates the optimal size of the WORK array, returns
|
|
659
|
+
* this value as the first entry of the WORK array, and no error
|
|
660
|
+
* message related to LWORK is issued by XERBLA.
|
|
661
|
+
*
|
|
662
|
+
* IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
|
|
663
|
+
* On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
|
|
664
|
+
*
|
|
665
|
+
* LIWORK (input) INTEGER
|
|
666
|
+
* The dimension of the array IWORK. LIWORK >= 1.
|
|
667
|
+
* If IJOB = 1, 2 or 4, LIWORK >= N+6.
|
|
668
|
+
* If IJOB = 3 or 5, LIWORK >= MAX(2*M*(N-M), N+6).
|
|
669
|
+
*
|
|
670
|
+
* If LIWORK = -1, then a workspace query is assumed; the
|
|
671
|
+
* routine only calculates the optimal size of the IWORK array,
|
|
672
|
+
* returns this value as the first entry of the IWORK array, and
|
|
673
|
+
* no error message related to LIWORK is issued by XERBLA.
|
|
674
|
+
*
|
|
675
|
+
* INFO (output) INTEGER
|
|
676
|
+
* =0: Successful exit.
|
|
677
|
+
* <0: If INFO = -i, the i-th argument had an illegal value.
|
|
678
|
+
* =1: Reordering of (A, B) failed because the transformed
|
|
679
|
+
* matrix pair (A, B) would be too far from generalized
|
|
680
|
+
* Schur form; the problem is very ill-conditioned.
|
|
681
|
+
* (A, B) may have been partially reordered.
|
|
682
|
+
* If requested, 0 is returned in DIF(*), PL and PR.
|
|
683
|
+
*
|
|
684
|
+
|
|
685
|
+
* Further Details
|
|
686
|
+
* ===============
|
|
687
|
+
*
|
|
688
|
+
* STGSEN first collects the selected eigenvalues by computing
|
|
689
|
+
* orthogonal U and W that move them to the top left corner of (A, B).
|
|
690
|
+
* In other words, the selected eigenvalues are the eigenvalues of
|
|
691
|
+
* (A11, B11) in:
|
|
692
|
+
*
|
|
693
|
+
* U'*(A, B)*W = (A11 A12) (B11 B12) n1
|
|
694
|
+
* ( 0 A22),( 0 B22) n2
|
|
695
|
+
* n1 n2 n1 n2
|
|
696
|
+
*
|
|
697
|
+
* where N = n1+n2 and U' means the transpose of U. The first n1 columns
|
|
698
|
+
* of U and W span the specified pair of left and right eigenspaces
|
|
699
|
+
* (deflating subspaces) of (A, B).
|
|
700
|
+
*
|
|
701
|
+
* If (A, B) has been obtained from the generalized real Schur
|
|
702
|
+
* decomposition of a matrix pair (C, D) = Q*(A, B)*Z', then the
|
|
703
|
+
* reordered generalized real Schur form of (C, D) is given by
|
|
704
|
+
*
|
|
705
|
+
* (C, D) = (Q*U)*(U'*(A, B)*W)*(Z*W)',
|
|
706
|
+
*
|
|
707
|
+
* and the first n1 columns of Q*U and Z*W span the corresponding
|
|
708
|
+
* deflating subspaces of (C, D) (Q and Z store Q*U and Z*W, resp.).
|
|
709
|
+
*
|
|
710
|
+
* Note that if the selected eigenvalue is sufficiently ill-conditioned,
|
|
711
|
+
* then its value may differ significantly from its value before
|
|
712
|
+
* reordering.
|
|
713
|
+
*
|
|
714
|
+
* The reciprocal condition numbers of the left and right eigenspaces
|
|
715
|
+
* spanned by the first n1 columns of U and W (or Q*U and Z*W) may
|
|
716
|
+
* be returned in DIF(1:2), corresponding to Difu and Difl, resp.
|
|
717
|
+
*
|
|
718
|
+
* The Difu and Difl are defined as:
|
|
719
|
+
*
|
|
720
|
+
* Difu[(A11, B11), (A22, B22)] = sigma-min( Zu )
|
|
721
|
+
* and
|
|
722
|
+
* Difl[(A11, B11), (A22, B22)] = Difu[(A22, B22), (A11, B11)],
|
|
723
|
+
*
|
|
724
|
+
* where sigma-min(Zu) is the smallest singular value of the
|
|
725
|
+
* (2*n1*n2)-by-(2*n1*n2) matrix
|
|
726
|
+
*
|
|
727
|
+
* Zu = [ kron(In2, A11) -kron(A22', In1) ]
|
|
728
|
+
* [ kron(In2, B11) -kron(B22', In1) ].
|
|
729
|
+
*
|
|
730
|
+
* Here, Inx is the identity matrix of size nx and A22' is the
|
|
731
|
+
* transpose of A22. kron(X, Y) is the Kronecker product between
|
|
732
|
+
* the matrices X and Y.
|
|
733
|
+
*
|
|
734
|
+
* When DIF(2) is small, small changes in (A, B) can cause large changes
|
|
735
|
+
* in the deflating subspace. An approximate (asymptotic) bound on the
|
|
736
|
+
* maximum angular error in the computed deflating subspaces is
|
|
737
|
+
*
|
|
738
|
+
* EPS * norm((A, B)) / DIF(2),
|
|
739
|
+
*
|
|
740
|
+
* where EPS is the machine precision.
|
|
741
|
+
*
|
|
742
|
+
* The reciprocal norm of the projectors on the left and right
|
|
743
|
+
* eigenspaces associated with (A11, B11) may be returned in PL and PR.
|
|
744
|
+
* They are computed as follows. First we compute L and R so that
|
|
745
|
+
* P*(A, B)*Q is block diagonal, where
|
|
746
|
+
*
|
|
747
|
+
* P = ( I -L ) n1 Q = ( I R ) n1
|
|
748
|
+
* ( 0 I ) n2 and ( 0 I ) n2
|
|
749
|
+
* n1 n2 n1 n2
|
|
750
|
+
*
|
|
751
|
+
* and (L, R) is the solution to the generalized Sylvester equation
|
|
752
|
+
*
|
|
753
|
+
* A11*R - L*A22 = -A12
|
|
754
|
+
* B11*R - L*B22 = -B12
|
|
755
|
+
*
|
|
756
|
+
* Then PL = (F-norm(L)**2+1)**(-1/2) and PR = (F-norm(R)**2+1)**(-1/2).
|
|
757
|
+
* An approximate (asymptotic) bound on the average absolute error of
|
|
758
|
+
* the selected eigenvalues is
|
|
759
|
+
*
|
|
760
|
+
* EPS * norm((A, B)) / PL.
|
|
761
|
+
*
|
|
762
|
+
* There are also global error bounds which valid for perturbations up
|
|
763
|
+
* to a certain restriction: A lower bound (x) on the smallest
|
|
764
|
+
* F-norm(E,F) for which an eigenvalue of (A11, B11) may move and
|
|
765
|
+
* coalesce with an eigenvalue of (A22, B22) under perturbation (E,F),
|
|
766
|
+
* (i.e. (A + E, B + F), is
|
|
767
|
+
*
|
|
768
|
+
* x = min(Difu,Difl)/((1/(PL*PL)+1/(PR*PR))**(1/2)+2*max(1/PL,1/PR)).
|
|
769
|
+
*
|
|
770
|
+
* An approximate bound on x can be computed from DIF(1:2), PL and PR.
|
|
771
|
+
*
|
|
772
|
+
* If y = ( F-norm(E,F) / x) <= 1, the angles between the perturbed
|
|
773
|
+
* (L', R') and unperturbed (L, R) left and right deflating subspaces
|
|
774
|
+
* associated with the selected cluster in the (1,1)-blocks can be
|
|
775
|
+
* bounded as
|
|
776
|
+
*
|
|
777
|
+
* max-angle(L, L') <= arctan( y * PL / (1 - y * (1 - PL * PL)**(1/2))
|
|
778
|
+
* max-angle(R, R') <= arctan( y * PR / (1 - y * (1 - PR * PR)**(1/2))
|
|
779
|
+
*
|
|
780
|
+
* See LAPACK User's Guide section 4.11 or the following references
|
|
781
|
+
* for more information.
|
|
782
|
+
*
|
|
783
|
+
* Note that if the default method for computing the Frobenius-norm-
|
|
784
|
+
* based estimate DIF is not wanted (see SLATDF), then the parameter
|
|
785
|
+
* IDIFJB (see below) should be changed from 3 to 4 (routine SLATDF
|
|
786
|
+
* (IJOB = 2 will be used)). See STGSYL for more details.
|
|
787
|
+
*
|
|
788
|
+
* Based on contributions by
|
|
789
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
790
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
791
|
+
*
|
|
792
|
+
* References
|
|
793
|
+
* ==========
|
|
794
|
+
*
|
|
795
|
+
* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
|
|
796
|
+
* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
|
|
797
|
+
* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
|
|
798
|
+
* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
|
|
799
|
+
*
|
|
800
|
+
* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
|
|
801
|
+
* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
|
|
802
|
+
* Estimation: Theory, Algorithms and Software,
|
|
803
|
+
* Report UMINF - 94.04, Department of Computing Science, Umea
|
|
804
|
+
* University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
|
|
805
|
+
* Note 87. To appear in Numerical Algorithms, 1996.
|
|
806
|
+
*
|
|
807
|
+
* [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
|
|
808
|
+
* for Solving the Generalized Sylvester Equation and Estimating the
|
|
809
|
+
* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
|
|
810
|
+
* Department of Computing Science, Umea University, S-901 87 Umea,
|
|
811
|
+
* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
|
|
812
|
+
* Note 75. To appear in ACM Trans. on Math. Software, Vol 22, No 1,
|
|
813
|
+
* 1996.
|
|
814
|
+
*
|
|
815
|
+
* =====================================================================
|
|
816
|
+
*
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
</PRE>
|
|
820
|
+
<A HREF="#top">go to the page top</A>
|
|
821
|
+
|
|
822
|
+
<A NAME="stgsja"></A>
|
|
823
|
+
<H2>stgsja</H2>
|
|
824
|
+
<PRE>
|
|
825
|
+
USAGE:
|
|
826
|
+
alpha, beta, ncycle, info, a, b, u, v, q = NumRu::Lapack.stgsja( jobu, jobv, jobq, k, l, a, b, tola, tolb, u, v, q, [:usage => usage, :help => help])
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
FORTRAN MANUAL
|
|
830
|
+
SUBROUTINE STGSJA( JOBU, JOBV, JOBQ, M, P, N, K, L, A, LDA, B, LDB, TOLA, TOLB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, NCYCLE, INFO )
|
|
831
|
+
|
|
832
|
+
* Purpose
|
|
833
|
+
* =======
|
|
834
|
+
*
|
|
835
|
+
* STGSJA computes the generalized singular value decomposition (GSVD)
|
|
836
|
+
* of two real upper triangular (or trapezoidal) matrices A and B.
|
|
837
|
+
*
|
|
838
|
+
* On entry, it is assumed that matrices A and B have the following
|
|
839
|
+
* forms, which may be obtained by the preprocessing subroutine SGGSVP
|
|
840
|
+
* from a general M-by-N matrix A and P-by-N matrix B:
|
|
841
|
+
*
|
|
842
|
+
* N-K-L K L
|
|
843
|
+
* A = K ( 0 A12 A13 ) if M-K-L >= 0;
|
|
844
|
+
* L ( 0 0 A23 )
|
|
845
|
+
* M-K-L ( 0 0 0 )
|
|
846
|
+
*
|
|
847
|
+
* N-K-L K L
|
|
848
|
+
* A = K ( 0 A12 A13 ) if M-K-L < 0;
|
|
849
|
+
* M-K ( 0 0 A23 )
|
|
850
|
+
*
|
|
851
|
+
* N-K-L K L
|
|
852
|
+
* B = L ( 0 0 B13 )
|
|
853
|
+
* P-L ( 0 0 0 )
|
|
854
|
+
*
|
|
855
|
+
* where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
|
|
856
|
+
* upper triangular; A23 is L-by-L upper triangular if M-K-L >= 0,
|
|
857
|
+
* otherwise A23 is (M-K)-by-L upper trapezoidal.
|
|
858
|
+
*
|
|
859
|
+
* On exit,
|
|
860
|
+
*
|
|
861
|
+
* U'*A*Q = D1*( 0 R ), V'*B*Q = D2*( 0 R ),
|
|
862
|
+
*
|
|
863
|
+
* where U, V and Q are orthogonal matrices, Z' denotes the transpose
|
|
864
|
+
* of Z, R is a nonsingular upper triangular matrix, and D1 and D2 are
|
|
865
|
+
* ``diagonal'' matrices, which are of the following structures:
|
|
866
|
+
*
|
|
867
|
+
* If M-K-L >= 0,
|
|
868
|
+
*
|
|
869
|
+
* K L
|
|
870
|
+
* D1 = K ( I 0 )
|
|
871
|
+
* L ( 0 C )
|
|
872
|
+
* M-K-L ( 0 0 )
|
|
873
|
+
*
|
|
874
|
+
* K L
|
|
875
|
+
* D2 = L ( 0 S )
|
|
876
|
+
* P-L ( 0 0 )
|
|
877
|
+
*
|
|
878
|
+
* N-K-L K L
|
|
879
|
+
* ( 0 R ) = K ( 0 R11 R12 ) K
|
|
880
|
+
* L ( 0 0 R22 ) L
|
|
881
|
+
*
|
|
882
|
+
* where
|
|
883
|
+
*
|
|
884
|
+
* C = diag( ALPHA(K+1), ... , ALPHA(K+L) ),
|
|
885
|
+
* S = diag( BETA(K+1), ... , BETA(K+L) ),
|
|
886
|
+
* C**2 + S**2 = I.
|
|
887
|
+
*
|
|
888
|
+
* R is stored in A(1:K+L,N-K-L+1:N) on exit.
|
|
889
|
+
*
|
|
890
|
+
* If M-K-L < 0,
|
|
891
|
+
*
|
|
892
|
+
* K M-K K+L-M
|
|
893
|
+
* D1 = K ( I 0 0 )
|
|
894
|
+
* M-K ( 0 C 0 )
|
|
895
|
+
*
|
|
896
|
+
* K M-K K+L-M
|
|
897
|
+
* D2 = M-K ( 0 S 0 )
|
|
898
|
+
* K+L-M ( 0 0 I )
|
|
899
|
+
* P-L ( 0 0 0 )
|
|
900
|
+
*
|
|
901
|
+
* N-K-L K M-K K+L-M
|
|
902
|
+
* ( 0 R ) = K ( 0 R11 R12 R13 )
|
|
903
|
+
* M-K ( 0 0 R22 R23 )
|
|
904
|
+
* K+L-M ( 0 0 0 R33 )
|
|
905
|
+
*
|
|
906
|
+
* where
|
|
907
|
+
* C = diag( ALPHA(K+1), ... , ALPHA(M) ),
|
|
908
|
+
* S = diag( BETA(K+1), ... , BETA(M) ),
|
|
909
|
+
* C**2 + S**2 = I.
|
|
910
|
+
*
|
|
911
|
+
* R = ( R11 R12 R13 ) is stored in A(1:M, N-K-L+1:N) and R33 is stored
|
|
912
|
+
* ( 0 R22 R23 )
|
|
913
|
+
* in B(M-K+1:L,N+M-K-L+1:N) on exit.
|
|
914
|
+
*
|
|
915
|
+
* The computation of the orthogonal transformation matrices U, V or Q
|
|
916
|
+
* is optional. These matrices may either be formed explicitly, or they
|
|
917
|
+
* may be postmultiplied into input matrices U1, V1, or Q1.
|
|
918
|
+
*
|
|
919
|
+
|
|
920
|
+
* Arguments
|
|
921
|
+
* =========
|
|
922
|
+
*
|
|
923
|
+
* JOBU (input) CHARACTER*1
|
|
924
|
+
* = 'U': U must contain an orthogonal matrix U1 on entry, and
|
|
925
|
+
* the product U1*U is returned;
|
|
926
|
+
* = 'I': U is initialized to the unit matrix, and the
|
|
927
|
+
* orthogonal matrix U is returned;
|
|
928
|
+
* = 'N': U is not computed.
|
|
929
|
+
*
|
|
930
|
+
* JOBV (input) CHARACTER*1
|
|
931
|
+
* = 'V': V must contain an orthogonal matrix V1 on entry, and
|
|
932
|
+
* the product V1*V is returned;
|
|
933
|
+
* = 'I': V is initialized to the unit matrix, and the
|
|
934
|
+
* orthogonal matrix V is returned;
|
|
935
|
+
* = 'N': V is not computed.
|
|
936
|
+
*
|
|
937
|
+
* JOBQ (input) CHARACTER*1
|
|
938
|
+
* = 'Q': Q must contain an orthogonal matrix Q1 on entry, and
|
|
939
|
+
* the product Q1*Q is returned;
|
|
940
|
+
* = 'I': Q is initialized to the unit matrix, and the
|
|
941
|
+
* orthogonal matrix Q is returned;
|
|
942
|
+
* = 'N': Q is not computed.
|
|
943
|
+
*
|
|
944
|
+
* M (input) INTEGER
|
|
945
|
+
* The number of rows of the matrix A. M >= 0.
|
|
946
|
+
*
|
|
947
|
+
* P (input) INTEGER
|
|
948
|
+
* The number of rows of the matrix B. P >= 0.
|
|
949
|
+
*
|
|
950
|
+
* N (input) INTEGER
|
|
951
|
+
* The number of columns of the matrices A and B. N >= 0.
|
|
952
|
+
*
|
|
953
|
+
* K (input) INTEGER
|
|
954
|
+
* L (input) INTEGER
|
|
955
|
+
* K and L specify the subblocks in the input matrices A and B:
|
|
956
|
+
* A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N)
|
|
957
|
+
* of A and B, whose GSVD is going to be computed by STGSJA.
|
|
958
|
+
* See Further Details.
|
|
959
|
+
*
|
|
960
|
+
* A (input/output) REAL array, dimension (LDA,N)
|
|
961
|
+
* On entry, the M-by-N matrix A.
|
|
962
|
+
* On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
|
|
963
|
+
* matrix R or part of R. See Purpose for details.
|
|
964
|
+
*
|
|
965
|
+
* LDA (input) INTEGER
|
|
966
|
+
* The leading dimension of the array A. LDA >= max(1,M).
|
|
967
|
+
*
|
|
968
|
+
* B (input/output) REAL array, dimension (LDB,N)
|
|
969
|
+
* On entry, the P-by-N matrix B.
|
|
970
|
+
* On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
|
|
971
|
+
* a part of R. See Purpose for details.
|
|
972
|
+
*
|
|
973
|
+
* LDB (input) INTEGER
|
|
974
|
+
* The leading dimension of the array B. LDB >= max(1,P).
|
|
975
|
+
*
|
|
976
|
+
* TOLA (input) REAL
|
|
977
|
+
* TOLB (input) REAL
|
|
978
|
+
* TOLA and TOLB are the convergence criteria for the Jacobi-
|
|
979
|
+
* Kogbetliantz iteration procedure. Generally, they are the
|
|
980
|
+
* same as used in the preprocessing step, say
|
|
981
|
+
* TOLA = max(M,N)*norm(A)*MACHEPS,
|
|
982
|
+
* TOLB = max(P,N)*norm(B)*MACHEPS.
|
|
983
|
+
*
|
|
984
|
+
* ALPHA (output) REAL array, dimension (N)
|
|
985
|
+
* BETA (output) REAL array, dimension (N)
|
|
986
|
+
* On exit, ALPHA and BETA contain the generalized singular
|
|
987
|
+
* value pairs of A and B;
|
|
988
|
+
* ALPHA(1:K) = 1,
|
|
989
|
+
* BETA(1:K) = 0,
|
|
990
|
+
* and if M-K-L >= 0,
|
|
991
|
+
* ALPHA(K+1:K+L) = diag(C),
|
|
992
|
+
* BETA(K+1:K+L) = diag(S),
|
|
993
|
+
* or if M-K-L < 0,
|
|
994
|
+
* ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
|
|
995
|
+
* BETA(K+1:M) = S, BETA(M+1:K+L) = 1.
|
|
996
|
+
* Furthermore, if K+L < N,
|
|
997
|
+
* ALPHA(K+L+1:N) = 0 and
|
|
998
|
+
* BETA(K+L+1:N) = 0.
|
|
999
|
+
*
|
|
1000
|
+
* U (input/output) REAL array, dimension (LDU,M)
|
|
1001
|
+
* On entry, if JOBU = 'U', U must contain a matrix U1 (usually
|
|
1002
|
+
* the orthogonal matrix returned by SGGSVP).
|
|
1003
|
+
* On exit,
|
|
1004
|
+
* if JOBU = 'I', U contains the orthogonal matrix U;
|
|
1005
|
+
* if JOBU = 'U', U contains the product U1*U.
|
|
1006
|
+
* If JOBU = 'N', U is not referenced.
|
|
1007
|
+
*
|
|
1008
|
+
* LDU (input) INTEGER
|
|
1009
|
+
* The leading dimension of the array U. LDU >= max(1,M) if
|
|
1010
|
+
* JOBU = 'U'; LDU >= 1 otherwise.
|
|
1011
|
+
*
|
|
1012
|
+
* V (input/output) REAL array, dimension (LDV,P)
|
|
1013
|
+
* On entry, if JOBV = 'V', V must contain a matrix V1 (usually
|
|
1014
|
+
* the orthogonal matrix returned by SGGSVP).
|
|
1015
|
+
* On exit,
|
|
1016
|
+
* if JOBV = 'I', V contains the orthogonal matrix V;
|
|
1017
|
+
* if JOBV = 'V', V contains the product V1*V.
|
|
1018
|
+
* If JOBV = 'N', V is not referenced.
|
|
1019
|
+
*
|
|
1020
|
+
* LDV (input) INTEGER
|
|
1021
|
+
* The leading dimension of the array V. LDV >= max(1,P) if
|
|
1022
|
+
* JOBV = 'V'; LDV >= 1 otherwise.
|
|
1023
|
+
*
|
|
1024
|
+
* Q (input/output) REAL array, dimension (LDQ,N)
|
|
1025
|
+
* On entry, if JOBQ = 'Q', Q must contain a matrix Q1 (usually
|
|
1026
|
+
* the orthogonal matrix returned by SGGSVP).
|
|
1027
|
+
* On exit,
|
|
1028
|
+
* if JOBQ = 'I', Q contains the orthogonal matrix Q;
|
|
1029
|
+
* if JOBQ = 'Q', Q contains the product Q1*Q.
|
|
1030
|
+
* If JOBQ = 'N', Q is not referenced.
|
|
1031
|
+
*
|
|
1032
|
+
* LDQ (input) INTEGER
|
|
1033
|
+
* The leading dimension of the array Q. LDQ >= max(1,N) if
|
|
1034
|
+
* JOBQ = 'Q'; LDQ >= 1 otherwise.
|
|
1035
|
+
*
|
|
1036
|
+
* WORK (workspace) REAL array, dimension (2*N)
|
|
1037
|
+
*
|
|
1038
|
+
* NCYCLE (output) INTEGER
|
|
1039
|
+
* The number of cycles required for convergence.
|
|
1040
|
+
*
|
|
1041
|
+
* INFO (output) INTEGER
|
|
1042
|
+
* = 0: successful exit
|
|
1043
|
+
* < 0: if INFO = -i, the i-th argument had an illegal value.
|
|
1044
|
+
* = 1: the procedure does not converge after MAXIT cycles.
|
|
1045
|
+
*
|
|
1046
|
+
* Internal Parameters
|
|
1047
|
+
* ===================
|
|
1048
|
+
*
|
|
1049
|
+
* MAXIT INTEGER
|
|
1050
|
+
* MAXIT specifies the total loops that the iterative procedure
|
|
1051
|
+
* may take. If after MAXIT cycles, the routine fails to
|
|
1052
|
+
* converge, we return INFO = 1.
|
|
1053
|
+
*
|
|
1054
|
+
|
|
1055
|
+
* Further Details
|
|
1056
|
+
* ===============
|
|
1057
|
+
*
|
|
1058
|
+
* STGSJA essentially uses a variant of Kogbetliantz algorithm to reduce
|
|
1059
|
+
* min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and L-by-L
|
|
1060
|
+
* matrix B13 to the form:
|
|
1061
|
+
*
|
|
1062
|
+
* U1'*A13*Q1 = C1*R1; V1'*B13*Q1 = S1*R1,
|
|
1063
|
+
*
|
|
1064
|
+
* where U1, V1 and Q1 are orthogonal matrix, and Z' is the transpose
|
|
1065
|
+
* of Z. C1 and S1 are diagonal matrices satisfying
|
|
1066
|
+
*
|
|
1067
|
+
* C1**2 + S1**2 = I,
|
|
1068
|
+
*
|
|
1069
|
+
* and R1 is an L-by-L nonsingular upper triangular matrix.
|
|
1070
|
+
*
|
|
1071
|
+
* =====================================================================
|
|
1072
|
+
*
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
</PRE>
|
|
1076
|
+
<A HREF="#top">go to the page top</A>
|
|
1077
|
+
|
|
1078
|
+
<A NAME="stgsna"></A>
|
|
1079
|
+
<H2>stgsna</H2>
|
|
1080
|
+
<PRE>
|
|
1081
|
+
USAGE:
|
|
1082
|
+
s, dif, m, work, info = NumRu::Lapack.stgsna( job, howmny, select, a, b, vl, vr, [:lwork => lwork, :usage => usage, :help => help])
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
FORTRAN MANUAL
|
|
1086
|
+
SUBROUTINE STGSNA( JOB, HOWMNY, SELECT, N, A, LDA, B, LDB, VL, LDVL, VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO )
|
|
1087
|
+
|
|
1088
|
+
* Purpose
|
|
1089
|
+
* =======
|
|
1090
|
+
*
|
|
1091
|
+
* STGSNA estimates reciprocal condition numbers for specified
|
|
1092
|
+
* eigenvalues and/or eigenvectors of a matrix pair (A, B) in
|
|
1093
|
+
* generalized real Schur canonical form (or of any matrix pair
|
|
1094
|
+
* (Q*A*Z', Q*B*Z') with orthogonal matrices Q and Z, where
|
|
1095
|
+
* Z' denotes the transpose of Z.
|
|
1096
|
+
*
|
|
1097
|
+
* (A, B) must be in generalized real Schur form (as returned by SGGES),
|
|
1098
|
+
* i.e. A is block upper triangular with 1-by-1 and 2-by-2 diagonal
|
|
1099
|
+
* blocks. B is upper triangular.
|
|
1100
|
+
*
|
|
1101
|
+
*
|
|
1102
|
+
|
|
1103
|
+
* Arguments
|
|
1104
|
+
* =========
|
|
1105
|
+
*
|
|
1106
|
+
* JOB (input) CHARACTER*1
|
|
1107
|
+
* Specifies whether condition numbers are required for
|
|
1108
|
+
* eigenvalues (S) or eigenvectors (DIF):
|
|
1109
|
+
* = 'E': for eigenvalues only (S);
|
|
1110
|
+
* = 'V': for eigenvectors only (DIF);
|
|
1111
|
+
* = 'B': for both eigenvalues and eigenvectors (S and DIF).
|
|
1112
|
+
*
|
|
1113
|
+
* HOWMNY (input) CHARACTER*1
|
|
1114
|
+
* = 'A': compute condition numbers for all eigenpairs;
|
|
1115
|
+
* = 'S': compute condition numbers for selected eigenpairs
|
|
1116
|
+
* specified by the array SELECT.
|
|
1117
|
+
*
|
|
1118
|
+
* SELECT (input) LOGICAL array, dimension (N)
|
|
1119
|
+
* If HOWMNY = 'S', SELECT specifies the eigenpairs for which
|
|
1120
|
+
* condition numbers are required. To select condition numbers
|
|
1121
|
+
* for the eigenpair corresponding to a real eigenvalue w(j),
|
|
1122
|
+
* SELECT(j) must be set to .TRUE.. To select condition numbers
|
|
1123
|
+
* corresponding to a complex conjugate pair of eigenvalues w(j)
|
|
1124
|
+
* and w(j+1), either SELECT(j) or SELECT(j+1) or both, must be
|
|
1125
|
+
* set to .TRUE..
|
|
1126
|
+
* If HOWMNY = 'A', SELECT is not referenced.
|
|
1127
|
+
*
|
|
1128
|
+
* N (input) INTEGER
|
|
1129
|
+
* The order of the square matrix pair (A, B). N >= 0.
|
|
1130
|
+
*
|
|
1131
|
+
* A (input) REAL array, dimension (LDA,N)
|
|
1132
|
+
* The upper quasi-triangular matrix A in the pair (A,B).
|
|
1133
|
+
*
|
|
1134
|
+
* LDA (input) INTEGER
|
|
1135
|
+
* The leading dimension of the array A. LDA >= max(1,N).
|
|
1136
|
+
*
|
|
1137
|
+
* B (input) REAL array, dimension (LDB,N)
|
|
1138
|
+
* The upper triangular matrix B in the pair (A,B).
|
|
1139
|
+
*
|
|
1140
|
+
* LDB (input) INTEGER
|
|
1141
|
+
* The leading dimension of the array B. LDB >= max(1,N).
|
|
1142
|
+
*
|
|
1143
|
+
* VL (input) REAL array, dimension (LDVL,M)
|
|
1144
|
+
* If JOB = 'E' or 'B', VL must contain left eigenvectors of
|
|
1145
|
+
* (A, B), corresponding to the eigenpairs specified by HOWMNY
|
|
1146
|
+
* and SELECT. The eigenvectors must be stored in consecutive
|
|
1147
|
+
* columns of VL, as returned by STGEVC.
|
|
1148
|
+
* If JOB = 'V', VL is not referenced.
|
|
1149
|
+
*
|
|
1150
|
+
* LDVL (input) INTEGER
|
|
1151
|
+
* The leading dimension of the array VL. LDVL >= 1.
|
|
1152
|
+
* If JOB = 'E' or 'B', LDVL >= N.
|
|
1153
|
+
*
|
|
1154
|
+
* VR (input) REAL array, dimension (LDVR,M)
|
|
1155
|
+
* If JOB = 'E' or 'B', VR must contain right eigenvectors of
|
|
1156
|
+
* (A, B), corresponding to the eigenpairs specified by HOWMNY
|
|
1157
|
+
* and SELECT. The eigenvectors must be stored in consecutive
|
|
1158
|
+
* columns ov VR, as returned by STGEVC.
|
|
1159
|
+
* If JOB = 'V', VR is not referenced.
|
|
1160
|
+
*
|
|
1161
|
+
* LDVR (input) INTEGER
|
|
1162
|
+
* The leading dimension of the array VR. LDVR >= 1.
|
|
1163
|
+
* If JOB = 'E' or 'B', LDVR >= N.
|
|
1164
|
+
*
|
|
1165
|
+
* S (output) REAL array, dimension (MM)
|
|
1166
|
+
* If JOB = 'E' or 'B', the reciprocal condition numbers of the
|
|
1167
|
+
* selected eigenvalues, stored in consecutive elements of the
|
|
1168
|
+
* array. For a complex conjugate pair of eigenvalues two
|
|
1169
|
+
* consecutive elements of S are set to the same value. Thus
|
|
1170
|
+
* S(j), DIF(j), and the j-th columns of VL and VR all
|
|
1171
|
+
* correspond to the same eigenpair (but not in general the
|
|
1172
|
+
* j-th eigenpair, unless all eigenpairs are selected).
|
|
1173
|
+
* If JOB = 'V', S is not referenced.
|
|
1174
|
+
*
|
|
1175
|
+
* DIF (output) REAL array, dimension (MM)
|
|
1176
|
+
* If JOB = 'V' or 'B', the estimated reciprocal condition
|
|
1177
|
+
* numbers of the selected eigenvectors, stored in consecutive
|
|
1178
|
+
* elements of the array. For a complex eigenvector two
|
|
1179
|
+
* consecutive elements of DIF are set to the same value. If
|
|
1180
|
+
* the eigenvalues cannot be reordered to compute DIF(j), DIF(j)
|
|
1181
|
+
* is set to 0; this can only occur when the true value would be
|
|
1182
|
+
* very small anyway.
|
|
1183
|
+
* If JOB = 'E', DIF is not referenced.
|
|
1184
|
+
*
|
|
1185
|
+
* MM (input) INTEGER
|
|
1186
|
+
* The number of elements in the arrays S and DIF. MM >= M.
|
|
1187
|
+
*
|
|
1188
|
+
* M (output) INTEGER
|
|
1189
|
+
* The number of elements of the arrays S and DIF used to store
|
|
1190
|
+
* the specified condition numbers; for each selected real
|
|
1191
|
+
* eigenvalue one element is used, and for each selected complex
|
|
1192
|
+
* conjugate pair of eigenvalues, two elements are used.
|
|
1193
|
+
* If HOWMNY = 'A', M is set to N.
|
|
1194
|
+
*
|
|
1195
|
+
* WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
|
|
1196
|
+
* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
|
|
1197
|
+
*
|
|
1198
|
+
* LWORK (input) INTEGER
|
|
1199
|
+
* The dimension of the array WORK. LWORK >= max(1,N).
|
|
1200
|
+
* If JOB = 'V' or 'B' LWORK >= 2*N*(N+2)+16.
|
|
1201
|
+
*
|
|
1202
|
+
* If LWORK = -1, then a workspace query is assumed; the routine
|
|
1203
|
+
* only calculates the optimal size of the WORK array, returns
|
|
1204
|
+
* this value as the first entry of the WORK array, and no error
|
|
1205
|
+
* message related to LWORK is issued by XERBLA.
|
|
1206
|
+
*
|
|
1207
|
+
* IWORK (workspace) INTEGER array, dimension (N + 6)
|
|
1208
|
+
* If JOB = 'E', IWORK is not referenced.
|
|
1209
|
+
*
|
|
1210
|
+
* INFO (output) INTEGER
|
|
1211
|
+
* =0: Successful exit
|
|
1212
|
+
* <0: If INFO = -i, the i-th argument had an illegal value
|
|
1213
|
+
*
|
|
1214
|
+
*
|
|
1215
|
+
|
|
1216
|
+
* Further Details
|
|
1217
|
+
* ===============
|
|
1218
|
+
*
|
|
1219
|
+
* The reciprocal of the condition number of a generalized eigenvalue
|
|
1220
|
+
* w = (a, b) is defined as
|
|
1221
|
+
*
|
|
1222
|
+
* S(w) = (|u'Av|**2 + |u'Bv|**2)**(1/2) / (norm(u)*norm(v))
|
|
1223
|
+
*
|
|
1224
|
+
* where u and v are the left and right eigenvectors of (A, B)
|
|
1225
|
+
* corresponding to w; |z| denotes the absolute value of the complex
|
|
1226
|
+
* number, and norm(u) denotes the 2-norm of the vector u.
|
|
1227
|
+
* The pair (a, b) corresponds to an eigenvalue w = a/b (= u'Av/u'Bv)
|
|
1228
|
+
* of the matrix pair (A, B). If both a and b equal zero, then (A B) is
|
|
1229
|
+
* singular and S(I) = -1 is returned.
|
|
1230
|
+
*
|
|
1231
|
+
* An approximate error bound on the chordal distance between the i-th
|
|
1232
|
+
* computed generalized eigenvalue w and the corresponding exact
|
|
1233
|
+
* eigenvalue lambda is
|
|
1234
|
+
*
|
|
1235
|
+
* chord(w, lambda) <= EPS * norm(A, B) / S(I)
|
|
1236
|
+
*
|
|
1237
|
+
* where EPS is the machine precision.
|
|
1238
|
+
*
|
|
1239
|
+
* The reciprocal of the condition number DIF(i) of right eigenvector u
|
|
1240
|
+
* and left eigenvector v corresponding to the generalized eigenvalue w
|
|
1241
|
+
* is defined as follows:
|
|
1242
|
+
*
|
|
1243
|
+
* a) If the i-th eigenvalue w = (a,b) is real
|
|
1244
|
+
*
|
|
1245
|
+
* Suppose U and V are orthogonal transformations such that
|
|
1246
|
+
*
|
|
1247
|
+
* U'*(A, B)*V = (S, T) = ( a * ) ( b * ) 1
|
|
1248
|
+
* ( 0 S22 ),( 0 T22 ) n-1
|
|
1249
|
+
* 1 n-1 1 n-1
|
|
1250
|
+
*
|
|
1251
|
+
* Then the reciprocal condition number DIF(i) is
|
|
1252
|
+
*
|
|
1253
|
+
* Difl((a, b), (S22, T22)) = sigma-min( Zl ),
|
|
1254
|
+
*
|
|
1255
|
+
* where sigma-min(Zl) denotes the smallest singular value of the
|
|
1256
|
+
* 2(n-1)-by-2(n-1) matrix
|
|
1257
|
+
*
|
|
1258
|
+
* Zl = [ kron(a, In-1) -kron(1, S22) ]
|
|
1259
|
+
* [ kron(b, In-1) -kron(1, T22) ] .
|
|
1260
|
+
*
|
|
1261
|
+
* Here In-1 is the identity matrix of size n-1. kron(X, Y) is the
|
|
1262
|
+
* Kronecker product between the matrices X and Y.
|
|
1263
|
+
*
|
|
1264
|
+
* Note that if the default method for computing DIF(i) is wanted
|
|
1265
|
+
* (see SLATDF), then the parameter DIFDRI (see below) should be
|
|
1266
|
+
* changed from 3 to 4 (routine SLATDF(IJOB = 2 will be used)).
|
|
1267
|
+
* See STGSYL for more details.
|
|
1268
|
+
*
|
|
1269
|
+
* b) If the i-th and (i+1)-th eigenvalues are complex conjugate pair,
|
|
1270
|
+
*
|
|
1271
|
+
* Suppose U and V are orthogonal transformations such that
|
|
1272
|
+
*
|
|
1273
|
+
* U'*(A, B)*V = (S, T) = ( S11 * ) ( T11 * ) 2
|
|
1274
|
+
* ( 0 S22 ),( 0 T22) n-2
|
|
1275
|
+
* 2 n-2 2 n-2
|
|
1276
|
+
*
|
|
1277
|
+
* and (S11, T11) corresponds to the complex conjugate eigenvalue
|
|
1278
|
+
* pair (w, conjg(w)). There exist unitary matrices U1 and V1 such
|
|
1279
|
+
* that
|
|
1280
|
+
*
|
|
1281
|
+
* U1'*S11*V1 = ( s11 s12 ) and U1'*T11*V1 = ( t11 t12 )
|
|
1282
|
+
* ( 0 s22 ) ( 0 t22 )
|
|
1283
|
+
*
|
|
1284
|
+
* where the generalized eigenvalues w = s11/t11 and
|
|
1285
|
+
* conjg(w) = s22/t22.
|
|
1286
|
+
*
|
|
1287
|
+
* Then the reciprocal condition number DIF(i) is bounded by
|
|
1288
|
+
*
|
|
1289
|
+
* min( d1, max( 1, |real(s11)/real(s22)| )*d2 )
|
|
1290
|
+
*
|
|
1291
|
+
* where, d1 = Difl((s11, t11), (s22, t22)) = sigma-min(Z1), where
|
|
1292
|
+
* Z1 is the complex 2-by-2 matrix
|
|
1293
|
+
*
|
|
1294
|
+
* Z1 = [ s11 -s22 ]
|
|
1295
|
+
* [ t11 -t22 ],
|
|
1296
|
+
*
|
|
1297
|
+
* This is done by computing (using real arithmetic) the
|
|
1298
|
+
* roots of the characteristical polynomial det(Z1' * Z1 - lambda I),
|
|
1299
|
+
* where Z1' denotes the conjugate transpose of Z1 and det(X) denotes
|
|
1300
|
+
* the determinant of X.
|
|
1301
|
+
*
|
|
1302
|
+
* and d2 is an upper bound on Difl((S11, T11), (S22, T22)), i.e. an
|
|
1303
|
+
* upper bound on sigma-min(Z2), where Z2 is (2n-2)-by-(2n-2)
|
|
1304
|
+
*
|
|
1305
|
+
* Z2 = [ kron(S11', In-2) -kron(I2, S22) ]
|
|
1306
|
+
* [ kron(T11', In-2) -kron(I2, T22) ]
|
|
1307
|
+
*
|
|
1308
|
+
* Note that if the default method for computing DIF is wanted (see
|
|
1309
|
+
* SLATDF), then the parameter DIFDRI (see below) should be changed
|
|
1310
|
+
* from 3 to 4 (routine SLATDF(IJOB = 2 will be used)). See STGSYL
|
|
1311
|
+
* for more details.
|
|
1312
|
+
*
|
|
1313
|
+
* For each eigenvalue/vector specified by SELECT, DIF stores a
|
|
1314
|
+
* Frobenius norm-based estimate of Difl.
|
|
1315
|
+
*
|
|
1316
|
+
* An approximate error bound for the i-th computed eigenvector VL(i) or
|
|
1317
|
+
* VR(i) is given by
|
|
1318
|
+
*
|
|
1319
|
+
* EPS * norm(A, B) / DIF(i).
|
|
1320
|
+
*
|
|
1321
|
+
* See ref. [2-3] for more details and further references.
|
|
1322
|
+
*
|
|
1323
|
+
* Based on contributions by
|
|
1324
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
1325
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
1326
|
+
*
|
|
1327
|
+
* References
|
|
1328
|
+
* ==========
|
|
1329
|
+
*
|
|
1330
|
+
* [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
|
|
1331
|
+
* Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
|
|
1332
|
+
* M.S. Moonen et al (eds), Linear Algebra for Large Scale and
|
|
1333
|
+
* Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
|
|
1334
|
+
*
|
|
1335
|
+
* [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
|
|
1336
|
+
* Eigenvalues of a Regular Matrix Pair (A, B) and Condition
|
|
1337
|
+
* Estimation: Theory, Algorithms and Software,
|
|
1338
|
+
* Report UMINF - 94.04, Department of Computing Science, Umea
|
|
1339
|
+
* University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
|
|
1340
|
+
* Note 87. To appear in Numerical Algorithms, 1996.
|
|
1341
|
+
*
|
|
1342
|
+
* [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
|
|
1343
|
+
* for Solving the Generalized Sylvester Equation and Estimating the
|
|
1344
|
+
* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
|
|
1345
|
+
* Department of Computing Science, Umea University, S-901 87 Umea,
|
|
1346
|
+
* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
|
|
1347
|
+
* Note 75. To appear in ACM Trans. on Math. Software, Vol 22,
|
|
1348
|
+
* No 1, 1996.
|
|
1349
|
+
*
|
|
1350
|
+
* =====================================================================
|
|
1351
|
+
*
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
</PRE>
|
|
1355
|
+
<A HREF="#top">go to the page top</A>
|
|
1356
|
+
|
|
1357
|
+
<A NAME="stgsy2"></A>
|
|
1358
|
+
<H2>stgsy2</H2>
|
|
1359
|
+
<PRE>
|
|
1360
|
+
USAGE:
|
|
1361
|
+
scale, pq, info, c, f, rdsum, rdscal = NumRu::Lapack.stgsy2( trans, ijob, a, b, c, d, e, f, rdsum, rdscal, [:usage => usage, :help => help])
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
FORTRAN MANUAL
|
|
1365
|
+
SUBROUTINE STGSY2( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, RDSUM, RDSCAL, IWORK, PQ, INFO )
|
|
1366
|
+
|
|
1367
|
+
* Purpose
|
|
1368
|
+
* =======
|
|
1369
|
+
*
|
|
1370
|
+
* STGSY2 solves the generalized Sylvester equation:
|
|
1371
|
+
*
|
|
1372
|
+
* A * R - L * B = scale * C (1)
|
|
1373
|
+
* D * R - L * E = scale * F,
|
|
1374
|
+
*
|
|
1375
|
+
* using Level 1 and 2 BLAS. where R and L are unknown M-by-N matrices,
|
|
1376
|
+
* (A, D), (B, E) and (C, F) are given matrix pairs of size M-by-M,
|
|
1377
|
+
* N-by-N and M-by-N, respectively, with real entries. (A, D) and (B, E)
|
|
1378
|
+
* must be in generalized Schur canonical form, i.e. A, B are upper
|
|
1379
|
+
* quasi triangular and D, E are upper triangular. The solution (R, L)
|
|
1380
|
+
* overwrites (C, F). 0 <= SCALE <= 1 is an output scaling factor
|
|
1381
|
+
* chosen to avoid overflow.
|
|
1382
|
+
*
|
|
1383
|
+
* In matrix notation solving equation (1) corresponds to solve
|
|
1384
|
+
* Z*x = scale*b, where Z is defined as
|
|
1385
|
+
*
|
|
1386
|
+
* Z = [ kron(In, A) -kron(B', Im) ] (2)
|
|
1387
|
+
* [ kron(In, D) -kron(E', Im) ],
|
|
1388
|
+
*
|
|
1389
|
+
* Ik is the identity matrix of size k and X' is the transpose of X.
|
|
1390
|
+
* kron(X, Y) is the Kronecker product between the matrices X and Y.
|
|
1391
|
+
* In the process of solving (1), we solve a number of such systems
|
|
1392
|
+
* where Dim(In), Dim(In) = 1 or 2.
|
|
1393
|
+
*
|
|
1394
|
+
* If TRANS = 'T', solve the transposed system Z'*y = scale*b for y,
|
|
1395
|
+
* which is equivalent to solve for R and L in
|
|
1396
|
+
*
|
|
1397
|
+
* A' * R + D' * L = scale * C (3)
|
|
1398
|
+
* R * B' + L * E' = scale * -F
|
|
1399
|
+
*
|
|
1400
|
+
* This case is used to compute an estimate of Dif[(A, D), (B, E)] =
|
|
1401
|
+
* sigma_min(Z) using reverse communicaton with SLACON.
|
|
1402
|
+
*
|
|
1403
|
+
* STGSY2 also (IJOB >= 1) contributes to the computation in STGSYL
|
|
1404
|
+
* of an upper bound on the separation between to matrix pairs. Then
|
|
1405
|
+
* the input (A, D), (B, E) are sub-pencils of the matrix pair in
|
|
1406
|
+
* STGSYL. See STGSYL for details.
|
|
1407
|
+
*
|
|
1408
|
+
|
|
1409
|
+
* Arguments
|
|
1410
|
+
* =========
|
|
1411
|
+
*
|
|
1412
|
+
* TRANS (input) CHARACTER*1
|
|
1413
|
+
* = 'N', solve the generalized Sylvester equation (1).
|
|
1414
|
+
* = 'T': solve the 'transposed' system (3).
|
|
1415
|
+
*
|
|
1416
|
+
* IJOB (input) INTEGER
|
|
1417
|
+
* Specifies what kind of functionality to be performed.
|
|
1418
|
+
* = 0: solve (1) only.
|
|
1419
|
+
* = 1: A contribution from this subsystem to a Frobenius
|
|
1420
|
+
* norm-based estimate of the separation between two matrix
|
|
1421
|
+
* pairs is computed. (look ahead strategy is used).
|
|
1422
|
+
* = 2: A contribution from this subsystem to a Frobenius
|
|
1423
|
+
* norm-based estimate of the separation between two matrix
|
|
1424
|
+
* pairs is computed. (SGECON on sub-systems is used.)
|
|
1425
|
+
* Not referenced if TRANS = 'T'.
|
|
1426
|
+
*
|
|
1427
|
+
* M (input) INTEGER
|
|
1428
|
+
* On entry, M specifies the order of A and D, and the row
|
|
1429
|
+
* dimension of C, F, R and L.
|
|
1430
|
+
*
|
|
1431
|
+
* N (input) INTEGER
|
|
1432
|
+
* On entry, N specifies the order of B and E, and the column
|
|
1433
|
+
* dimension of C, F, R and L.
|
|
1434
|
+
*
|
|
1435
|
+
* A (input) REAL array, dimension (LDA, M)
|
|
1436
|
+
* On entry, A contains an upper quasi triangular matrix.
|
|
1437
|
+
*
|
|
1438
|
+
* LDA (input) INTEGER
|
|
1439
|
+
* The leading dimension of the matrix A. LDA >= max(1, M).
|
|
1440
|
+
*
|
|
1441
|
+
* B (input) REAL array, dimension (LDB, N)
|
|
1442
|
+
* On entry, B contains an upper quasi triangular matrix.
|
|
1443
|
+
*
|
|
1444
|
+
* LDB (input) INTEGER
|
|
1445
|
+
* The leading dimension of the matrix B. LDB >= max(1, N).
|
|
1446
|
+
*
|
|
1447
|
+
* C (input/output) REAL array, dimension (LDC, N)
|
|
1448
|
+
* On entry, C contains the right-hand-side of the first matrix
|
|
1449
|
+
* equation in (1).
|
|
1450
|
+
* On exit, if IJOB = 0, C has been overwritten by the
|
|
1451
|
+
* solution R.
|
|
1452
|
+
*
|
|
1453
|
+
* LDC (input) INTEGER
|
|
1454
|
+
* The leading dimension of the matrix C. LDC >= max(1, M).
|
|
1455
|
+
*
|
|
1456
|
+
* D (input) REAL array, dimension (LDD, M)
|
|
1457
|
+
* On entry, D contains an upper triangular matrix.
|
|
1458
|
+
*
|
|
1459
|
+
* LDD (input) INTEGER
|
|
1460
|
+
* The leading dimension of the matrix D. LDD >= max(1, M).
|
|
1461
|
+
*
|
|
1462
|
+
* E (input) REAL array, dimension (LDE, N)
|
|
1463
|
+
* On entry, E contains an upper triangular matrix.
|
|
1464
|
+
*
|
|
1465
|
+
* LDE (input) INTEGER
|
|
1466
|
+
* The leading dimension of the matrix E. LDE >= max(1, N).
|
|
1467
|
+
*
|
|
1468
|
+
* F (input/output) REAL array, dimension (LDF, N)
|
|
1469
|
+
* On entry, F contains the right-hand-side of the second matrix
|
|
1470
|
+
* equation in (1).
|
|
1471
|
+
* On exit, if IJOB = 0, F has been overwritten by the
|
|
1472
|
+
* solution L.
|
|
1473
|
+
*
|
|
1474
|
+
* LDF (input) INTEGER
|
|
1475
|
+
* The leading dimension of the matrix F. LDF >= max(1, M).
|
|
1476
|
+
*
|
|
1477
|
+
* SCALE (output) REAL
|
|
1478
|
+
* On exit, 0 <= SCALE <= 1. If 0 < SCALE < 1, the solutions
|
|
1479
|
+
* R and L (C and F on entry) will hold the solutions to a
|
|
1480
|
+
* slightly perturbed system but the input matrices A, B, D and
|
|
1481
|
+
* E have not been changed. If SCALE = 0, R and L will hold the
|
|
1482
|
+
* solutions to the homogeneous system with C = F = 0. Normally,
|
|
1483
|
+
* SCALE = 1.
|
|
1484
|
+
*
|
|
1485
|
+
* RDSUM (input/output) REAL
|
|
1486
|
+
* On entry, the sum of squares of computed contributions to
|
|
1487
|
+
* the Dif-estimate under computation by STGSYL, where the
|
|
1488
|
+
* scaling factor RDSCAL (see below) has been factored out.
|
|
1489
|
+
* On exit, the corresponding sum of squares updated with the
|
|
1490
|
+
* contributions from the current sub-system.
|
|
1491
|
+
* If TRANS = 'T' RDSUM is not touched.
|
|
1492
|
+
* NOTE: RDSUM only makes sense when STGSY2 is called by STGSYL.
|
|
1493
|
+
*
|
|
1494
|
+
* RDSCAL (input/output) REAL
|
|
1495
|
+
* On entry, scaling factor used to prevent overflow in RDSUM.
|
|
1496
|
+
* On exit, RDSCAL is updated w.r.t. the current contributions
|
|
1497
|
+
* in RDSUM.
|
|
1498
|
+
* If TRANS = 'T', RDSCAL is not touched.
|
|
1499
|
+
* NOTE: RDSCAL only makes sense when STGSY2 is called by
|
|
1500
|
+
* STGSYL.
|
|
1501
|
+
*
|
|
1502
|
+
* IWORK (workspace) INTEGER array, dimension (M+N+2)
|
|
1503
|
+
*
|
|
1504
|
+
* PQ (output) INTEGER
|
|
1505
|
+
* On exit, the number of subsystems (of size 2-by-2, 4-by-4 and
|
|
1506
|
+
* 8-by-8) solved by this routine.
|
|
1507
|
+
*
|
|
1508
|
+
* INFO (output) INTEGER
|
|
1509
|
+
* On exit, if INFO is set to
|
|
1510
|
+
* =0: Successful exit
|
|
1511
|
+
* <0: If INFO = -i, the i-th argument had an illegal value.
|
|
1512
|
+
* >0: The matrix pairs (A, D) and (B, E) have common or very
|
|
1513
|
+
* close eigenvalues.
|
|
1514
|
+
*
|
|
1515
|
+
|
|
1516
|
+
* Further Details
|
|
1517
|
+
* ===============
|
|
1518
|
+
*
|
|
1519
|
+
* Based on contributions by
|
|
1520
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
1521
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
1522
|
+
*
|
|
1523
|
+
* =====================================================================
|
|
1524
|
+
* Replaced various illegal calls to SCOPY by calls to SLASET.
|
|
1525
|
+
* Sven Hammarling, 27/5/02.
|
|
1526
|
+
*
|
|
1527
|
+
|
|
1528
|
+
|
|
1529
|
+
</PRE>
|
|
1530
|
+
<A HREF="#top">go to the page top</A>
|
|
1531
|
+
|
|
1532
|
+
<A NAME="stgsyl"></A>
|
|
1533
|
+
<H2>stgsyl</H2>
|
|
1534
|
+
<PRE>
|
|
1535
|
+
USAGE:
|
|
1536
|
+
scale, dif, work, info, c, f = NumRu::Lapack.stgsyl( trans, ijob, a, b, c, d, e, f, [:lwork => lwork, :usage => usage, :help => help])
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
FORTRAN MANUAL
|
|
1540
|
+
SUBROUTINE STGSYL( TRANS, IJOB, M, N, A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, F, LDF, SCALE, DIF, WORK, LWORK, IWORK, INFO )
|
|
1541
|
+
|
|
1542
|
+
* Purpose
|
|
1543
|
+
* =======
|
|
1544
|
+
*
|
|
1545
|
+
* STGSYL solves the generalized Sylvester equation:
|
|
1546
|
+
*
|
|
1547
|
+
* A * R - L * B = scale * C (1)
|
|
1548
|
+
* D * R - L * E = scale * F
|
|
1549
|
+
*
|
|
1550
|
+
* where R and L are unknown m-by-n matrices, (A, D), (B, E) and
|
|
1551
|
+
* (C, F) are given matrix pairs of size m-by-m, n-by-n and m-by-n,
|
|
1552
|
+
* respectively, with real entries. (A, D) and (B, E) must be in
|
|
1553
|
+
* generalized (real) Schur canonical form, i.e. A, B are upper quasi
|
|
1554
|
+
* triangular and D, E are upper triangular.
|
|
1555
|
+
*
|
|
1556
|
+
* The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output
|
|
1557
|
+
* scaling factor chosen to avoid overflow.
|
|
1558
|
+
*
|
|
1559
|
+
* In matrix notation (1) is equivalent to solve Zx = scale b, where
|
|
1560
|
+
* Z is defined as
|
|
1561
|
+
*
|
|
1562
|
+
* Z = [ kron(In, A) -kron(B', Im) ] (2)
|
|
1563
|
+
* [ kron(In, D) -kron(E', Im) ].
|
|
1564
|
+
*
|
|
1565
|
+
* Here Ik is the identity matrix of size k and X' is the transpose of
|
|
1566
|
+
* X. kron(X, Y) is the Kronecker product between the matrices X and Y.
|
|
1567
|
+
*
|
|
1568
|
+
* If TRANS = 'T', STGSYL solves the transposed system Z'*y = scale*b,
|
|
1569
|
+
* which is equivalent to solve for R and L in
|
|
1570
|
+
*
|
|
1571
|
+
* A' * R + D' * L = scale * C (3)
|
|
1572
|
+
* R * B' + L * E' = scale * (-F)
|
|
1573
|
+
*
|
|
1574
|
+
* This case (TRANS = 'T') is used to compute an one-norm-based estimate
|
|
1575
|
+
* of Dif[(A,D), (B,E)], the separation between the matrix pairs (A,D)
|
|
1576
|
+
* and (B,E), using SLACON.
|
|
1577
|
+
*
|
|
1578
|
+
* If IJOB >= 1, STGSYL computes a Frobenius norm-based estimate
|
|
1579
|
+
* of Dif[(A,D),(B,E)]. That is, the reciprocal of a lower bound on the
|
|
1580
|
+
* reciprocal of the smallest singular value of Z. See [1-2] for more
|
|
1581
|
+
* information.
|
|
1582
|
+
*
|
|
1583
|
+
* This is a level 3 BLAS algorithm.
|
|
1584
|
+
*
|
|
1585
|
+
|
|
1586
|
+
* Arguments
|
|
1587
|
+
* =========
|
|
1588
|
+
*
|
|
1589
|
+
* TRANS (input) CHARACTER*1
|
|
1590
|
+
* = 'N', solve the generalized Sylvester equation (1).
|
|
1591
|
+
* = 'T', solve the 'transposed' system (3).
|
|
1592
|
+
*
|
|
1593
|
+
* IJOB (input) INTEGER
|
|
1594
|
+
* Specifies what kind of functionality to be performed.
|
|
1595
|
+
* =0: solve (1) only.
|
|
1596
|
+
* =1: The functionality of 0 and 3.
|
|
1597
|
+
* =2: The functionality of 0 and 4.
|
|
1598
|
+
* =3: Only an estimate of Dif[(A,D), (B,E)] is computed.
|
|
1599
|
+
* (look ahead strategy IJOB = 1 is used).
|
|
1600
|
+
* =4: Only an estimate of Dif[(A,D), (B,E)] is computed.
|
|
1601
|
+
* ( SGECON on sub-systems is used ).
|
|
1602
|
+
* Not referenced if TRANS = 'T'.
|
|
1603
|
+
*
|
|
1604
|
+
* M (input) INTEGER
|
|
1605
|
+
* The order of the matrices A and D, and the row dimension of
|
|
1606
|
+
* the matrices C, F, R and L.
|
|
1607
|
+
*
|
|
1608
|
+
* N (input) INTEGER
|
|
1609
|
+
* The order of the matrices B and E, and the column dimension
|
|
1610
|
+
* of the matrices C, F, R and L.
|
|
1611
|
+
*
|
|
1612
|
+
* A (input) REAL array, dimension (LDA, M)
|
|
1613
|
+
* The upper quasi triangular matrix A.
|
|
1614
|
+
*
|
|
1615
|
+
* LDA (input) INTEGER
|
|
1616
|
+
* The leading dimension of the array A. LDA >= max(1, M).
|
|
1617
|
+
*
|
|
1618
|
+
* B (input) REAL array, dimension (LDB, N)
|
|
1619
|
+
* The upper quasi triangular matrix B.
|
|
1620
|
+
*
|
|
1621
|
+
* LDB (input) INTEGER
|
|
1622
|
+
* The leading dimension of the array B. LDB >= max(1, N).
|
|
1623
|
+
*
|
|
1624
|
+
* C (input/output) REAL array, dimension (LDC, N)
|
|
1625
|
+
* On entry, C contains the right-hand-side of the first matrix
|
|
1626
|
+
* equation in (1) or (3).
|
|
1627
|
+
* On exit, if IJOB = 0, 1 or 2, C has been overwritten by
|
|
1628
|
+
* the solution R. If IJOB = 3 or 4 and TRANS = 'N', C holds R,
|
|
1629
|
+
* the solution achieved during the computation of the
|
|
1630
|
+
* Dif-estimate.
|
|
1631
|
+
*
|
|
1632
|
+
* LDC (input) INTEGER
|
|
1633
|
+
* The leading dimension of the array C. LDC >= max(1, M).
|
|
1634
|
+
*
|
|
1635
|
+
* D (input) REAL array, dimension (LDD, M)
|
|
1636
|
+
* The upper triangular matrix D.
|
|
1637
|
+
*
|
|
1638
|
+
* LDD (input) INTEGER
|
|
1639
|
+
* The leading dimension of the array D. LDD >= max(1, M).
|
|
1640
|
+
*
|
|
1641
|
+
* E (input) REAL array, dimension (LDE, N)
|
|
1642
|
+
* The upper triangular matrix E.
|
|
1643
|
+
*
|
|
1644
|
+
* LDE (input) INTEGER
|
|
1645
|
+
* The leading dimension of the array E. LDE >= max(1, N).
|
|
1646
|
+
*
|
|
1647
|
+
* F (input/output) REAL array, dimension (LDF, N)
|
|
1648
|
+
* On entry, F contains the right-hand-side of the second matrix
|
|
1649
|
+
* equation in (1) or (3).
|
|
1650
|
+
* On exit, if IJOB = 0, 1 or 2, F has been overwritten by
|
|
1651
|
+
* the solution L. If IJOB = 3 or 4 and TRANS = 'N', F holds L,
|
|
1652
|
+
* the solution achieved during the computation of the
|
|
1653
|
+
* Dif-estimate.
|
|
1654
|
+
*
|
|
1655
|
+
* LDF (input) INTEGER
|
|
1656
|
+
* The leading dimension of the array F. LDF >= max(1, M).
|
|
1657
|
+
*
|
|
1658
|
+
* DIF (output) REAL
|
|
1659
|
+
* On exit DIF is the reciprocal of a lower bound of the
|
|
1660
|
+
* reciprocal of the Dif-function, i.e. DIF is an upper bound of
|
|
1661
|
+
* Dif[(A,D), (B,E)] = sigma_min(Z), where Z as in (2).
|
|
1662
|
+
* IF IJOB = 0 or TRANS = 'T', DIF is not touched.
|
|
1663
|
+
*
|
|
1664
|
+
* SCALE (output) REAL
|
|
1665
|
+
* On exit SCALE is the scaling factor in (1) or (3).
|
|
1666
|
+
* If 0 < SCALE < 1, C and F hold the solutions R and L, resp.,
|
|
1667
|
+
* to a slightly perturbed system but the input matrices A, B, D
|
|
1668
|
+
* and E have not been changed. If SCALE = 0, C and F hold the
|
|
1669
|
+
* solutions R and L, respectively, to the homogeneous system
|
|
1670
|
+
* with C = F = 0. Normally, SCALE = 1.
|
|
1671
|
+
*
|
|
1672
|
+
* WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
|
|
1673
|
+
* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
|
|
1674
|
+
*
|
|
1675
|
+
* LWORK (input) INTEGER
|
|
1676
|
+
* The dimension of the array WORK. LWORK > = 1.
|
|
1677
|
+
* If IJOB = 1 or 2 and TRANS = 'N', LWORK >= max(1,2*M*N).
|
|
1678
|
+
*
|
|
1679
|
+
* If LWORK = -1, then a workspace query is assumed; the routine
|
|
1680
|
+
* only calculates the optimal size of the WORK array, returns
|
|
1681
|
+
* this value as the first entry of the WORK array, and no error
|
|
1682
|
+
* message related to LWORK is issued by XERBLA.
|
|
1683
|
+
*
|
|
1684
|
+
* IWORK (workspace) INTEGER array, dimension (M+N+6)
|
|
1685
|
+
*
|
|
1686
|
+
* INFO (output) INTEGER
|
|
1687
|
+
* =0: successful exit
|
|
1688
|
+
* <0: If INFO = -i, the i-th argument had an illegal value.
|
|
1689
|
+
* >0: (A, D) and (B, E) have common or close eigenvalues.
|
|
1690
|
+
*
|
|
1691
|
+
|
|
1692
|
+
* Further Details
|
|
1693
|
+
* ===============
|
|
1694
|
+
*
|
|
1695
|
+
* Based on contributions by
|
|
1696
|
+
* Bo Kagstrom and Peter Poromaa, Department of Computing Science,
|
|
1697
|
+
* Umea University, S-901 87 Umea, Sweden.
|
|
1698
|
+
*
|
|
1699
|
+
* [1] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
|
|
1700
|
+
* for Solving the Generalized Sylvester Equation and Estimating the
|
|
1701
|
+
* Separation between Regular Matrix Pairs, Report UMINF - 93.23,
|
|
1702
|
+
* Department of Computing Science, Umea University, S-901 87 Umea,
|
|
1703
|
+
* Sweden, December 1993, Revised April 1994, Also as LAPACK Working
|
|
1704
|
+
* Note 75. To appear in ACM Trans. on Math. Software, Vol 22,
|
|
1705
|
+
* No 1, 1996.
|
|
1706
|
+
*
|
|
1707
|
+
* [2] B. Kagstrom, A Perturbation Analysis of the Generalized Sylvester
|
|
1708
|
+
* Equation (AR - LB, DR - LE ) = (C, F), SIAM J. Matrix Anal.
|
|
1709
|
+
* Appl., 15(4):1045-1060, 1994
|
|
1710
|
+
*
|
|
1711
|
+
* [3] B. Kagstrom and L. Westin, Generalized Schur Methods with
|
|
1712
|
+
* Condition Estimators for Solving the Generalized Sylvester
|
|
1713
|
+
* Equation, IEEE Transactions on Automatic Control, Vol. 34, No. 7,
|
|
1714
|
+
* July 1989, pp 745-751.
|
|
1715
|
+
*
|
|
1716
|
+
* =====================================================================
|
|
1717
|
+
* Replaced various illegal calls to SCOPY by calls to SLASET.
|
|
1718
|
+
* Sven Hammarling, 1/5/02.
|
|
1719
|
+
*
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
</PRE>
|
|
1723
|
+
<A HREF="#top">go to the page top</A>
|
|
1724
|
+
|
|
1725
|
+
<HR />
|
|
1726
|
+
<A HREF="s.html">back to matrix types</A><BR>
|
|
1727
|
+
<A HREF="s.html">back to data types</A>
|
|
1728
|
+
</BODY>
|
|
1729
|
+
</HTML>
|