ruby-lapack 1.7 → 1.7.1
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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/ext/cbbcsd.c +283 -0
- data/ext/cbdsqr.c +182 -0
- data/ext/cgbbrd.c +157 -0
- data/ext/cgbcon.c +98 -0
- data/ext/cgbequ.c +98 -0
- data/ext/cgbequb.c +96 -0
- data/ext/cgbrfs.c +161 -0
- data/ext/cgbrfsx.c +249 -0
- data/ext/cgbsv.c +115 -0
- data/ext/cgbsvx.c +286 -0
- data/ext/cgbsvxx.c +289 -0
- data/ext/cgbtf2.c +93 -0
- data/ext/cgbtrf.c +93 -0
- data/ext/cgbtrs.c +111 -0
- data/ext/cgebak.c +101 -0
- data/ext/cgebal.c +91 -0
- data/ext/cgebd2.c +112 -0
- data/ext/cgebrd.c +127 -0
- data/ext/cgecon.c +78 -0
- data/ext/cgeequ.c +88 -0
- data/ext/cgeequb.c +88 -0
- data/ext/cgees.c +142 -0
- data/ext/cgeesx.c +152 -0
- data/ext/cgeev.c +132 -0
- data/ext/cgeevx.c +173 -0
- data/ext/cgegs.c +166 -0
- data/ext/cgegv.c +171 -0
- data/ext/cgehd2.c +92 -0
- data/ext/cgehrd.c +107 -0
- data/ext/cgelq2.c +86 -0
- data/ext/cgelqf.c +103 -0
- data/ext/cgels.c +137 -0
- data/ext/cgelsd.c +154 -0
- data/ext/cgelss.c +151 -0
- data/ext/cgelsx.c +139 -0
- data/ext/cgelsy.c +166 -0
- data/ext/cgeql2.c +88 -0
- data/ext/cgeqlf.c +103 -0
- data/ext/cgeqp3.c +129 -0
- data/ext/cgeqpf.c +114 -0
- data/ext/cgeqr2.c +88 -0
- data/ext/cgeqr2p.c +88 -0
- data/ext/cgeqrf.c +103 -0
- data/ext/cgeqrfp.c +103 -0
- data/ext/cgerfs.c +153 -0
- data/ext/cgerfsx.c +219 -0
- data/ext/cgerq2.c +86 -0
- data/ext/cgerqf.c +103 -0
- data/ext/cgesc2.c +108 -0
- data/ext/cgesdd.c +135 -0
- data/ext/cgesv.c +107 -0
- data/ext/cgesvd.c +146 -0
- data/ext/cgesvx.c +278 -0
- data/ext/cgesvxx.c +281 -0
- data/ext/cgetc2.c +89 -0
- data/ext/cgetf2.c +85 -0
- data/ext/cgetrf.c +85 -0
- data/ext/cgetri.c +103 -0
- data/ext/cgetrs.c +103 -0
- data/ext/cggbak.c +113 -0
- data/ext/cggbal.c +128 -0
- data/ext/cgges.c +192 -0
- data/ext/cggesx.c +230 -0
- data/ext/cggev.c +171 -0
- data/ext/cggevx.c +226 -0
- data/ext/cggglm.c +156 -0
- data/ext/cgghrd.c +167 -0
- data/ext/cgglse.c +171 -0
- data/ext/cggqrf.c +137 -0
- data/ext/cggrqf.c +141 -0
- data/ext/cggsvd.c +184 -0
- data/ext/cggsvp.c +174 -0
- data/ext/cgtcon.c +121 -0
- data/ext/cgtrfs.c +209 -0
- data/ext/cgtsv.c +142 -0
- data/ext/cgtsvx.c +256 -0
- data/ext/cgttrf.c +132 -0
- data/ext/cgttrs.c +137 -0
- data/ext/cgtts2.c +134 -0
- data/ext/chbev.c +110 -0
- data/ext/chbevd.c +158 -0
- data/ext/chbevx.c +160 -0
- data/ext/chbgst.c +120 -0
- data/ext/chbgv.c +140 -0
- data/ext/chbgvd.c +188 -0
- data/ext/chbgvx.c +189 -0
- data/ext/chbtrd.c +130 -0
- data/ext/checon.c +87 -0
- data/ext/cheequb.c +82 -0
- data/ext/cheev.c +110 -0
- data/ext/cheevd.c +143 -0
- data/ext/cheevr.c +190 -0
- data/ext/cheevx.c +160 -0
- data/ext/chegs2.c +95 -0
- data/ext/chegst.c +95 -0
- data/ext/chegv.c +140 -0
- data/ext/chegvd.c +173 -0
- data/ext/chegvx.c +190 -0
- data/ext/cherfs.c +153 -0
- data/ext/cherfsx.c +218 -0
- data/ext/chesv.c +123 -0
- data/ext/chesvx.c +183 -0
- data/ext/chesvxx.c +258 -0
- data/ext/chetd2.c +101 -0
- data/ext/chetf2.c +85 -0
- data/ext/chetrd.c +113 -0
- data/ext/chetrf.c +97 -0
- data/ext/chetri.c +92 -0
- data/ext/chetrs.c +103 -0
- data/ext/chetrs2.c +106 -0
- data/ext/chfrk.c +109 -0
- data/ext/chgeqz.c +208 -0
- data/ext/chla_transtype.c +51 -0
- data/ext/chpcon.c +85 -0
- data/ext/chpev.c +105 -0
- data/ext/chpevd.c +153 -0
- data/ext/chpevx.c +144 -0
- data/ext/chpgst.c +94 -0
- data/ext/chpgv.c +132 -0
- data/ext/chpgvd.c +170 -0
- data/ext/chpgvx.c +170 -0
- data/ext/chprfs.c +149 -0
- data/ext/chpsv.c +110 -0
- data/ext/chpsvx.c +163 -0
- data/ext/chptrd.c +100 -0
- data/ext/chptrf.c +84 -0
- data/ext/chptri.c +89 -0
- data/ext/chptrs.c +101 -0
- data/ext/chsein.c +185 -0
- data/ext/chseqr.c +145 -0
- data/ext/cla_gbamv.c +127 -0
- data/ext/cla_gbrcond_c.c +142 -0
- data/ext/cla_gbrcond_x.c +138 -0
- data/ext/cla_gbrfsx_extended.c +295 -0
- data/ext/cla_gbrpvgrw.c +87 -0
- data/ext/cla_geamv.c +117 -0
- data/ext/cla_gercond_c.c +134 -0
- data/ext/cla_gercond_x.c +130 -0
- data/ext/cla_gerfsx_extended.c +281 -0
- data/ext/cla_heamv.c +116 -0
- data/ext/cla_hercond_c.c +134 -0
- data/ext/cla_hercond_x.c +130 -0
- data/ext/cla_herfsx_extended.c +283 -0
- data/ext/cla_herpvgrw.c +107 -0
- data/ext/cla_lin_berr.c +84 -0
- data/ext/cla_porcond_c.c +122 -0
- data/ext/cla_porcond_x.c +118 -0
- data/ext/cla_porfsx_extended.c +271 -0
- data/ext/cla_porpvgrw.c +95 -0
- data/ext/cla_rpvgrw.c +79 -0
- data/ext/cla_syamv.c +115 -0
- data/ext/cla_syrcond_c.c +134 -0
- data/ext/cla_syrcond_x.c +130 -0
- data/ext/cla_syrfsx_extended.c +283 -0
- data/ext/cla_syrpvgrw.c +107 -0
- data/ext/cla_wwaddw.c +102 -0
- data/ext/clabrd.c +132 -0
- data/ext/clacgv.c +75 -0
- data/ext/clacn2.c +103 -0
- data/ext/clacon.c +80 -0
- data/ext/clacp2.c +77 -0
- data/ext/clacpy.c +77 -0
- data/ext/clacrm.c +90 -0
- data/ext/clacrt.c +108 -0
- data/ext/cladiv.c +57 -0
- data/ext/claed0.c +134 -0
- data/ext/claed7.c +247 -0
- data/ext/claed8.c +198 -0
- data/ext/claein.c +113 -0
- data/ext/claesy.c +74 -0
- data/ext/claev2.c +71 -0
- data/ext/clag2z.c +76 -0
- data/ext/clags2.c +92 -0
- data/ext/clagtm.c +132 -0
- data/ext/clahef.c +97 -0
- data/ext/clahqr.c +135 -0
- data/ext/clahr2.c +112 -0
- data/ext/clahrd.c +112 -0
- data/ext/claic1.c +90 -0
- data/ext/clals0.c +201 -0
- data/ext/clalsa.c +270 -0
- data/ext/clalsd.c +145 -0
- data/ext/clangb.c +76 -0
- data/ext/clange.c +74 -0
- data/ext/clangt.c +87 -0
- data/ext/clanhb.c +78 -0
- data/ext/clanhe.c +72 -0
- data/ext/clanhf.c +80 -0
- data/ext/clanhp.c +74 -0
- data/ext/clanhs.c +70 -0
- data/ext/clanht.c +75 -0
- data/ext/clansb.c +78 -0
- data/ext/clansp.c +74 -0
- data/ext/clansy.c +72 -0
- data/ext/clantb.c +80 -0
- data/ext/clantp.c +80 -0
- data/ext/clantr.c +82 -0
- data/ext/clapll.c +105 -0
- data/ext/clapmr.c +97 -0
- data/ext/clapmt.c +101 -0
- data/ext/claqgb.c +117 -0
- data/ext/claqge.c +109 -0
- data/ext/claqhb.c +97 -0
- data/ext/claqhe.c +97 -0
- data/ext/claqhp.c +94 -0
- data/ext/claqp2.c +158 -0
- data/ext/claqps.c +208 -0
- data/ext/claqr0.c +145 -0
- data/ext/claqr1.c +76 -0
- data/ext/claqr2.c +174 -0
- data/ext/claqr3.c +174 -0
- data/ext/claqr4.c +145 -0
- data/ext/claqr5.c +179 -0
- data/ext/claqsb.c +101 -0
- data/ext/claqsp.c +94 -0
- data/ext/claqsy.c +97 -0
- data/ext/clar1v.c +173 -0
- data/ext/clar2v.c +149 -0
- data/ext/clarcm.c +86 -0
- data/ext/clarf.c +102 -0
- data/ext/clarfb.c +123 -0
- data/ext/clarfg.c +84 -0
- data/ext/clarfgp.c +84 -0
- data/ext/clarft.c +105 -0
- data/ext/clarfx.c +94 -0
- data/ext/clargv.c +114 -0
- data/ext/clarnv.c +83 -0
- data/ext/clarrv.c +271 -0
- data/ext/clarscl2.c +82 -0
- data/ext/clartg.c +63 -0
- data/ext/clartv.c +130 -0
- data/ext/clarz.c +106 -0
- data/ext/clarzb.c +127 -0
- data/ext/clarzt.c +105 -0
- data/ext/clascl.c +97 -0
- data/ext/clascl2.c +82 -0
- data/ext/claset.c +88 -0
- data/ext/clasr.c +110 -0
- data/ext/classq.c +70 -0
- data/ext/claswp.c +94 -0
- data/ext/clasyf.c +97 -0
- data/ext/clatbs.c +130 -0
- data/ext/clatdf.c +119 -0
- data/ext/clatps.c +124 -0
- data/ext/clatrd.c +105 -0
- data/ext/clatrs.c +126 -0
- data/ext/clatrz.c +87 -0
- data/ext/clatzm.c +132 -0
- data/ext/clauu2.c +77 -0
- data/ext/clauum.c +77 -0
- data/ext/cpbcon.c +82 -0
- data/ext/cpbequ.c +83 -0
- data/ext/cpbrfs.c +145 -0
- data/ext/cpbstf.c +81 -0
- data/ext/cpbsv.c +107 -0
- data/ext/cpbsvx.c +201 -0
- data/ext/cpbtf2.c +81 -0
- data/ext/cpbtrf.c +81 -0
- data/ext/cpbtrs.c +95 -0
- data/ext/cpftrf.c +82 -0
- data/ext/cpftri.c +82 -0
- data/ext/cpftrs.c +97 -0
- data/ext/cpocon.c +78 -0
- data/ext/cpoequ.c +75 -0
- data/ext/cpoequb.c +75 -0
- data/ext/cporfs.c +141 -0
- data/ext/cporfsx.c +206 -0
- data/ext/cposv.c +103 -0
- data/ext/cposvx.c +197 -0
- data/ext/cposvxx.c +235 -0
- data/ext/cpotf2.c +77 -0
- data/ext/cpotrf.c +77 -0
- data/ext/cpotri.c +77 -0
- data/ext/cpotrs.c +91 -0
- data/ext/cppcon.c +78 -0
- data/ext/cppequ.c +79 -0
- data/ext/cpprfs.c +139 -0
- data/ext/cppsv.c +104 -0
- data/ext/cppsvx.c +191 -0
- data/ext/cpptrf.c +78 -0
- data/ext/cpptri.c +78 -0
- data/ext/cpptrs.c +93 -0
- data/ext/cpstf2.c +95 -0
- data/ext/cpstrf.c +95 -0
- data/ext/cptcon.c +81 -0
- data/ext/cpteqr.c +126 -0
- data/ext/cptrfs.c +161 -0
- data/ext/cptsv.c +119 -0
- data/ext/cptsvx.c +171 -0
- data/ext/cpttrf.c +93 -0
- data/ext/cpttrs.c +101 -0
- data/ext/cptts2.c +98 -0
- data/ext/crot.c +107 -0
- data/ext/cspcon.c +85 -0
- data/ext/cspmv.c +115 -0
- data/ext/cspr.c +96 -0
- data/ext/csprfs.c +149 -0
- data/ext/cspsv.c +110 -0
- data/ext/cspsvx.c +163 -0
- data/ext/csptrf.c +84 -0
- data/ext/csptri.c +89 -0
- data/ext/csptrs.c +101 -0
- data/ext/csrscl.c +79 -0
- data/ext/cstedc.c +177 -0
- data/ext/cstegr.c +188 -0
- data/ext/cstein.c +134 -0
- data/ext/cstemr.c +193 -0
- data/ext/csteqr.c +126 -0
- data/ext/csycon.c +87 -0
- data/ext/csyconv.c +84 -0
- data/ext/csyequb.c +82 -0
- data/ext/csymv.c +115 -0
- data/ext/csyr.c +95 -0
- data/ext/csyrfs.c +153 -0
- data/ext/csyrfsx.c +218 -0
- data/ext/csysv.c +129 -0
- data/ext/csysvx.c +183 -0
- data/ext/csysvxx.c +258 -0
- data/ext/csyswapr.c +82 -0
- data/ext/csytf2.c +85 -0
- data/ext/csytrf.c +97 -0
- data/ext/csytri.c +92 -0
- data/ext/csytri2.c +108 -0
- data/ext/csytri2x.c +96 -0
- data/ext/csytrs.c +103 -0
- data/ext/csytrs2.c +106 -0
- data/ext/ctbcon.c +86 -0
- data/ext/ctbrfs.c +127 -0
- data/ext/ctbtrs.c +103 -0
- data/ext/ctfsm.c +111 -0
- data/ext/ctftri.c +86 -0
- data/ext/ctfttp.c +79 -0
- data/ext/ctfttr.c +80 -0
- data/ext/ctgevc.c +156 -0
- data/ext/ctgex2.c +171 -0
- data/ext/ctgexc.c +172 -0
- data/ext/ctgsen.c +244 -0
- data/ext/ctgsja.c +227 -0
- data/ext/ctgsna.c +164 -0
- data/ext/ctgsy2.c +176 -0
- data/ext/ctgsyl.c +190 -0
- data/ext/ctpcon.c +82 -0
- data/ext/ctprfs.c +123 -0
- data/ext/ctptri.c +82 -0
- data/ext/ctptrs.c +101 -0
- data/ext/ctpttf.c +79 -0
- data/ext/ctpttr.c +76 -0
- data/ext/ctrcon.c +82 -0
- data/ext/ctrevc.c +154 -0
- data/ext/ctrexc.c +111 -0
- data/ext/ctrrfs.c +123 -0
- data/ext/ctrsen.c +154 -0
- data/ext/ctrsna.c +137 -0
- data/ext/ctrsyl.c +116 -0
- data/ext/ctrti2.c +81 -0
- data/ext/ctrtri.c +81 -0
- data/ext/ctrtrs.c +99 -0
- data/ext/ctrttf.c +77 -0
- data/ext/ctrttp.c +73 -0
- data/ext/ctzrqf.c +83 -0
- data/ext/ctzrzf.c +101 -0
- data/ext/cunbdb.c +232 -0
- data/ext/cuncsd.c +204 -0
- data/ext/cung2l.c +92 -0
- data/ext/cung2r.c +92 -0
- data/ext/cungbr.c +115 -0
- data/ext/cunghr.c +111 -0
- data/ext/cungl2.c +90 -0
- data/ext/cunglq.c +107 -0
- data/ext/cungql.c +107 -0
- data/ext/cungqr.c +107 -0
- data/ext/cungr2.c +90 -0
- data/ext/cungrq.c +107 -0
- data/ext/cungtr.c +107 -0
- data/ext/cunm2l.c +114 -0
- data/ext/cunm2r.c +114 -0
- data/ext/cunmbr.c +139 -0
- data/ext/cunmhr.c +133 -0
- data/ext/cunml2.c +110 -0
- data/ext/cunmlq.c +125 -0
- data/ext/cunmql.c +129 -0
- data/ext/cunmqr.c +129 -0
- data/ext/cunmr2.c +110 -0
- data/ext/cunmr3.c +114 -0
- data/ext/cunmrq.c +125 -0
- data/ext/cunmrz.c +129 -0
- data/ext/cunmtr.c +129 -0
- data/ext/cupgtr.c +91 -0
- data/ext/cupmtr.c +116 -0
- data/ext/dbbcsd.c +287 -0
- data/ext/dbdsdc.c +151 -0
- data/ext/dbdsqr.c +182 -0
- data/ext/ddisna.c +75 -0
- data/ext/dgbbrd.c +154 -0
- data/ext/dgbcon.c +98 -0
- data/ext/dgbequ.c +98 -0
- data/ext/dgbequb.c +96 -0
- data/ext/dgbrfs.c +161 -0
- data/ext/dgbrfsx.c +249 -0
- data/ext/dgbsv.c +115 -0
- data/ext/dgbsvx.c +286 -0
- data/ext/dgbsvxx.c +289 -0
- data/ext/dgbtf2.c +93 -0
- data/ext/dgbtrf.c +93 -0
- data/ext/dgbtrs.c +111 -0
- data/ext/dgebak.c +101 -0
- data/ext/dgebal.c +91 -0
- data/ext/dgebd2.c +112 -0
- data/ext/dgebrd.c +127 -0
- data/ext/dgecon.c +78 -0
- data/ext/dgeequ.c +88 -0
- data/ext/dgeequb.c +88 -0
- data/ext/dgees.c +148 -0
- data/ext/dgeesx.c +170 -0
- data/ext/dgeev.c +137 -0
- data/ext/dgeevx.c +181 -0
- data/ext/dgegs.c +171 -0
- data/ext/dgegv.c +171 -0
- data/ext/dgehd2.c +92 -0
- data/ext/dgehrd.c +107 -0
- data/ext/dgejsv.c +159 -0
- data/ext/dgelq2.c +86 -0
- data/ext/dgelqf.c +103 -0
- data/ext/dgels.c +137 -0
- data/ext/dgelsd.c +149 -0
- data/ext/dgelss.c +148 -0
- data/ext/dgelsx.c +136 -0
- data/ext/dgelsy.c +163 -0
- data/ext/dgeql2.c +88 -0
- data/ext/dgeqlf.c +103 -0
- data/ext/dgeqp3.c +126 -0
- data/ext/dgeqpf.c +111 -0
- data/ext/dgeqr2.c +88 -0
- data/ext/dgeqr2p.c +88 -0
- data/ext/dgeqrf.c +103 -0
- data/ext/dgeqrfp.c +103 -0
- data/ext/dgerfs.c +153 -0
- data/ext/dgerfsx.c +219 -0
- data/ext/dgerq2.c +86 -0
- data/ext/dgerqf.c +103 -0
- data/ext/dgesc2.c +108 -0
- data/ext/dgesdd.c +132 -0
- data/ext/dgesv.c +107 -0
- data/ext/dgesvd.c +143 -0
- data/ext/dgesvj.c +156 -0
- data/ext/dgesvx.c +278 -0
- data/ext/dgesvxx.c +281 -0
- data/ext/dgetc2.c +89 -0
- data/ext/dgetf2.c +85 -0
- data/ext/dgetrf.c +85 -0
- data/ext/dgetri.c +103 -0
- data/ext/dgetrs.c +103 -0
- data/ext/dggbak.c +113 -0
- data/ext/dggbal.c +128 -0
- data/ext/dgges.c +198 -0
- data/ext/dggesx.c +231 -0
- data/ext/dggev.c +171 -0
- data/ext/dggevx.c +229 -0
- data/ext/dggglm.c +156 -0
- data/ext/dgghrd.c +167 -0
- data/ext/dgglse.c +171 -0
- data/ext/dggqrf.c +137 -0
- data/ext/dggrqf.c +141 -0
- data/ext/dggsvd.c +181 -0
- data/ext/dggsvp.c +171 -0
- data/ext/dgsvj0.c +182 -0
- data/ext/dgsvj1.c +186 -0
- data/ext/dgtcon.c +124 -0
- data/ext/dgtrfs.c +209 -0
- data/ext/dgtsv.c +142 -0
- data/ext/dgtsvx.c +256 -0
- data/ext/dgttrf.c +132 -0
- data/ext/dgttrs.c +137 -0
- data/ext/dgtts2.c +134 -0
- data/ext/dhgeqz.c +213 -0
- data/ext/dhsein.c +205 -0
- data/ext/dhseqr.c +153 -0
- data/ext/disnan.c +51 -0
- data/ext/dla_gbamv.c +129 -0
- data/ext/dla_gbrcond.c +142 -0
- data/ext/dla_gbrfsx_extended.c +293 -0
- data/ext/dla_gbrpvgrw.c +87 -0
- data/ext/dla_geamv.c +119 -0
- data/ext/dla_gercond.c +134 -0
- data/ext/dla_gerfsx_extended.c +281 -0
- data/ext/dla_lin_berr.c +84 -0
- data/ext/dla_porcond.c +122 -0
- data/ext/dla_porfsx_extended.c +271 -0
- data/ext/dla_porpvgrw.c +95 -0
- data/ext/dla_rpvgrw.c +79 -0
- data/ext/dla_syamv.c +113 -0
- data/ext/dla_syrcond.c +134 -0
- data/ext/dla_syrfsx_extended.c +283 -0
- data/ext/dla_syrpvgrw.c +107 -0
- data/ext/dla_wwaddw.c +102 -0
- data/ext/dlabad.c +54 -0
- data/ext/dlabrd.c +132 -0
- data/ext/dlacn2.c +106 -0
- data/ext/dlacon.c +83 -0
- data/ext/dlacpy.c +77 -0
- data/ext/dladiv.c +66 -0
- data/ext/dlae2.c +62 -0
- data/ext/dlaebz.c +218 -0
- data/ext/dlaed0.c +127 -0
- data/ext/dlaed1.c +133 -0
- data/ext/dlaed2.c +189 -0
- data/ext/dlaed3.c +161 -0
- data/ext/dlaed4.c +90 -0
- data/ext/dlaed5.c +87 -0
- data/ext/dlaed6.c +90 -0
- data/ext/dlaed7.c +248 -0
- data/ext/dlaed8.c +206 -0
- data/ext/dlaed9.c +111 -0
- data/ext/dlaeda.c +160 -0
- data/ext/dlaein.c +143 -0
- data/ext/dlaev2.c +68 -0
- data/ext/dlaexc.c +118 -0
- data/ext/dlag2.c +91 -0
- data/ext/dlag2s.c +76 -0
- data/ext/dlags2.c +90 -0
- data/ext/dlagtf.c +140 -0
- data/ext/dlagtm.c +132 -0
- data/ext/dlagts.c +139 -0
- data/ext/dlagv2.c +132 -0
- data/ext/dlahqr.c +143 -0
- data/ext/dlahr2.c +112 -0
- data/ext/dlahrd.c +112 -0
- data/ext/dlaic1.c +89 -0
- data/ext/dlaln2.c +120 -0
- data/ext/dlals0.c +201 -0
- data/ext/dlalsa.c +270 -0
- data/ext/dlalsd.c +142 -0
- data/ext/dlamrg.c +80 -0
- data/ext/dlaneg.c +83 -0
- data/ext/dlangb.c +78 -0
- data/ext/dlange.c +74 -0
- data/ext/dlangt.c +87 -0
- data/ext/dlanhs.c +70 -0
- data/ext/dlansb.c +78 -0
- data/ext/dlansf.c +80 -0
- data/ext/dlansp.c +76 -0
- data/ext/dlanst.c +75 -0
- data/ext/dlansy.c +74 -0
- data/ext/dlantb.c +82 -0
- data/ext/dlantp.c +80 -0
- data/ext/dlantr.c +82 -0
- data/ext/dlanv2.c +82 -0
- data/ext/dlapll.c +105 -0
- data/ext/dlapmr.c +97 -0
- data/ext/dlapmt.c +101 -0
- data/ext/dlapy2.c +55 -0
- data/ext/dlapy3.c +59 -0
- data/ext/dlaqgb.c +117 -0
- data/ext/dlaqge.c +109 -0
- data/ext/dlaqp2.c +158 -0
- data/ext/dlaqps.c +208 -0
- data/ext/dlaqr0.c +153 -0
- data/ext/dlaqr1.c +82 -0
- data/ext/dlaqr2.c +182 -0
- data/ext/dlaqr3.c +182 -0
- data/ext/dlaqr4.c +153 -0
- data/ext/dlaqr5.c +200 -0
- data/ext/dlaqsb.c +101 -0
- data/ext/dlaqsp.c +94 -0
- data/ext/dlaqsy.c +97 -0
- data/ext/dlaqtr.c +114 -0
- data/ext/dlar1v.c +173 -0
- data/ext/dlar2v.c +149 -0
- data/ext/dlarf.c +101 -0
- data/ext/dlarfb.c +123 -0
- data/ext/dlarfg.c +83 -0
- data/ext/dlarfgp.c +83 -0
- data/ext/dlarft.c +105 -0
- data/ext/dlarfx.c +93 -0
- data/ext/dlargv.c +114 -0
- data/ext/dlarnv.c +83 -0
- data/ext/dlarra.c +124 -0
- data/ext/dlarrb.c +178 -0
- data/ext/dlarrc.c +96 -0
- data/ext/dlarrd.c +190 -0
- data/ext/dlarre.c +221 -0
- data/ext/dlarrf.c +176 -0
- data/ext/dlarrj.c +147 -0
- data/ext/dlarrk.c +97 -0
- data/ext/dlarrr.c +82 -0
- data/ext/dlarrv.c +271 -0
- data/ext/dlarscl2.c +82 -0
- data/ext/dlartg.c +61 -0
- data/ext/dlartgp.c +61 -0
- data/ext/dlartgs.c +62 -0
- data/ext/dlartv.c +130 -0
- data/ext/dlaruv.c +79 -0
- data/ext/dlarz.c +105 -0
- data/ext/dlarzb.c +127 -0
- data/ext/dlarzt.c +105 -0
- data/ext/dlas2.c +62 -0
- data/ext/dlascl.c +97 -0
- data/ext/dlascl2.c +82 -0
- data/ext/dlasd0.c +120 -0
- data/ext/dlasd1.c +162 -0
- data/ext/dlasd2.c +228 -0
- data/ext/dlasd3.c +202 -0
- data/ext/dlasd4.c +93 -0
- data/ext/dlasd5.c +90 -0
- data/ext/dlasd6.c +236 -0
- data/ext/dlasd7.c +225 -0
- data/ext/dlasd8.c +173 -0
- data/ext/dlasda.c +221 -0
- data/ext/dlasdq.c +186 -0
- data/ext/dlasdt.c +82 -0
- data/ext/dlaset.c +86 -0
- data/ext/dlasq1.c +96 -0
- data/ext/dlasq2.c +74 -0
- data/ext/dlasq3.c +138 -0
- data/ext/dlasq4.c +107 -0
- data/ext/dlasq5.c +94 -0
- data/ext/dlasq6.c +86 -0
- data/ext/dlasr.c +110 -0
- data/ext/dlasrt.c +74 -0
- data/ext/dlassq.c +70 -0
- data/ext/dlasv2.c +74 -0
- data/ext/dlaswp.c +94 -0
- data/ext/dlasy2.c +126 -0
- data/ext/dlasyf.c +97 -0
- data/ext/dlat2s.c +76 -0
- data/ext/dlatbs.c +130 -0
- data/ext/dlatdf.c +119 -0
- data/ext/dlatps.c +124 -0
- data/ext/dlatrd.c +105 -0
- data/ext/dlatrs.c +126 -0
- data/ext/dlatrz.c +87 -0
- data/ext/dlatzm.c +131 -0
- data/ext/dlauu2.c +77 -0
- data/ext/dlauum.c +77 -0
- data/ext/dopgtr.c +91 -0
- data/ext/dopmtr.c +116 -0
- data/ext/dorbdb.c +232 -0
- data/ext/dorcsd.c +197 -0
- data/ext/dorg2l.c +92 -0
- data/ext/dorg2r.c +92 -0
- data/ext/dorgbr.c +115 -0
- data/ext/dorghr.c +111 -0
- data/ext/dorgl2.c +90 -0
- data/ext/dorglq.c +107 -0
- data/ext/dorgql.c +107 -0
- data/ext/dorgqr.c +107 -0
- data/ext/dorgr2.c +90 -0
- data/ext/dorgrq.c +107 -0
- data/ext/dorgtr.c +107 -0
- data/ext/dorm2l.c +114 -0
- data/ext/dorm2r.c +114 -0
- data/ext/dormbr.c +139 -0
- data/ext/dormhr.c +133 -0
- data/ext/dorml2.c +110 -0
- data/ext/dormlq.c +125 -0
- data/ext/dormql.c +129 -0
- data/ext/dormqr.c +129 -0
- data/ext/dormr2.c +110 -0
- data/ext/dormr3.c +114 -0
- data/ext/dormrq.c +125 -0
- data/ext/dormrz.c +129 -0
- data/ext/dormtr.c +129 -0
- data/ext/dpbcon.c +82 -0
- data/ext/dpbequ.c +83 -0
- data/ext/dpbrfs.c +145 -0
- data/ext/dpbstf.c +81 -0
- data/ext/dpbsv.c +107 -0
- data/ext/dpbsvx.c +201 -0
- data/ext/dpbtf2.c +81 -0
- data/ext/dpbtrf.c +81 -0
- data/ext/dpbtrs.c +95 -0
- data/ext/dpftrf.c +82 -0
- data/ext/dpftri.c +82 -0
- data/ext/dpftrs.c +97 -0
- data/ext/dpocon.c +78 -0
- data/ext/dpoequ.c +75 -0
- data/ext/dpoequb.c +75 -0
- data/ext/dporfs.c +141 -0
- data/ext/dporfsx.c +206 -0
- data/ext/dposv.c +103 -0
- data/ext/dposvx.c +197 -0
- data/ext/dposvxx.c +235 -0
- data/ext/dpotf2.c +77 -0
- data/ext/dpotrf.c +77 -0
- data/ext/dpotri.c +77 -0
- data/ext/dpotrs.c +91 -0
- data/ext/dppcon.c +78 -0
- data/ext/dppequ.c +79 -0
- data/ext/dpprfs.c +139 -0
- data/ext/dppsv.c +104 -0
- data/ext/dppsvx.c +191 -0
- data/ext/dpptrf.c +78 -0
- data/ext/dpptri.c +78 -0
- data/ext/dpptrs.c +93 -0
- data/ext/dpstf2.c +95 -0
- data/ext/dpstrf.c +95 -0
- data/ext/dptcon.c +81 -0
- data/ext/dpteqr.c +126 -0
- data/ext/dptrfs.c +154 -0
- data/ext/dptsv.c +119 -0
- data/ext/dptsvx.c +168 -0
- data/ext/dpttrf.c +93 -0
- data/ext/dpttrs.c +97 -0
- data/ext/dptts2.c +94 -0
- data/ext/drscl.c +79 -0
- data/ext/dsbev.c +107 -0
- data/ext/dsbevd.c +140 -0
- data/ext/dsbevx.c +157 -0
- data/ext/dsbgst.c +117 -0
- data/ext/dsbgv.c +137 -0
- data/ext/dsbgvd.c +170 -0
- data/ext/dsbgvx.c +197 -0
- data/ext/dsbtrd.c +130 -0
- data/ext/dsfrk.c +109 -0
- data/ext/dsgesv.c +115 -0
- data/ext/dspcon.c +88 -0
- data/ext/dspev.c +102 -0
- data/ext/dspevd.c +135 -0
- data/ext/dspevx.c +141 -0
- data/ext/dspgst.c +94 -0
- data/ext/dspgv.c +129 -0
- data/ext/dspgvd.c +162 -0
- data/ext/dspgvx.c +168 -0
- data/ext/dsposv.c +111 -0
- data/ext/dsprfs.c +149 -0
- data/ext/dspsv.c +110 -0
- data/ext/dspsvx.c +163 -0
- data/ext/dsptrd.c +100 -0
- data/ext/dsptrf.c +84 -0
- data/ext/dsptri.c +89 -0
- data/ext/dsptrs.c +101 -0
- data/ext/dstebz.c +135 -0
- data/ext/dstedc.c +159 -0
- data/ext/dstegr.c +188 -0
- data/ext/dstein.c +134 -0
- data/ext/dstemr.c +193 -0
- data/ext/dsteqr.c +126 -0
- data/ext/dsterf.c +93 -0
- data/ext/dstev.c +111 -0
- data/ext/dstevd.c +144 -0
- data/ext/dstevr.c +188 -0
- data/ext/dstevx.c +158 -0
- data/ext/dsycon.c +90 -0
- data/ext/dsyconv.c +84 -0
- data/ext/dsyequb.c +82 -0
- data/ext/dsyev.c +107 -0
- data/ext/dsyevd.c +125 -0
- data/ext/dsyevr.c +172 -0
- data/ext/dsyevx.c +157 -0
- data/ext/dsygs2.c +95 -0
- data/ext/dsygst.c +95 -0
- data/ext/dsygv.c +137 -0
- data/ext/dsygvd.c +155 -0
- data/ext/dsygvx.c +187 -0
- data/ext/dsyrfs.c +153 -0
- data/ext/dsyrfsx.c +218 -0
- data/ext/dsysv.c +129 -0
- data/ext/dsysvx.c +183 -0
- data/ext/dsysvxx.c +258 -0
- data/ext/dsyswapr.c +82 -0
- data/ext/dsytd2.c +101 -0
- data/ext/dsytf2.c +85 -0
- data/ext/dsytrd.c +113 -0
- data/ext/dsytrf.c +97 -0
- data/ext/dsytri.c +92 -0
- data/ext/dsytri2.c +108 -0
- data/ext/dsytri2x.c +96 -0
- data/ext/dsytrs.c +103 -0
- data/ext/dsytrs2.c +106 -0
- data/ext/dtbcon.c +86 -0
- data/ext/dtbrfs.c +127 -0
- data/ext/dtbtrs.c +103 -0
- data/ext/dtfsm.c +110 -0
- data/ext/dtftri.c +86 -0
- data/ext/dtfttp.c +79 -0
- data/ext/dtfttr.c +80 -0
- data/ext/dtgevc.c +153 -0
- data/ext/dtgex2.c +180 -0
- data/ext/dtgexc.c +187 -0
- data/ext/dtgsen.c +252 -0
- data/ext/dtgsja.c +227 -0
- data/ext/dtgsna.c +164 -0
- data/ext/dtgsy2.c +182 -0
- data/ext/dtgsyl.c +190 -0
- data/ext/dtpcon.c +82 -0
- data/ext/dtprfs.c +123 -0
- data/ext/dtptri.c +82 -0
- data/ext/dtptrs.c +101 -0
- data/ext/dtpttf.c +79 -0
- data/ext/dtpttr.c +76 -0
- data/ext/dtrcon.c +82 -0
- data/ext/dtrevc.c +150 -0
- data/ext/dtrexc.c +116 -0
- data/ext/dtrrfs.c +123 -0
- data/ext/dtrsen.c +169 -0
- data/ext/dtrsna.c +137 -0
- data/ext/dtrsyl.c +116 -0
- data/ext/dtrti2.c +81 -0
- data/ext/dtrtri.c +81 -0
- data/ext/dtrtrs.c +99 -0
- data/ext/dtrttf.c +77 -0
- data/ext/dtrttp.c +73 -0
- data/ext/dtzrqf.c +83 -0
- data/ext/dtzrzf.c +101 -0
- data/ext/dzsum1.c +63 -0
- data/ext/icmax1.c +63 -0
- data/ext/ieeeck.c +59 -0
- data/ext/ilaclc.c +65 -0
- data/ext/ilaclr.c +65 -0
- data/ext/iladiag.c +51 -0
- data/ext/iladlc.c +65 -0
- data/ext/iladlr.c +65 -0
- data/ext/ilaenv.c +75 -0
- data/ext/ilaprec.c +51 -0
- data/ext/ilaslc.c +65 -0
- data/ext/ilaslr.c +65 -0
- data/ext/ilatrans.c +51 -0
- data/ext/ilauplo.c +51 -0
- data/ext/ilaver.c +53 -0
- data/ext/ilazlc.c +65 -0
- data/ext/ilazlr.c +65 -0
- data/ext/iparmq.c +75 -0
- data/ext/izmax1.c +63 -0
- data/ext/lsamen.c +59 -0
- data/ext/rb_lapack.c +3279 -0
- data/ext/sbbcsd.c +287 -0
- data/ext/sbdsdc.c +157 -0
- data/ext/sbdsqr.c +182 -0
- data/ext/scsum1.c +63 -0
- data/ext/sdisna.c +75 -0
- data/ext/sgbbrd.c +154 -0
- data/ext/sgbcon.c +98 -0
- data/ext/sgbequ.c +98 -0
- data/ext/sgbequb.c +96 -0
- data/ext/sgbrfs.c +161 -0
- data/ext/sgbrfsx.c +249 -0
- data/ext/sgbsv.c +115 -0
- data/ext/sgbsvx.c +286 -0
- data/ext/sgbsvxx.c +289 -0
- data/ext/sgbtf2.c +93 -0
- data/ext/sgbtrf.c +93 -0
- data/ext/sgbtrs.c +111 -0
- data/ext/sgebak.c +101 -0
- data/ext/sgebal.c +91 -0
- data/ext/sgebd2.c +112 -0
- data/ext/sgebrd.c +127 -0
- data/ext/sgecon.c +78 -0
- data/ext/sgeequ.c +88 -0
- data/ext/sgeequb.c +88 -0
- data/ext/sgees.c +148 -0
- data/ext/sgeesx.c +170 -0
- data/ext/sgeev.c +137 -0
- data/ext/sgeevx.c +181 -0
- data/ext/sgegs.c +171 -0
- data/ext/sgegv.c +171 -0
- data/ext/sgehd2.c +92 -0
- data/ext/sgehrd.c +107 -0
- data/ext/sgejsv.c +159 -0
- data/ext/sgelq2.c +86 -0
- data/ext/sgelqf.c +103 -0
- data/ext/sgels.c +137 -0
- data/ext/sgelsd.c +149 -0
- data/ext/sgelss.c +148 -0
- data/ext/sgelsx.c +136 -0
- data/ext/sgelsy.c +163 -0
- data/ext/sgeql2.c +88 -0
- data/ext/sgeqlf.c +103 -0
- data/ext/sgeqp3.c +126 -0
- data/ext/sgeqpf.c +111 -0
- data/ext/sgeqr2.c +88 -0
- data/ext/sgeqr2p.c +88 -0
- data/ext/sgeqrf.c +103 -0
- data/ext/sgeqrfp.c +103 -0
- data/ext/sgerfs.c +153 -0
- data/ext/sgerfsx.c +219 -0
- data/ext/sgerq2.c +86 -0
- data/ext/sgerqf.c +103 -0
- data/ext/sgesc2.c +108 -0
- data/ext/sgesdd.c +132 -0
- data/ext/sgesv.c +107 -0
- data/ext/sgesvd.c +143 -0
- data/ext/sgesvj.c +156 -0
- data/ext/sgesvx.c +278 -0
- data/ext/sgesvxx.c +281 -0
- data/ext/sgetc2.c +89 -0
- data/ext/sgetf2.c +85 -0
- data/ext/sgetrf.c +85 -0
- data/ext/sgetri.c +103 -0
- data/ext/sgetrs.c +103 -0
- data/ext/sggbak.c +113 -0
- data/ext/sggbal.c +128 -0
- data/ext/sgges.c +198 -0
- data/ext/sggesx.c +231 -0
- data/ext/sggev.c +171 -0
- data/ext/sggevx.c +229 -0
- data/ext/sggglm.c +156 -0
- data/ext/sgghrd.c +167 -0
- data/ext/sgglse.c +171 -0
- data/ext/sggqrf.c +137 -0
- data/ext/sggrqf.c +141 -0
- data/ext/sggsvd.c +181 -0
- data/ext/sggsvp.c +171 -0
- data/ext/sgsvj0.c +182 -0
- data/ext/sgsvj1.c +186 -0
- data/ext/sgtcon.c +124 -0
- data/ext/sgtrfs.c +209 -0
- data/ext/sgtsv.c +142 -0
- data/ext/sgtsvx.c +256 -0
- data/ext/sgttrf.c +132 -0
- data/ext/sgttrs.c +137 -0
- data/ext/sgtts2.c +134 -0
- data/ext/shgeqz.c +213 -0
- data/ext/shsein.c +205 -0
- data/ext/shseqr.c +153 -0
- data/ext/sisnan.c +51 -0
- data/ext/sla_gbamv.c +129 -0
- data/ext/sla_gbrcond.c +142 -0
- data/ext/sla_gbrfsx_extended.c +291 -0
- data/ext/sla_gbrpvgrw.c +87 -0
- data/ext/sla_geamv.c +119 -0
- data/ext/sla_gercond.c +134 -0
- data/ext/sla_gerfsx_extended.c +283 -0
- data/ext/sla_lin_berr.c +84 -0
- data/ext/sla_porcond.c +122 -0
- data/ext/sla_porfsx_extended.c +271 -0
- data/ext/sla_porpvgrw.c +95 -0
- data/ext/sla_rpvgrw.c +79 -0
- data/ext/sla_syamv.c +116 -0
- data/ext/sla_syrcond.c +134 -0
- data/ext/sla_syrfsx_extended.c +283 -0
- data/ext/sla_syrpvgrw.c +107 -0
- data/ext/sla_wwaddw.c +102 -0
- data/ext/slabad.c +54 -0
- data/ext/slabrd.c +132 -0
- data/ext/slacn2.c +106 -0
- data/ext/slacon.c +83 -0
- data/ext/slacpy.c +77 -0
- data/ext/sladiv.c +66 -0
- data/ext/slae2.c +62 -0
- data/ext/slaebz.c +218 -0
- data/ext/slaed0.c +127 -0
- data/ext/slaed1.c +133 -0
- data/ext/slaed2.c +189 -0
- data/ext/slaed3.c +161 -0
- data/ext/slaed4.c +90 -0
- data/ext/slaed5.c +87 -0
- data/ext/slaed6.c +90 -0
- data/ext/slaed7.c +248 -0
- data/ext/slaed8.c +206 -0
- data/ext/slaed9.c +111 -0
- data/ext/slaeda.c +160 -0
- data/ext/slaein.c +143 -0
- data/ext/slaev2.c +68 -0
- data/ext/slaexc.c +118 -0
- data/ext/slag2.c +91 -0
- data/ext/slag2d.c +76 -0
- data/ext/slags2.c +90 -0
- data/ext/slagtf.c +140 -0
- data/ext/slagtm.c +132 -0
- data/ext/slagts.c +139 -0
- data/ext/slagv2.c +132 -0
- data/ext/slahqr.c +143 -0
- data/ext/slahr2.c +112 -0
- data/ext/slahrd.c +114 -0
- data/ext/slaic1.c +89 -0
- data/ext/slaln2.c +120 -0
- data/ext/slals0.c +201 -0
- data/ext/slalsa.c +270 -0
- data/ext/slalsd.c +142 -0
- data/ext/slamrg.c +80 -0
- data/ext/slaneg.c +83 -0
- data/ext/slangb.c +78 -0
- data/ext/slange.c +74 -0
- data/ext/slangt.c +87 -0
- data/ext/slanhs.c +70 -0
- data/ext/slansb.c +78 -0
- data/ext/slansf.c +78 -0
- data/ext/slansp.c +76 -0
- data/ext/slanst.c +75 -0
- data/ext/slansy.c +74 -0
- data/ext/slantb.c +82 -0
- data/ext/slantp.c +80 -0
- data/ext/slantr.c +82 -0
- data/ext/slanv2.c +82 -0
- data/ext/slapll.c +105 -0
- data/ext/slapmr.c +97 -0
- data/ext/slapmt.c +101 -0
- data/ext/slapy2.c +55 -0
- data/ext/slapy3.c +59 -0
- data/ext/slaqgb.c +117 -0
- data/ext/slaqge.c +109 -0
- data/ext/slaqp2.c +158 -0
- data/ext/slaqps.c +208 -0
- data/ext/slaqr0.c +153 -0
- data/ext/slaqr1.c +82 -0
- data/ext/slaqr2.c +182 -0
- data/ext/slaqr3.c +182 -0
- data/ext/slaqr4.c +153 -0
- data/ext/slaqr5.c +200 -0
- data/ext/slaqsb.c +101 -0
- data/ext/slaqsp.c +94 -0
- data/ext/slaqsy.c +97 -0
- data/ext/slaqtr.c +114 -0
- data/ext/slar1v.c +173 -0
- data/ext/slar2v.c +149 -0
- data/ext/slarf.c +101 -0
- data/ext/slarfb.c +123 -0
- data/ext/slarfg.c +83 -0
- data/ext/slarfgp.c +83 -0
- data/ext/slarft.c +105 -0
- data/ext/slarfx.c +93 -0
- data/ext/slargv.c +114 -0
- data/ext/slarnv.c +83 -0
- data/ext/slarra.c +124 -0
- data/ext/slarrb.c +178 -0
- data/ext/slarrc.c +96 -0
- data/ext/slarrd.c +190 -0
- data/ext/slarre.c +221 -0
- data/ext/slarrf.c +176 -0
- data/ext/slarrj.c +147 -0
- data/ext/slarrk.c +97 -0
- data/ext/slarrr.c +82 -0
- data/ext/slarrv.c +271 -0
- data/ext/slarscl2.c +82 -0
- data/ext/slartg.c +61 -0
- data/ext/slartgp.c +61 -0
- data/ext/slartgs.c +62 -0
- data/ext/slartv.c +130 -0
- data/ext/slaruv.c +79 -0
- data/ext/slarz.c +105 -0
- data/ext/slarzb.c +127 -0
- data/ext/slarzt.c +105 -0
- data/ext/slas2.c +62 -0
- data/ext/slascl.c +97 -0
- data/ext/slascl2.c +82 -0
- data/ext/slasd0.c +120 -0
- data/ext/slasd1.c +160 -0
- data/ext/slasd2.c +228 -0
- data/ext/slasd3.c +212 -0
- data/ext/slasd4.c +93 -0
- data/ext/slasd5.c +90 -0
- data/ext/slasd6.c +236 -0
- data/ext/slasd7.c +225 -0
- data/ext/slasd8.c +173 -0
- data/ext/slasda.c +221 -0
- data/ext/slasdq.c +186 -0
- data/ext/slasdt.c +82 -0
- data/ext/slaset.c +86 -0
- data/ext/slasq1.c +96 -0
- data/ext/slasq2.c +74 -0
- data/ext/slasq3.c +138 -0
- data/ext/slasq4.c +107 -0
- data/ext/slasq5.c +94 -0
- data/ext/slasq6.c +86 -0
- data/ext/slasr.c +110 -0
- data/ext/slasrt.c +74 -0
- data/ext/slassq.c +70 -0
- data/ext/slasv2.c +74 -0
- data/ext/slaswp.c +94 -0
- data/ext/slasy2.c +126 -0
- data/ext/slasyf.c +97 -0
- data/ext/slatbs.c +130 -0
- data/ext/slatdf.c +119 -0
- data/ext/slatps.c +124 -0
- data/ext/slatrd.c +105 -0
- data/ext/slatrs.c +126 -0
- data/ext/slatrz.c +87 -0
- data/ext/slatzm.c +131 -0
- data/ext/slauu2.c +77 -0
- data/ext/slauum.c +77 -0
- data/ext/sopgtr.c +91 -0
- data/ext/sopmtr.c +116 -0
- data/ext/sorbdb.c +232 -0
- data/ext/sorcsd.c +197 -0
- data/ext/sorg2l.c +92 -0
- data/ext/sorg2r.c +92 -0
- data/ext/sorgbr.c +115 -0
- data/ext/sorghr.c +111 -0
- data/ext/sorgl2.c +90 -0
- data/ext/sorglq.c +107 -0
- data/ext/sorgql.c +107 -0
- data/ext/sorgqr.c +107 -0
- data/ext/sorgr2.c +90 -0
- data/ext/sorgrq.c +107 -0
- data/ext/sorgtr.c +107 -0
- data/ext/sorm2l.c +114 -0
- data/ext/sorm2r.c +114 -0
- data/ext/sormbr.c +139 -0
- data/ext/sormhr.c +133 -0
- data/ext/sorml2.c +110 -0
- data/ext/sormlq.c +125 -0
- data/ext/sormql.c +129 -0
- data/ext/sormqr.c +129 -0
- data/ext/sormr2.c +110 -0
- data/ext/sormr3.c +114 -0
- data/ext/sormrq.c +125 -0
- data/ext/sormrz.c +129 -0
- data/ext/sormtr.c +129 -0
- data/ext/spbcon.c +82 -0
- data/ext/spbequ.c +83 -0
- data/ext/spbrfs.c +145 -0
- data/ext/spbstf.c +81 -0
- data/ext/spbsv.c +107 -0
- data/ext/spbsvx.c +201 -0
- data/ext/spbtf2.c +81 -0
- data/ext/spbtrf.c +81 -0
- data/ext/spbtrs.c +95 -0
- data/ext/spftrf.c +82 -0
- data/ext/spftri.c +82 -0
- data/ext/spftrs.c +97 -0
- data/ext/spocon.c +78 -0
- data/ext/spoequ.c +75 -0
- data/ext/spoequb.c +75 -0
- data/ext/sporfs.c +141 -0
- data/ext/sporfsx.c +206 -0
- data/ext/sposv.c +103 -0
- data/ext/sposvx.c +197 -0
- data/ext/sposvxx.c +235 -0
- data/ext/spotf2.c +77 -0
- data/ext/spotrf.c +77 -0
- data/ext/spotri.c +77 -0
- data/ext/spotrs.c +91 -0
- data/ext/sppcon.c +78 -0
- data/ext/sppequ.c +79 -0
- data/ext/spprfs.c +139 -0
- data/ext/sppsv.c +104 -0
- data/ext/sppsvx.c +191 -0
- data/ext/spptrf.c +78 -0
- data/ext/spptri.c +78 -0
- data/ext/spptrs.c +93 -0
- data/ext/spstf2.c +95 -0
- data/ext/spstrf.c +95 -0
- data/ext/sptcon.c +81 -0
- data/ext/spteqr.c +126 -0
- data/ext/sptrfs.c +154 -0
- data/ext/sptsv.c +119 -0
- data/ext/sptsvx.c +168 -0
- data/ext/spttrf.c +93 -0
- data/ext/spttrs.c +97 -0
- data/ext/sptts2.c +94 -0
- data/ext/srscl.c +79 -0
- data/ext/ssbev.c +107 -0
- data/ext/ssbevd.c +140 -0
- data/ext/ssbevx.c +157 -0
- data/ext/ssbgst.c +117 -0
- data/ext/ssbgv.c +137 -0
- data/ext/ssbgvd.c +170 -0
- data/ext/ssbgvx.c +197 -0
- data/ext/ssbtrd.c +130 -0
- data/ext/ssfrk.c +109 -0
- data/ext/sspcon.c +88 -0
- data/ext/sspev.c +102 -0
- data/ext/sspevd.c +135 -0
- data/ext/sspevx.c +141 -0
- data/ext/sspgst.c +94 -0
- data/ext/sspgv.c +129 -0
- data/ext/sspgvd.c +162 -0
- data/ext/sspgvx.c +168 -0
- data/ext/ssprfs.c +149 -0
- data/ext/sspsv.c +110 -0
- data/ext/sspsvx.c +163 -0
- data/ext/ssptrd.c +100 -0
- data/ext/ssptrf.c +84 -0
- data/ext/ssptri.c +89 -0
- data/ext/ssptrs.c +101 -0
- data/ext/sstebz.c +135 -0
- data/ext/sstedc.c +159 -0
- data/ext/sstegr.c +188 -0
- data/ext/sstein.c +134 -0
- data/ext/sstemr.c +193 -0
- data/ext/ssteqr.c +126 -0
- data/ext/ssterf.c +93 -0
- data/ext/sstev.c +111 -0
- data/ext/sstevd.c +144 -0
- data/ext/sstevr.c +188 -0
- data/ext/sstevx.c +158 -0
- data/ext/ssycon.c +90 -0
- data/ext/ssyconv.c +84 -0
- data/ext/ssyequb.c +82 -0
- data/ext/ssyev.c +107 -0
- data/ext/ssyevd.c +125 -0
- data/ext/ssyevr.c +172 -0
- data/ext/ssyevx.c +157 -0
- data/ext/ssygs2.c +95 -0
- data/ext/ssygst.c +95 -0
- data/ext/ssygv.c +137 -0
- data/ext/ssygvd.c +155 -0
- data/ext/ssygvx.c +191 -0
- data/ext/ssyrfs.c +153 -0
- data/ext/ssyrfsx.c +218 -0
- data/ext/ssysv.c +129 -0
- data/ext/ssysvx.c +183 -0
- data/ext/ssysvxx.c +258 -0
- data/ext/ssyswapr.c +82 -0
- data/ext/ssytd2.c +101 -0
- data/ext/ssytf2.c +85 -0
- data/ext/ssytrd.c +113 -0
- data/ext/ssytrf.c +97 -0
- data/ext/ssytri.c +92 -0
- data/ext/ssytri2.c +127 -0
- data/ext/ssytri2x.c +96 -0
- data/ext/ssytrs.c +103 -0
- data/ext/ssytrs2.c +106 -0
- data/ext/stbcon.c +86 -0
- data/ext/stbrfs.c +127 -0
- data/ext/stbtrs.c +103 -0
- data/ext/stfsm.c +112 -0
- data/ext/stftri.c +86 -0
- data/ext/stfttp.c +79 -0
- data/ext/stfttr.c +80 -0
- data/ext/stgevc.c +153 -0
- data/ext/stgex2.c +184 -0
- data/ext/stgexc.c +191 -0
- data/ext/stgsen.c +252 -0
- data/ext/stgsja.c +227 -0
- data/ext/stgsna.c +164 -0
- data/ext/stgsy2.c +182 -0
- data/ext/stgsyl.c +190 -0
- data/ext/stpcon.c +82 -0
- data/ext/stprfs.c +123 -0
- data/ext/stptri.c +82 -0
- data/ext/stptrs.c +101 -0
- data/ext/stpttf.c +79 -0
- data/ext/stpttr.c +76 -0
- data/ext/strcon.c +82 -0
- data/ext/strevc.c +150 -0
- data/ext/strexc.c +116 -0
- data/ext/strrfs.c +123 -0
- data/ext/strsen.c +169 -0
- data/ext/strsna.c +137 -0
- data/ext/strsyl.c +116 -0
- data/ext/strti2.c +81 -0
- data/ext/strtri.c +81 -0
- data/ext/strtrs.c +99 -0
- data/ext/strttf.c +77 -0
- data/ext/strttp.c +73 -0
- data/ext/stzrqf.c +83 -0
- data/ext/stzrzf.c +101 -0
- data/ext/xerbla.c +52 -0
- data/ext/xerbla_array.c +53 -0
- data/ext/zbbcsd.c +283 -0
- data/ext/zbdsqr.c +182 -0
- data/ext/zcgesv.c +118 -0
- data/ext/zcposv.c +114 -0
- data/ext/zdrscl.c +79 -0
- data/ext/zgbbrd.c +157 -0
- data/ext/zgbcon.c +98 -0
- data/ext/zgbequ.c +98 -0
- data/ext/zgbequb.c +96 -0
- data/ext/zgbrfs.c +161 -0
- data/ext/zgbrfsx.c +249 -0
- data/ext/zgbsv.c +115 -0
- data/ext/zgbsvx.c +286 -0
- data/ext/zgbsvxx.c +289 -0
- data/ext/zgbtf2.c +93 -0
- data/ext/zgbtrf.c +93 -0
- data/ext/zgbtrs.c +111 -0
- data/ext/zgebak.c +101 -0
- data/ext/zgebal.c +91 -0
- data/ext/zgebd2.c +112 -0
- data/ext/zgebrd.c +127 -0
- data/ext/zgecon.c +78 -0
- data/ext/zgeequ.c +88 -0
- data/ext/zgeequb.c +88 -0
- data/ext/zgees.c +142 -0
- data/ext/zgeesx.c +152 -0
- data/ext/zgeev.c +132 -0
- data/ext/zgeevx.c +173 -0
- data/ext/zgegs.c +166 -0
- data/ext/zgegv.c +171 -0
- data/ext/zgehd2.c +92 -0
- data/ext/zgehrd.c +107 -0
- data/ext/zgelq2.c +86 -0
- data/ext/zgelqf.c +103 -0
- data/ext/zgels.c +137 -0
- data/ext/zgelsd.c +154 -0
- data/ext/zgelss.c +151 -0
- data/ext/zgelsx.c +139 -0
- data/ext/zgelsy.c +166 -0
- data/ext/zgeql2.c +88 -0
- data/ext/zgeqlf.c +103 -0
- data/ext/zgeqp3.c +129 -0
- data/ext/zgeqpf.c +114 -0
- data/ext/zgeqr2.c +88 -0
- data/ext/zgeqr2p.c +88 -0
- data/ext/zgeqrf.c +103 -0
- data/ext/zgeqrfp.c +103 -0
- data/ext/zgerfs.c +153 -0
- data/ext/zgerfsx.c +219 -0
- data/ext/zgerq2.c +86 -0
- data/ext/zgerqf.c +103 -0
- data/ext/zgesc2.c +108 -0
- data/ext/zgesdd.c +135 -0
- data/ext/zgesv.c +107 -0
- data/ext/zgesvd.c +146 -0
- data/ext/zgesvx.c +278 -0
- data/ext/zgesvxx.c +281 -0
- data/ext/zgetc2.c +89 -0
- data/ext/zgetf2.c +85 -0
- data/ext/zgetrf.c +85 -0
- data/ext/zgetri.c +103 -0
- data/ext/zgetrs.c +103 -0
- data/ext/zggbak.c +113 -0
- data/ext/zggbal.c +128 -0
- data/ext/zgges.c +192 -0
- data/ext/zggesx.c +230 -0
- data/ext/zggev.c +171 -0
- data/ext/zggevx.c +226 -0
- data/ext/zggglm.c +156 -0
- data/ext/zgghrd.c +167 -0
- data/ext/zgglse.c +171 -0
- data/ext/zggqrf.c +137 -0
- data/ext/zggrqf.c +141 -0
- data/ext/zggsvd.c +184 -0
- data/ext/zggsvp.c +174 -0
- data/ext/zgtcon.c +121 -0
- data/ext/zgtrfs.c +209 -0
- data/ext/zgtsv.c +142 -0
- data/ext/zgtsvx.c +256 -0
- data/ext/zgttrf.c +132 -0
- data/ext/zgttrs.c +137 -0
- data/ext/zgtts2.c +134 -0
- data/ext/zhbev.c +110 -0
- data/ext/zhbevd.c +158 -0
- data/ext/zhbevx.c +160 -0
- data/ext/zhbgst.c +120 -0
- data/ext/zhbgv.c +140 -0
- data/ext/zhbgvd.c +188 -0
- data/ext/zhbgvx.c +189 -0
- data/ext/zhbtrd.c +130 -0
- data/ext/zhecon.c +87 -0
- data/ext/zheequb.c +82 -0
- data/ext/zheev.c +110 -0
- data/ext/zheevd.c +143 -0
- data/ext/zheevr.c +190 -0
- data/ext/zheevx.c +160 -0
- data/ext/zhegs2.c +95 -0
- data/ext/zhegst.c +95 -0
- data/ext/zhegv.c +140 -0
- data/ext/zhegvd.c +173 -0
- data/ext/zhegvx.c +190 -0
- data/ext/zherfs.c +153 -0
- data/ext/zherfsx.c +218 -0
- data/ext/zhesv.c +123 -0
- data/ext/zhesvx.c +183 -0
- data/ext/zhesvxx.c +258 -0
- data/ext/zhetd2.c +101 -0
- data/ext/zhetf2.c +85 -0
- data/ext/zhetrd.c +113 -0
- data/ext/zhetrf.c +97 -0
- data/ext/zhetri.c +92 -0
- data/ext/zhetrs.c +103 -0
- data/ext/zhetrs2.c +106 -0
- data/ext/zhfrk.c +109 -0
- data/ext/zhgeqz.c +208 -0
- data/ext/zhpcon.c +85 -0
- data/ext/zhpev.c +105 -0
- data/ext/zhpevd.c +153 -0
- data/ext/zhpevx.c +144 -0
- data/ext/zhpgst.c +94 -0
- data/ext/zhpgv.c +132 -0
- data/ext/zhpgvd.c +170 -0
- data/ext/zhpgvx.c +170 -0
- data/ext/zhprfs.c +149 -0
- data/ext/zhpsv.c +110 -0
- data/ext/zhpsvx.c +163 -0
- data/ext/zhptrd.c +100 -0
- data/ext/zhptrf.c +84 -0
- data/ext/zhptri.c +89 -0
- data/ext/zhptrs.c +101 -0
- data/ext/zhsein.c +185 -0
- data/ext/zhseqr.c +145 -0
- data/ext/zla_gbamv.c +127 -0
- data/ext/zla_gbrcond_c.c +142 -0
- data/ext/zla_gbrcond_x.c +138 -0
- data/ext/zla_gbrfsx_extended.c +295 -0
- data/ext/zla_gbrpvgrw.c +87 -0
- data/ext/zla_geamv.c +119 -0
- data/ext/zla_gercond_c.c +134 -0
- data/ext/zla_gercond_x.c +130 -0
- data/ext/zla_gerfsx_extended.c +281 -0
- data/ext/zla_heamv.c +116 -0
- data/ext/zla_hercond_c.c +134 -0
- data/ext/zla_hercond_x.c +130 -0
- data/ext/zla_herfsx_extended.c +283 -0
- data/ext/zla_herpvgrw.c +107 -0
- data/ext/zla_lin_berr.c +84 -0
- data/ext/zla_porcond_c.c +122 -0
- data/ext/zla_porcond_x.c +118 -0
- data/ext/zla_porfsx_extended.c +271 -0
- data/ext/zla_porpvgrw.c +95 -0
- data/ext/zla_rpvgrw.c +79 -0
- data/ext/zla_syamv.c +116 -0
- data/ext/zla_syrcond_c.c +134 -0
- data/ext/zla_syrcond_x.c +130 -0
- data/ext/zla_syrfsx_extended.c +283 -0
- data/ext/zla_syrpvgrw.c +107 -0
- data/ext/zla_wwaddw.c +102 -0
- data/ext/zlabrd.c +132 -0
- data/ext/zlacgv.c +75 -0
- data/ext/zlacn2.c +103 -0
- data/ext/zlacon.c +80 -0
- data/ext/zlacp2.c +77 -0
- data/ext/zlacpy.c +77 -0
- data/ext/zlacrm.c +90 -0
- data/ext/zlacrt.c +108 -0
- data/ext/zladiv.c +57 -0
- data/ext/zlaed0.c +134 -0
- data/ext/zlaed7.c +247 -0
- data/ext/zlaed8.c +198 -0
- data/ext/zlaein.c +113 -0
- data/ext/zlaesy.c +74 -0
- data/ext/zlaev2.c +71 -0
- data/ext/zlag2c.c +76 -0
- data/ext/zlags2.c +92 -0
- data/ext/zlagtm.c +132 -0
- data/ext/zlahef.c +97 -0
- data/ext/zlahqr.c +135 -0
- data/ext/zlahr2.c +112 -0
- data/ext/zlahrd.c +112 -0
- data/ext/zlaic1.c +90 -0
- data/ext/zlals0.c +201 -0
- data/ext/zlalsa.c +270 -0
- data/ext/zlalsd.c +145 -0
- data/ext/zlangb.c +76 -0
- data/ext/zlange.c +74 -0
- data/ext/zlangt.c +87 -0
- data/ext/zlanhb.c +78 -0
- data/ext/zlanhe.c +74 -0
- data/ext/zlanhf.c +80 -0
- data/ext/zlanhp.c +76 -0
- data/ext/zlanhs.c +70 -0
- data/ext/zlanht.c +75 -0
- data/ext/zlansb.c +78 -0
- data/ext/zlansp.c +76 -0
- data/ext/zlansy.c +74 -0
- data/ext/zlantb.c +82 -0
- data/ext/zlantp.c +80 -0
- data/ext/zlantr.c +82 -0
- data/ext/zlapll.c +105 -0
- data/ext/zlapmr.c +97 -0
- data/ext/zlapmt.c +101 -0
- data/ext/zlaqgb.c +117 -0
- data/ext/zlaqge.c +109 -0
- data/ext/zlaqhb.c +97 -0
- data/ext/zlaqhe.c +97 -0
- data/ext/zlaqhp.c +94 -0
- data/ext/zlaqp2.c +158 -0
- data/ext/zlaqps.c +208 -0
- data/ext/zlaqr0.c +153 -0
- data/ext/zlaqr1.c +76 -0
- data/ext/zlaqr2.c +174 -0
- data/ext/zlaqr3.c +174 -0
- data/ext/zlaqr4.c +147 -0
- data/ext/zlaqr5.c +179 -0
- data/ext/zlaqsb.c +101 -0
- data/ext/zlaqsp.c +94 -0
- data/ext/zlaqsy.c +97 -0
- data/ext/zlar1v.c +173 -0
- data/ext/zlar2v.c +149 -0
- data/ext/zlarcm.c +86 -0
- data/ext/zlarf.c +102 -0
- data/ext/zlarfb.c +123 -0
- data/ext/zlarfg.c +84 -0
- data/ext/zlarfgp.c +84 -0
- data/ext/zlarft.c +105 -0
- data/ext/zlarfx.c +94 -0
- data/ext/zlargv.c +114 -0
- data/ext/zlarnv.c +83 -0
- data/ext/zlarrv.c +271 -0
- data/ext/zlarscl2.c +82 -0
- data/ext/zlartg.c +63 -0
- data/ext/zlartv.c +130 -0
- data/ext/zlarz.c +106 -0
- data/ext/zlarzb.c +127 -0
- data/ext/zlarzt.c +105 -0
- data/ext/zlascl.c +97 -0
- data/ext/zlascl2.c +82 -0
- data/ext/zlaset.c +88 -0
- data/ext/zlasr.c +110 -0
- data/ext/zlassq.c +70 -0
- data/ext/zlaswp.c +94 -0
- data/ext/zlasyf.c +97 -0
- data/ext/zlat2c.c +76 -0
- data/ext/zlatbs.c +130 -0
- data/ext/zlatdf.c +119 -0
- data/ext/zlatps.c +124 -0
- data/ext/zlatrd.c +105 -0
- data/ext/zlatrs.c +126 -0
- data/ext/zlatrz.c +87 -0
- data/ext/zlatzm.c +132 -0
- data/ext/zlauu2.c +77 -0
- data/ext/zlauum.c +77 -0
- data/ext/zpbcon.c +82 -0
- data/ext/zpbequ.c +83 -0
- data/ext/zpbrfs.c +145 -0
- data/ext/zpbstf.c +81 -0
- data/ext/zpbsv.c +107 -0
- data/ext/zpbsvx.c +201 -0
- data/ext/zpbtf2.c +81 -0
- data/ext/zpbtrf.c +81 -0
- data/ext/zpbtrs.c +95 -0
- data/ext/zpftrf.c +82 -0
- data/ext/zpftri.c +82 -0
- data/ext/zpftrs.c +97 -0
- data/ext/zpocon.c +78 -0
- data/ext/zpoequ.c +75 -0
- data/ext/zpoequb.c +75 -0
- data/ext/zporfs.c +141 -0
- data/ext/zporfsx.c +206 -0
- data/ext/zposv.c +103 -0
- data/ext/zposvx.c +197 -0
- data/ext/zposvxx.c +235 -0
- data/ext/zpotf2.c +77 -0
- data/ext/zpotrf.c +77 -0
- data/ext/zpotri.c +77 -0
- data/ext/zpotrs.c +91 -0
- data/ext/zppcon.c +78 -0
- data/ext/zppequ.c +79 -0
- data/ext/zpprfs.c +139 -0
- data/ext/zppsv.c +104 -0
- data/ext/zppsvx.c +191 -0
- data/ext/zpptrf.c +78 -0
- data/ext/zpptri.c +78 -0
- data/ext/zpptrs.c +93 -0
- data/ext/zpstf2.c +95 -0
- data/ext/zpstrf.c +95 -0
- data/ext/zptcon.c +81 -0
- data/ext/zpteqr.c +126 -0
- data/ext/zptrfs.c +161 -0
- data/ext/zptsv.c +123 -0
- data/ext/zptsvx.c +171 -0
- data/ext/zpttrf.c +93 -0
- data/ext/zpttrs.c +101 -0
- data/ext/zptts2.c +98 -0
- data/ext/zrot.c +107 -0
- data/ext/zspcon.c +85 -0
- data/ext/zspmv.c +117 -0
- data/ext/zspr.c +96 -0
- data/ext/zsprfs.c +149 -0
- data/ext/zspsv.c +110 -0
- data/ext/zspsvx.c +163 -0
- data/ext/zsptrf.c +84 -0
- data/ext/zsptri.c +89 -0
- data/ext/zsptrs.c +101 -0
- data/ext/zstedc.c +177 -0
- data/ext/zstegr.c +188 -0
- data/ext/zstein.c +134 -0
- data/ext/zstemr.c +193 -0
- data/ext/zsteqr.c +126 -0
- data/ext/zsycon.c +87 -0
- data/ext/zsyconv.c +84 -0
- data/ext/zsyequb.c +82 -0
- data/ext/zsymv.c +115 -0
- data/ext/zsyr.c +95 -0
- data/ext/zsyrfs.c +153 -0
- data/ext/zsyrfsx.c +218 -0
- data/ext/zsysv.c +129 -0
- data/ext/zsysvx.c +183 -0
- data/ext/zsysvxx.c +258 -0
- data/ext/zsyswapr.c +82 -0
- data/ext/zsytf2.c +85 -0
- data/ext/zsytrf.c +97 -0
- data/ext/zsytri.c +92 -0
- data/ext/zsytri2.c +104 -0
- data/ext/zsytri2x.c +96 -0
- data/ext/zsytrs.c +103 -0
- data/ext/zsytrs2.c +106 -0
- data/ext/ztbcon.c +86 -0
- data/ext/ztbrfs.c +127 -0
- data/ext/ztbtrs.c +103 -0
- data/ext/ztfsm.c +111 -0
- data/ext/ztftri.c +86 -0
- data/ext/ztfttp.c +79 -0
- data/ext/ztfttr.c +80 -0
- data/ext/ztgevc.c +156 -0
- data/ext/ztgex2.c +171 -0
- data/ext/ztgexc.c +172 -0
- data/ext/ztgsen.c +244 -0
- data/ext/ztgsja.c +227 -0
- data/ext/ztgsna.c +164 -0
- data/ext/ztgsy2.c +176 -0
- data/ext/ztgsyl.c +190 -0
- data/ext/ztpcon.c +82 -0
- data/ext/ztprfs.c +123 -0
- data/ext/ztptri.c +82 -0
- data/ext/ztptrs.c +101 -0
- data/ext/ztpttf.c +79 -0
- data/ext/ztpttr.c +76 -0
- data/ext/ztrcon.c +82 -0
- data/ext/ztrevc.c +154 -0
- data/ext/ztrexc.c +111 -0
- data/ext/ztrrfs.c +123 -0
- data/ext/ztrsen.c +154 -0
- data/ext/ztrsna.c +137 -0
- data/ext/ztrsyl.c +116 -0
- data/ext/ztrti2.c +81 -0
- data/ext/ztrtri.c +81 -0
- data/ext/ztrtrs.c +99 -0
- data/ext/ztrttf.c +77 -0
- data/ext/ztrttp.c +73 -0
- data/ext/ztzrqf.c +83 -0
- data/ext/ztzrzf.c +101 -0
- data/ext/zunbdb.c +232 -0
- data/ext/zuncsd.c +204 -0
- data/ext/zung2l.c +92 -0
- data/ext/zung2r.c +92 -0
- data/ext/zungbr.c +115 -0
- data/ext/zunghr.c +111 -0
- data/ext/zungl2.c +90 -0
- data/ext/zunglq.c +107 -0
- data/ext/zungql.c +107 -0
- data/ext/zungqr.c +107 -0
- data/ext/zungr2.c +90 -0
- data/ext/zungrq.c +107 -0
- data/ext/zungtr.c +107 -0
- data/ext/zunm2l.c +114 -0
- data/ext/zunm2r.c +114 -0
- data/ext/zunmbr.c +139 -0
- data/ext/zunmhr.c +133 -0
- data/ext/zunml2.c +110 -0
- data/ext/zunmlq.c +125 -0
- data/ext/zunmql.c +129 -0
- data/ext/zunmqr.c +129 -0
- data/ext/zunmr2.c +110 -0
- data/ext/zunmr3.c +114 -0
- data/ext/zunmrq.c +125 -0
- data/ext/zunmrz.c +129 -0
- data/ext/zunmtr.c +129 -0
- data/ext/zupgtr.c +91 -0
- data/ext/zupmtr.c +116 -0
- metadata +1632 -1
data/ext/zggsvd.c
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID zggsvd_(char* jobu, char* jobv, char* jobq, integer* m, integer* n, integer* p, integer* k, integer* l, doublecomplex* a, integer* lda, doublecomplex* b, integer* ldb, doublereal* alpha, doublereal* beta, doublecomplex* u, integer* ldu, doublecomplex* v, integer* ldv, doublecomplex* q, integer* ldq, doublecomplex* work, doublereal* rwork, integer* iwork, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_zggsvd(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_jobu;
|
|
9
|
+
char jobu;
|
|
10
|
+
VALUE rblapack_jobv;
|
|
11
|
+
char jobv;
|
|
12
|
+
VALUE rblapack_jobq;
|
|
13
|
+
char jobq;
|
|
14
|
+
VALUE rblapack_a;
|
|
15
|
+
doublecomplex *a;
|
|
16
|
+
VALUE rblapack_b;
|
|
17
|
+
doublecomplex *b;
|
|
18
|
+
VALUE rblapack_k;
|
|
19
|
+
integer k;
|
|
20
|
+
VALUE rblapack_l;
|
|
21
|
+
integer l;
|
|
22
|
+
VALUE rblapack_alpha;
|
|
23
|
+
doublereal *alpha;
|
|
24
|
+
VALUE rblapack_beta;
|
|
25
|
+
doublereal *beta;
|
|
26
|
+
VALUE rblapack_u;
|
|
27
|
+
doublecomplex *u;
|
|
28
|
+
VALUE rblapack_v;
|
|
29
|
+
doublecomplex *v;
|
|
30
|
+
VALUE rblapack_q;
|
|
31
|
+
doublecomplex *q;
|
|
32
|
+
VALUE rblapack_iwork;
|
|
33
|
+
integer *iwork;
|
|
34
|
+
VALUE rblapack_info;
|
|
35
|
+
integer info;
|
|
36
|
+
VALUE rblapack_a_out__;
|
|
37
|
+
doublecomplex *a_out__;
|
|
38
|
+
VALUE rblapack_b_out__;
|
|
39
|
+
doublecomplex *b_out__;
|
|
40
|
+
doublecomplex *work;
|
|
41
|
+
doublereal *rwork;
|
|
42
|
+
|
|
43
|
+
integer lda;
|
|
44
|
+
integer n;
|
|
45
|
+
integer ldb;
|
|
46
|
+
integer ldu;
|
|
47
|
+
integer m;
|
|
48
|
+
integer ldv;
|
|
49
|
+
integer p;
|
|
50
|
+
integer ldq;
|
|
51
|
+
|
|
52
|
+
VALUE rblapack_options;
|
|
53
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
54
|
+
argc--;
|
|
55
|
+
rblapack_options = argv[argc];
|
|
56
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
57
|
+
printf("%s\n", "USAGE:\n k, l, alpha, beta, u, v, q, iwork, info, a, b = NumRu::Lapack.zggsvd( jobu, jobv, jobq, a, b, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE ZGGSVD( JOBU, JOBV, JOBQ, M, N, P, K, L, A, LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, RWORK, IWORK, INFO )\n\n* Purpose\n* =======\n*\n* ZGGSVD computes the generalized singular value decomposition (GSVD)\n* of an M-by-N complex matrix A and P-by-N complex matrix B:\n*\n* U'*A*Q = D1*( 0 R ), V'*B*Q = D2*( 0 R )\n*\n* where U, V and Q are unitary matrices, and Z' means the conjugate\n* transpose of Z. Let K+L = the effective numerical rank of the\n* matrix (A',B')', then R is a (K+L)-by-(K+L) nonsingular upper\n* triangular matrix, D1 and D2 are M-by-(K+L) and P-by-(K+L) \"diagonal\"\n* matrices and of the following structures, respectively:\n*\n* If M-K-L >= 0,\n*\n* K L\n* D1 = K ( I 0 )\n* L ( 0 C )\n* M-K-L ( 0 0 )\n*\n* K L\n* D2 = L ( 0 S )\n* P-L ( 0 0 )\n*\n* N-K-L K L\n* ( 0 R ) = K ( 0 R11 R12 )\n* L ( 0 0 R22 )\n* where\n*\n* C = diag( ALPHA(K+1), ... , ALPHA(K+L) ),\n* S = diag( BETA(K+1), ... , BETA(K+L) ),\n* C**2 + S**2 = I.\n*\n* R is stored in A(1:K+L,N-K-L+1:N) on exit.\n*\n* If M-K-L < 0,\n*\n* K M-K K+L-M\n* D1 = K ( I 0 0 )\n* M-K ( 0 C 0 )\n*\n* K M-K K+L-M\n* D2 = M-K ( 0 S 0 )\n* K+L-M ( 0 0 I )\n* P-L ( 0 0 0 )\n*\n* N-K-L K M-K K+L-M\n* ( 0 R ) = K ( 0 R11 R12 R13 )\n* M-K ( 0 0 R22 R23 )\n* K+L-M ( 0 0 0 R33 )\n*\n* where\n*\n* C = diag( ALPHA(K+1), ... , ALPHA(M) ),\n* S = diag( BETA(K+1), ... , BETA(M) ),\n* C**2 + S**2 = I.\n*\n* (R11 R12 R13 ) is stored in A(1:M, N-K-L+1:N), and R33 is stored\n* ( 0 R22 R23 )\n* in B(M-K+1:L,N+M-K-L+1:N) on exit.\n*\n* The routine computes C, S, R, and optionally the unitary\n* transformation matrices U, V and Q.\n*\n* In particular, if B is an N-by-N nonsingular matrix, then the GSVD of\n* A and B implicitly gives the SVD of A*inv(B):\n* A*inv(B) = U*(D1*inv(D2))*V'.\n* If ( A',B')' has orthnormal columns, then the GSVD of A and B is also\n* equal to the CS decomposition of A and B. Furthermore, the GSVD can\n* be used to derive the solution of the eigenvalue problem:\n* A'*A x = lambda* B'*B x.\n* In some literature, the GSVD of A and B is presented in the form\n* U'*A*X = ( 0 D1 ), V'*B*X = ( 0 D2 )\n* where U and V are orthogonal and X is nonsingular, and D1 and D2 are\n* ``diagonal''. The former GSVD form can be converted to the latter\n* form by taking the nonsingular matrix X as\n*\n* X = Q*( I 0 )\n* ( 0 inv(R) )\n*\n\n* Arguments\n* =========\n*\n* JOBU (input) CHARACTER*1\n* = 'U': Unitary matrix U is computed;\n* = 'N': U is not computed.\n*\n* JOBV (input) CHARACTER*1\n* = 'V': Unitary matrix V is computed;\n* = 'N': V is not computed.\n*\n* JOBQ (input) CHARACTER*1\n* = 'Q': Unitary matrix Q is computed;\n* = 'N': Q is not computed.\n*\n* M (input) INTEGER\n* The number of rows of the matrix A. M >= 0.\n*\n* N (input) INTEGER\n* The number of columns of the matrices A and B. N >= 0.\n*\n* P (input) INTEGER\n* The number of rows of the matrix B. P >= 0.\n*\n* K (output) INTEGER\n* L (output) INTEGER\n* On exit, K and L specify the dimension of the subblocks\n* described in Purpose.\n* K + L = effective numerical rank of (A',B')'.\n*\n* A (input/output) COMPLEX*16 array, dimension (LDA,N)\n* On entry, the M-by-N matrix A.\n* On exit, A contains the triangular matrix R, or part of R.\n* See Purpose for details.\n*\n* LDA (input) INTEGER\n* The leading dimension of the array A. LDA >= max(1,M).\n*\n* B (input/output) COMPLEX*16 array, dimension (LDB,N)\n* On entry, the P-by-N matrix B.\n* On exit, B contains part of the triangular matrix R if\n* M-K-L < 0. See Purpose for details.\n*\n* LDB (input) INTEGER\n* The leading dimension of the array B. LDB >= max(1,P).\n*\n* ALPHA (output) DOUBLE PRECISION array, dimension (N)\n* BETA (output) DOUBLE PRECISION array, dimension (N)\n* On exit, ALPHA and BETA contain the generalized singular\n* value pairs of A and B;\n* ALPHA(1:K) = 1,\n* BETA(1:K) = 0,\n* and if M-K-L >= 0,\n* ALPHA(K+1:K+L) = C,\n* BETA(K+1:K+L) = S,\n* or if M-K-L < 0,\n* ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0\n* BETA(K+1:M) = S, BETA(M+1:K+L) = 1\n* and\n* ALPHA(K+L+1:N) = 0\n* BETA(K+L+1:N) = 0\n*\n* U (output) COMPLEX*16 array, dimension (LDU,M)\n* If JOBU = 'U', U contains the M-by-M unitary matrix U.\n* If JOBU = 'N', U is not referenced.\n*\n* LDU (input) INTEGER\n* The leading dimension of the array U. LDU >= max(1,M) if\n* JOBU = 'U'; LDU >= 1 otherwise.\n*\n* V (output) COMPLEX*16 array, dimension (LDV,P)\n* If JOBV = 'V', V contains the P-by-P unitary matrix V.\n* If JOBV = 'N', V is not referenced.\n*\n* LDV (input) INTEGER\n* The leading dimension of the array V. LDV >= max(1,P) if\n* JOBV = 'V'; LDV >= 1 otherwise.\n*\n* Q (output) COMPLEX*16 array, dimension (LDQ,N)\n* If JOBQ = 'Q', Q contains the N-by-N unitary matrix Q.\n* If JOBQ = 'N', Q is not referenced.\n*\n* LDQ (input) INTEGER\n* The leading dimension of the array Q. LDQ >= max(1,N) if\n* JOBQ = 'Q'; LDQ >= 1 otherwise.\n*\n* WORK (workspace) COMPLEX*16 array, dimension (max(3*N,M,P)+N)\n*\n* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)\n*\n* IWORK (workspace/output) INTEGER array, dimension (N)\n* On exit, IWORK stores the sorting information. More\n* precisely, the following loop will sort ALPHA\n* for I = K+1, min(M,K+L)\n* swap ALPHA(I) and ALPHA(IWORK(I))\n* endfor\n* such that ALPHA(1) >= ALPHA(2) >= ... >= ALPHA(N).\n*\n* INFO (output) INTEGER\n* = 0: successful exit.\n* < 0: if INFO = -i, the i-th argument had an illegal value.\n* > 0: if INFO = 1, the Jacobi-type procedure failed to\n* converge. For further details, see subroutine ZTGSJA.\n*\n* Internal Parameters\n* ===================\n*\n* TOLA DOUBLE PRECISION\n* TOLB DOUBLE PRECISION\n* TOLA and TOLB are the thresholds to determine the effective\n* rank of (A',B')'. Generally, they are set to\n* TOLA = MAX(M,N)*norm(A)*MAZHEPS,\n* TOLB = MAX(P,N)*norm(B)*MAZHEPS.\n* The size of TOLA and TOLB may affect the size of backward\n* errors of the decomposition.\n*\n\n* Further Details\n* ===============\n*\n* 2-96 Based on modifications by\n* Ming Gu and Huan Ren, Computer Science Division, University of\n* California at Berkeley, USA\n*\n* =====================================================================\n*\n* .. Local Scalars ..\n LOGICAL WANTQ, WANTU, WANTV\n INTEGER I, IBND, ISUB, J, NCYCLE\n DOUBLE PRECISION ANORM, BNORM, SMAX, TEMP, TOLA, TOLB, ULP, UNFL\n* ..\n* .. External Functions ..\n LOGICAL LSAME\n DOUBLE PRECISION DLAMCH, ZLANGE\n EXTERNAL LSAME, DLAMCH, ZLANGE\n* ..\n* .. External Subroutines ..\n EXTERNAL DCOPY, XERBLA, ZGGSVP, ZTGSJA\n* ..\n* .. Intrinsic Functions ..\n INTRINSIC MAX, MIN\n* ..\n\n");
|
|
58
|
+
return Qnil;
|
|
59
|
+
}
|
|
60
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
61
|
+
printf("%s\n", "USAGE:\n k, l, alpha, beta, u, v, q, iwork, info, a, b = NumRu::Lapack.zggsvd( jobu, jobv, jobq, a, b, [:usage => usage, :help => help])\n");
|
|
62
|
+
return Qnil;
|
|
63
|
+
}
|
|
64
|
+
} else
|
|
65
|
+
rblapack_options = Qnil;
|
|
66
|
+
if (argc != 5 && argc != 5)
|
|
67
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 5)", argc);
|
|
68
|
+
rblapack_jobu = argv[0];
|
|
69
|
+
rblapack_jobv = argv[1];
|
|
70
|
+
rblapack_jobq = argv[2];
|
|
71
|
+
rblapack_a = argv[3];
|
|
72
|
+
rblapack_b = argv[4];
|
|
73
|
+
if (argc == 5) {
|
|
74
|
+
} else if (rblapack_options != Qnil) {
|
|
75
|
+
} else {
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
jobu = StringValueCStr(rblapack_jobu)[0];
|
|
79
|
+
jobq = StringValueCStr(rblapack_jobq)[0];
|
|
80
|
+
if (!NA_IsNArray(rblapack_b))
|
|
81
|
+
rb_raise(rb_eArgError, "b (5th argument) must be NArray");
|
|
82
|
+
if (NA_RANK(rblapack_b) != 2)
|
|
83
|
+
rb_raise(rb_eArgError, "rank of b (5th argument) must be %d", 2);
|
|
84
|
+
ldb = NA_SHAPE0(rblapack_b);
|
|
85
|
+
n = NA_SHAPE1(rblapack_b);
|
|
86
|
+
if (NA_TYPE(rblapack_b) != NA_DCOMPLEX)
|
|
87
|
+
rblapack_b = na_change_type(rblapack_b, NA_DCOMPLEX);
|
|
88
|
+
b = NA_PTR_TYPE(rblapack_b, doublecomplex*);
|
|
89
|
+
p = ldb;
|
|
90
|
+
jobv = StringValueCStr(rblapack_jobv)[0];
|
|
91
|
+
ldv = lsame_(&jobv,"V") ? MAX(1,p) : 1;
|
|
92
|
+
if (!NA_IsNArray(rblapack_a))
|
|
93
|
+
rb_raise(rb_eArgError, "a (4th argument) must be NArray");
|
|
94
|
+
if (NA_RANK(rblapack_a) != 2)
|
|
95
|
+
rb_raise(rb_eArgError, "rank of a (4th argument) must be %d", 2);
|
|
96
|
+
lda = NA_SHAPE0(rblapack_a);
|
|
97
|
+
if (NA_SHAPE1(rblapack_a) != n)
|
|
98
|
+
rb_raise(rb_eRuntimeError, "shape 1 of a must be the same as shape 1 of b");
|
|
99
|
+
if (NA_TYPE(rblapack_a) != NA_DCOMPLEX)
|
|
100
|
+
rblapack_a = na_change_type(rblapack_a, NA_DCOMPLEX);
|
|
101
|
+
a = NA_PTR_TYPE(rblapack_a, doublecomplex*);
|
|
102
|
+
ldq = lsame_(&jobq,"Q") ? MAX(1,n) : 1;
|
|
103
|
+
m = lda;
|
|
104
|
+
ldu = lsame_(&jobu,"U") ? MAX(1,m) : 1;
|
|
105
|
+
{
|
|
106
|
+
na_shape_t shape[1];
|
|
107
|
+
shape[0] = n;
|
|
108
|
+
rblapack_alpha = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
|
109
|
+
}
|
|
110
|
+
alpha = NA_PTR_TYPE(rblapack_alpha, doublereal*);
|
|
111
|
+
{
|
|
112
|
+
na_shape_t shape[1];
|
|
113
|
+
shape[0] = n;
|
|
114
|
+
rblapack_beta = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
|
115
|
+
}
|
|
116
|
+
beta = NA_PTR_TYPE(rblapack_beta, doublereal*);
|
|
117
|
+
{
|
|
118
|
+
na_shape_t shape[2];
|
|
119
|
+
shape[0] = ldu;
|
|
120
|
+
shape[1] = m;
|
|
121
|
+
rblapack_u = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
122
|
+
}
|
|
123
|
+
u = NA_PTR_TYPE(rblapack_u, doublecomplex*);
|
|
124
|
+
{
|
|
125
|
+
na_shape_t shape[2];
|
|
126
|
+
shape[0] = ldv;
|
|
127
|
+
shape[1] = p;
|
|
128
|
+
rblapack_v = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
129
|
+
}
|
|
130
|
+
v = NA_PTR_TYPE(rblapack_v, doublecomplex*);
|
|
131
|
+
{
|
|
132
|
+
na_shape_t shape[2];
|
|
133
|
+
shape[0] = ldq;
|
|
134
|
+
shape[1] = n;
|
|
135
|
+
rblapack_q = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
136
|
+
}
|
|
137
|
+
q = NA_PTR_TYPE(rblapack_q, doublecomplex*);
|
|
138
|
+
{
|
|
139
|
+
na_shape_t shape[1];
|
|
140
|
+
shape[0] = n;
|
|
141
|
+
rblapack_iwork = na_make_object(NA_LINT, 1, shape, cNArray);
|
|
142
|
+
}
|
|
143
|
+
iwork = NA_PTR_TYPE(rblapack_iwork, integer*);
|
|
144
|
+
{
|
|
145
|
+
na_shape_t shape[2];
|
|
146
|
+
shape[0] = lda;
|
|
147
|
+
shape[1] = n;
|
|
148
|
+
rblapack_a_out__ = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
149
|
+
}
|
|
150
|
+
a_out__ = NA_PTR_TYPE(rblapack_a_out__, doublecomplex*);
|
|
151
|
+
MEMCPY(a_out__, a, doublecomplex, NA_TOTAL(rblapack_a));
|
|
152
|
+
rblapack_a = rblapack_a_out__;
|
|
153
|
+
a = a_out__;
|
|
154
|
+
{
|
|
155
|
+
na_shape_t shape[2];
|
|
156
|
+
shape[0] = ldb;
|
|
157
|
+
shape[1] = n;
|
|
158
|
+
rblapack_b_out__ = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
159
|
+
}
|
|
160
|
+
b_out__ = NA_PTR_TYPE(rblapack_b_out__, doublecomplex*);
|
|
161
|
+
MEMCPY(b_out__, b, doublecomplex, NA_TOTAL(rblapack_b));
|
|
162
|
+
rblapack_b = rblapack_b_out__;
|
|
163
|
+
b = b_out__;
|
|
164
|
+
work = ALLOC_N(doublecomplex, (MAX(3*n,m)*(p)+n));
|
|
165
|
+
rwork = ALLOC_N(doublereal, (2*n));
|
|
166
|
+
|
|
167
|
+
zggsvd_(&jobu, &jobv, &jobq, &m, &n, &p, &k, &l, a, &lda, b, &ldb, alpha, beta, u, &ldu, v, &ldv, q, &ldq, work, rwork, iwork, &info);
|
|
168
|
+
|
|
169
|
+
free(work);
|
|
170
|
+
free(rwork);
|
|
171
|
+
rblapack_k = INT2NUM(k);
|
|
172
|
+
rblapack_l = INT2NUM(l);
|
|
173
|
+
rblapack_info = INT2NUM(info);
|
|
174
|
+
return rb_ary_new3(11, rblapack_k, rblapack_l, rblapack_alpha, rblapack_beta, rblapack_u, rblapack_v, rblapack_q, rblapack_iwork, rblapack_info, rblapack_a, rblapack_b);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
void
|
|
178
|
+
init_lapack_zggsvd(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
179
|
+
sHelp = sH;
|
|
180
|
+
sUsage = sU;
|
|
181
|
+
rblapack_ZERO = zero;
|
|
182
|
+
|
|
183
|
+
rb_define_module_function(mLapack, "zggsvd", rblapack_zggsvd, -1);
|
|
184
|
+
}
|
data/ext/zggsvp.c
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID zggsvp_(char* jobu, char* jobv, char* jobq, integer* m, integer* p, integer* n, doublecomplex* a, integer* lda, doublecomplex* b, integer* ldb, doublereal* tola, doublereal* tolb, integer* k, integer* l, doublecomplex* u, integer* ldu, doublecomplex* v, integer* ldv, doublecomplex* q, integer* ldq, integer* iwork, doublereal* rwork, doublecomplex* tau, doublecomplex* work, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_zggsvp(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_jobu;
|
|
9
|
+
char jobu;
|
|
10
|
+
VALUE rblapack_jobv;
|
|
11
|
+
char jobv;
|
|
12
|
+
VALUE rblapack_jobq;
|
|
13
|
+
char jobq;
|
|
14
|
+
VALUE rblapack_a;
|
|
15
|
+
doublecomplex *a;
|
|
16
|
+
VALUE rblapack_b;
|
|
17
|
+
doublecomplex *b;
|
|
18
|
+
VALUE rblapack_tola;
|
|
19
|
+
doublereal tola;
|
|
20
|
+
VALUE rblapack_tolb;
|
|
21
|
+
doublereal tolb;
|
|
22
|
+
VALUE rblapack_k;
|
|
23
|
+
integer k;
|
|
24
|
+
VALUE rblapack_l;
|
|
25
|
+
integer l;
|
|
26
|
+
VALUE rblapack_u;
|
|
27
|
+
doublecomplex *u;
|
|
28
|
+
VALUE rblapack_v;
|
|
29
|
+
doublecomplex *v;
|
|
30
|
+
VALUE rblapack_q;
|
|
31
|
+
doublecomplex *q;
|
|
32
|
+
VALUE rblapack_info;
|
|
33
|
+
integer info;
|
|
34
|
+
VALUE rblapack_a_out__;
|
|
35
|
+
doublecomplex *a_out__;
|
|
36
|
+
VALUE rblapack_b_out__;
|
|
37
|
+
doublecomplex *b_out__;
|
|
38
|
+
integer *iwork;
|
|
39
|
+
doublereal *rwork;
|
|
40
|
+
doublecomplex *tau;
|
|
41
|
+
doublecomplex *work;
|
|
42
|
+
|
|
43
|
+
integer lda;
|
|
44
|
+
integer n;
|
|
45
|
+
integer ldb;
|
|
46
|
+
integer ldu;
|
|
47
|
+
integer m;
|
|
48
|
+
integer ldv;
|
|
49
|
+
integer p;
|
|
50
|
+
integer ldq;
|
|
51
|
+
|
|
52
|
+
VALUE rblapack_options;
|
|
53
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
54
|
+
argc--;
|
|
55
|
+
rblapack_options = argv[argc];
|
|
56
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
57
|
+
printf("%s\n", "USAGE:\n k, l, u, v, q, info, a, b = NumRu::Lapack.zggsvp( jobu, jobv, jobq, a, b, tola, tolb, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE ZGGSVP( JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, IWORK, RWORK, TAU, WORK, INFO )\n\n* Purpose\n* =======\n*\n* ZGGSVP computes unitary matrices U, V and Q such that\n*\n* N-K-L K L\n* U'*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0;\n* L ( 0 0 A23 )\n* M-K-L ( 0 0 0 )\n*\n* N-K-L K L\n* = K ( 0 A12 A13 ) if M-K-L < 0;\n* M-K ( 0 0 A23 )\n*\n* N-K-L K L\n* V'*B*Q = L ( 0 0 B13 )\n* P-L ( 0 0 0 )\n*\n* where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular\n* upper triangular; A23 is L-by-L upper triangular if M-K-L >= 0,\n* otherwise A23 is (M-K)-by-L upper trapezoidal. K+L = the effective\n* numerical rank of the (M+P)-by-N matrix (A',B')'. Z' denotes the\n* conjugate transpose of Z.\n*\n* This decomposition is the preprocessing step for computing the\n* Generalized Singular Value Decomposition (GSVD), see subroutine\n* ZGGSVD.\n*\n\n* Arguments\n* =========\n*\n* JOBU (input) CHARACTER*1\n* = 'U': Unitary matrix U is computed;\n* = 'N': U is not computed.\n*\n* JOBV (input) CHARACTER*1\n* = 'V': Unitary matrix V is computed;\n* = 'N': V is not computed.\n*\n* JOBQ (input) CHARACTER*1\n* = 'Q': Unitary matrix Q is computed;\n* = 'N': Q is not computed.\n*\n* M (input) INTEGER\n* The number of rows of the matrix A. M >= 0.\n*\n* P (input) INTEGER\n* The number of rows of the matrix B. P >= 0.\n*\n* N (input) INTEGER\n* The number of columns of the matrices A and B. N >= 0.\n*\n* A (input/output) COMPLEX*16 array, dimension (LDA,N)\n* On entry, the M-by-N matrix A.\n* On exit, A contains the triangular (or trapezoidal) matrix\n* described in the Purpose section.\n*\n* LDA (input) INTEGER\n* The leading dimension of the array A. LDA >= max(1,M).\n*\n* B (input/output) COMPLEX*16 array, dimension (LDB,N)\n* On entry, the P-by-N matrix B.\n* On exit, B contains the triangular matrix described in\n* the Purpose section.\n*\n* LDB (input) INTEGER\n* The leading dimension of the array B. LDB >= max(1,P).\n*\n* TOLA (input) DOUBLE PRECISION\n* TOLB (input) DOUBLE PRECISION\n* TOLA and TOLB are the thresholds to determine the effective\n* numerical rank of matrix B and a subblock of A. Generally,\n* they are set to\n* TOLA = MAX(M,N)*norm(A)*MAZHEPS,\n* TOLB = MAX(P,N)*norm(B)*MAZHEPS.\n* The size of TOLA and TOLB may affect the size of backward\n* errors of the decomposition.\n*\n* K (output) INTEGER\n* L (output) INTEGER\n* On exit, K and L specify the dimension of the subblocks\n* described in Purpose section.\n* K + L = effective numerical rank of (A',B')'.\n*\n* U (output) COMPLEX*16 array, dimension (LDU,M)\n* If JOBU = 'U', U contains the unitary matrix U.\n* If JOBU = 'N', U is not referenced.\n*\n* LDU (input) INTEGER\n* The leading dimension of the array U. LDU >= max(1,M) if\n* JOBU = 'U'; LDU >= 1 otherwise.\n*\n* V (output) COMPLEX*16 array, dimension (LDV,P)\n* If JOBV = 'V', V contains the unitary matrix V.\n* If JOBV = 'N', V is not referenced.\n*\n* LDV (input) INTEGER\n* The leading dimension of the array V. LDV >= max(1,P) if\n* JOBV = 'V'; LDV >= 1 otherwise.\n*\n* Q (output) COMPLEX*16 array, dimension (LDQ,N)\n* If JOBQ = 'Q', Q contains the unitary matrix Q.\n* If JOBQ = 'N', Q is not referenced.\n*\n* LDQ (input) INTEGER\n* The leading dimension of the array Q. LDQ >= max(1,N) if\n* JOBQ = 'Q'; LDQ >= 1 otherwise.\n*\n* IWORK (workspace) INTEGER array, dimension (N)\n*\n* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)\n*\n* TAU (workspace) COMPLEX*16 array, dimension (N)\n*\n* WORK (workspace) COMPLEX*16 array, dimension (max(3*N,M,P))\n*\n* INFO (output) INTEGER\n* = 0: successful exit\n* < 0: if INFO = -i, the i-th argument had an illegal value.\n*\n\n* Further Details\n* ===============\n*\n* The subroutine uses LAPACK subroutine ZGEQPF for the QR factorization\n* with column pivoting to detect the effective numerical rank of the\n* a matrix. It may be replaced by a better rank determination strategy.\n*\n* =====================================================================\n*\n\n");
|
|
58
|
+
return Qnil;
|
|
59
|
+
}
|
|
60
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
61
|
+
printf("%s\n", "USAGE:\n k, l, u, v, q, info, a, b = NumRu::Lapack.zggsvp( jobu, jobv, jobq, a, b, tola, tolb, [:usage => usage, :help => help])\n");
|
|
62
|
+
return Qnil;
|
|
63
|
+
}
|
|
64
|
+
} else
|
|
65
|
+
rblapack_options = Qnil;
|
|
66
|
+
if (argc != 7 && argc != 7)
|
|
67
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 7)", argc);
|
|
68
|
+
rblapack_jobu = argv[0];
|
|
69
|
+
rblapack_jobv = argv[1];
|
|
70
|
+
rblapack_jobq = argv[2];
|
|
71
|
+
rblapack_a = argv[3];
|
|
72
|
+
rblapack_b = argv[4];
|
|
73
|
+
rblapack_tola = argv[5];
|
|
74
|
+
rblapack_tolb = argv[6];
|
|
75
|
+
if (argc == 7) {
|
|
76
|
+
} else if (rblapack_options != Qnil) {
|
|
77
|
+
} else {
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
jobu = StringValueCStr(rblapack_jobu)[0];
|
|
81
|
+
jobq = StringValueCStr(rblapack_jobq)[0];
|
|
82
|
+
if (!NA_IsNArray(rblapack_b))
|
|
83
|
+
rb_raise(rb_eArgError, "b (5th argument) must be NArray");
|
|
84
|
+
if (NA_RANK(rblapack_b) != 2)
|
|
85
|
+
rb_raise(rb_eArgError, "rank of b (5th argument) must be %d", 2);
|
|
86
|
+
ldb = NA_SHAPE0(rblapack_b);
|
|
87
|
+
n = NA_SHAPE1(rblapack_b);
|
|
88
|
+
if (NA_TYPE(rblapack_b) != NA_DCOMPLEX)
|
|
89
|
+
rblapack_b = na_change_type(rblapack_b, NA_DCOMPLEX);
|
|
90
|
+
b = NA_PTR_TYPE(rblapack_b, doublecomplex*);
|
|
91
|
+
tolb = NUM2DBL(rblapack_tolb);
|
|
92
|
+
p = ldb;
|
|
93
|
+
jobv = StringValueCStr(rblapack_jobv)[0];
|
|
94
|
+
tola = NUM2DBL(rblapack_tola);
|
|
95
|
+
ldv = lsame_(&jobv,"V") ? MAX(1,p) : 1;
|
|
96
|
+
if (!NA_IsNArray(rblapack_a))
|
|
97
|
+
rb_raise(rb_eArgError, "a (4th argument) must be NArray");
|
|
98
|
+
if (NA_RANK(rblapack_a) != 2)
|
|
99
|
+
rb_raise(rb_eArgError, "rank of a (4th argument) must be %d", 2);
|
|
100
|
+
lda = NA_SHAPE0(rblapack_a);
|
|
101
|
+
if (NA_SHAPE1(rblapack_a) != n)
|
|
102
|
+
rb_raise(rb_eRuntimeError, "shape 1 of a must be the same as shape 1 of b");
|
|
103
|
+
if (NA_TYPE(rblapack_a) != NA_DCOMPLEX)
|
|
104
|
+
rblapack_a = na_change_type(rblapack_a, NA_DCOMPLEX);
|
|
105
|
+
a = NA_PTR_TYPE(rblapack_a, doublecomplex*);
|
|
106
|
+
ldq = lsame_(&jobq,"Q") ? MAX(1,n) : 1;
|
|
107
|
+
m = lda;
|
|
108
|
+
ldu = lsame_(&jobu,"U") ? MAX(1,m) : 1;
|
|
109
|
+
{
|
|
110
|
+
na_shape_t shape[2];
|
|
111
|
+
shape[0] = ldu;
|
|
112
|
+
shape[1] = m;
|
|
113
|
+
rblapack_u = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
114
|
+
}
|
|
115
|
+
u = NA_PTR_TYPE(rblapack_u, doublecomplex*);
|
|
116
|
+
{
|
|
117
|
+
na_shape_t shape[2];
|
|
118
|
+
shape[0] = ldv;
|
|
119
|
+
shape[1] = p;
|
|
120
|
+
rblapack_v = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
121
|
+
}
|
|
122
|
+
v = NA_PTR_TYPE(rblapack_v, doublecomplex*);
|
|
123
|
+
{
|
|
124
|
+
na_shape_t shape[2];
|
|
125
|
+
shape[0] = ldq;
|
|
126
|
+
shape[1] = n;
|
|
127
|
+
rblapack_q = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
128
|
+
}
|
|
129
|
+
q = NA_PTR_TYPE(rblapack_q, doublecomplex*);
|
|
130
|
+
{
|
|
131
|
+
na_shape_t shape[2];
|
|
132
|
+
shape[0] = lda;
|
|
133
|
+
shape[1] = n;
|
|
134
|
+
rblapack_a_out__ = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
135
|
+
}
|
|
136
|
+
a_out__ = NA_PTR_TYPE(rblapack_a_out__, doublecomplex*);
|
|
137
|
+
MEMCPY(a_out__, a, doublecomplex, NA_TOTAL(rblapack_a));
|
|
138
|
+
rblapack_a = rblapack_a_out__;
|
|
139
|
+
a = a_out__;
|
|
140
|
+
{
|
|
141
|
+
na_shape_t shape[2];
|
|
142
|
+
shape[0] = ldb;
|
|
143
|
+
shape[1] = n;
|
|
144
|
+
rblapack_b_out__ = na_make_object(NA_DCOMPLEX, 2, shape, cNArray);
|
|
145
|
+
}
|
|
146
|
+
b_out__ = NA_PTR_TYPE(rblapack_b_out__, doublecomplex*);
|
|
147
|
+
MEMCPY(b_out__, b, doublecomplex, NA_TOTAL(rblapack_b));
|
|
148
|
+
rblapack_b = rblapack_b_out__;
|
|
149
|
+
b = b_out__;
|
|
150
|
+
iwork = ALLOC_N(integer, (n));
|
|
151
|
+
rwork = ALLOC_N(doublereal, (2*n));
|
|
152
|
+
tau = ALLOC_N(doublecomplex, (n));
|
|
153
|
+
work = ALLOC_N(doublecomplex, (MAX(3*n,m)*(p)));
|
|
154
|
+
|
|
155
|
+
zggsvp_(&jobu, &jobv, &jobq, &m, &p, &n, a, &lda, b, &ldb, &tola, &tolb, &k, &l, u, &ldu, v, &ldv, q, &ldq, iwork, rwork, tau, work, &info);
|
|
156
|
+
|
|
157
|
+
free(iwork);
|
|
158
|
+
free(rwork);
|
|
159
|
+
free(tau);
|
|
160
|
+
free(work);
|
|
161
|
+
rblapack_k = INT2NUM(k);
|
|
162
|
+
rblapack_l = INT2NUM(l);
|
|
163
|
+
rblapack_info = INT2NUM(info);
|
|
164
|
+
return rb_ary_new3(8, rblapack_k, rblapack_l, rblapack_u, rblapack_v, rblapack_q, rblapack_info, rblapack_a, rblapack_b);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
void
|
|
168
|
+
init_lapack_zggsvp(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
169
|
+
sHelp = sH;
|
|
170
|
+
sUsage = sU;
|
|
171
|
+
rblapack_ZERO = zero;
|
|
172
|
+
|
|
173
|
+
rb_define_module_function(mLapack, "zggsvp", rblapack_zggsvp, -1);
|
|
174
|
+
}
|
data/ext/zgtcon.c
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID zgtcon_(char* norm, integer* n, doublecomplex* dl, doublecomplex* d, doublecomplex* du, doublecomplex* du2, integer* ipiv, doublereal* anorm, doublereal* rcond, doublecomplex* work, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_zgtcon(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_norm;
|
|
9
|
+
char norm;
|
|
10
|
+
VALUE rblapack_dl;
|
|
11
|
+
doublecomplex *dl;
|
|
12
|
+
VALUE rblapack_d;
|
|
13
|
+
doublecomplex *d;
|
|
14
|
+
VALUE rblapack_du;
|
|
15
|
+
doublecomplex *du;
|
|
16
|
+
VALUE rblapack_du2;
|
|
17
|
+
doublecomplex *du2;
|
|
18
|
+
VALUE rblapack_ipiv;
|
|
19
|
+
integer *ipiv;
|
|
20
|
+
VALUE rblapack_anorm;
|
|
21
|
+
doublereal anorm;
|
|
22
|
+
VALUE rblapack_rcond;
|
|
23
|
+
doublereal rcond;
|
|
24
|
+
VALUE rblapack_info;
|
|
25
|
+
integer info;
|
|
26
|
+
doublecomplex *work;
|
|
27
|
+
|
|
28
|
+
integer n;
|
|
29
|
+
|
|
30
|
+
VALUE rblapack_options;
|
|
31
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
32
|
+
argc--;
|
|
33
|
+
rblapack_options = argv[argc];
|
|
34
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
35
|
+
printf("%s\n", "USAGE:\n rcond, info = NumRu::Lapack.zgtcon( norm, dl, d, du, du2, ipiv, anorm, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE ZGTCON( NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, INFO )\n\n* Purpose\n* =======\n*\n* ZGTCON estimates the reciprocal of the condition number of a complex\n* tridiagonal matrix A using the LU factorization as computed by\n* ZGTTRF.\n*\n* An estimate is obtained for norm(inv(A)), and the reciprocal of the\n* condition number is computed as RCOND = 1 / (ANORM * norm(inv(A))).\n*\n\n* Arguments\n* =========\n*\n* NORM (input) CHARACTER*1\n* Specifies whether the 1-norm condition number or the\n* infinity-norm condition number is required:\n* = '1' or 'O': 1-norm;\n* = 'I': Infinity-norm.\n*\n* N (input) INTEGER\n* The order of the matrix A. N >= 0.\n*\n* DL (input) COMPLEX*16 array, dimension (N-1)\n* The (n-1) multipliers that define the matrix L from the\n* LU factorization of A as computed by ZGTTRF.\n*\n* D (input) COMPLEX*16 array, dimension (N)\n* The n diagonal elements of the upper triangular matrix U from\n* the LU factorization of A.\n*\n* DU (input) COMPLEX*16 array, dimension (N-1)\n* The (n-1) elements of the first superdiagonal of U.\n*\n* DU2 (input) COMPLEX*16 array, dimension (N-2)\n* The (n-2) elements of the second superdiagonal of U.\n*\n* IPIV (input) INTEGER array, dimension (N)\n* The pivot indices; for 1 <= i <= n, row i of the matrix was\n* interchanged with row IPIV(i). IPIV(i) will always be either\n* i or i+1; IPIV(i) = i indicates a row interchange was not\n* required.\n*\n* ANORM (input) DOUBLE PRECISION\n* If NORM = '1' or 'O', the 1-norm of the original matrix A.\n* If NORM = 'I', the infinity-norm of the original matrix A.\n*\n* RCOND (output) DOUBLE PRECISION\n* The reciprocal of the condition number of the matrix A,\n* computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an\n* estimate of the 1-norm of inv(A) computed in this routine.\n*\n* WORK (workspace) COMPLEX*16 array, dimension (2*N)\n*\n* INFO (output) INTEGER\n* = 0: successful exit\n* < 0: if INFO = -i, the i-th argument had an illegal value\n*\n\n* =====================================================================\n*\n\n");
|
|
36
|
+
return Qnil;
|
|
37
|
+
}
|
|
38
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
39
|
+
printf("%s\n", "USAGE:\n rcond, info = NumRu::Lapack.zgtcon( norm, dl, d, du, du2, ipiv, anorm, [:usage => usage, :help => help])\n");
|
|
40
|
+
return Qnil;
|
|
41
|
+
}
|
|
42
|
+
} else
|
|
43
|
+
rblapack_options = Qnil;
|
|
44
|
+
if (argc != 7 && argc != 7)
|
|
45
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 7)", argc);
|
|
46
|
+
rblapack_norm = argv[0];
|
|
47
|
+
rblapack_dl = argv[1];
|
|
48
|
+
rblapack_d = argv[2];
|
|
49
|
+
rblapack_du = argv[3];
|
|
50
|
+
rblapack_du2 = argv[4];
|
|
51
|
+
rblapack_ipiv = argv[5];
|
|
52
|
+
rblapack_anorm = argv[6];
|
|
53
|
+
if (argc == 7) {
|
|
54
|
+
} else if (rblapack_options != Qnil) {
|
|
55
|
+
} else {
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
norm = StringValueCStr(rblapack_norm)[0];
|
|
59
|
+
if (!NA_IsNArray(rblapack_d))
|
|
60
|
+
rb_raise(rb_eArgError, "d (3th argument) must be NArray");
|
|
61
|
+
if (NA_RANK(rblapack_d) != 1)
|
|
62
|
+
rb_raise(rb_eArgError, "rank of d (3th argument) must be %d", 1);
|
|
63
|
+
n = NA_SHAPE0(rblapack_d);
|
|
64
|
+
if (NA_TYPE(rblapack_d) != NA_DCOMPLEX)
|
|
65
|
+
rblapack_d = na_change_type(rblapack_d, NA_DCOMPLEX);
|
|
66
|
+
d = NA_PTR_TYPE(rblapack_d, doublecomplex*);
|
|
67
|
+
if (!NA_IsNArray(rblapack_ipiv))
|
|
68
|
+
rb_raise(rb_eArgError, "ipiv (6th argument) must be NArray");
|
|
69
|
+
if (NA_RANK(rblapack_ipiv) != 1)
|
|
70
|
+
rb_raise(rb_eArgError, "rank of ipiv (6th argument) must be %d", 1);
|
|
71
|
+
if (NA_SHAPE0(rblapack_ipiv) != n)
|
|
72
|
+
rb_raise(rb_eRuntimeError, "shape 0 of ipiv must be the same as shape 0 of d");
|
|
73
|
+
if (NA_TYPE(rblapack_ipiv) != NA_LINT)
|
|
74
|
+
rblapack_ipiv = na_change_type(rblapack_ipiv, NA_LINT);
|
|
75
|
+
ipiv = NA_PTR_TYPE(rblapack_ipiv, integer*);
|
|
76
|
+
if (!NA_IsNArray(rblapack_dl))
|
|
77
|
+
rb_raise(rb_eArgError, "dl (2th argument) must be NArray");
|
|
78
|
+
if (NA_RANK(rblapack_dl) != 1)
|
|
79
|
+
rb_raise(rb_eArgError, "rank of dl (2th argument) must be %d", 1);
|
|
80
|
+
if (NA_SHAPE0(rblapack_dl) != (n-1))
|
|
81
|
+
rb_raise(rb_eRuntimeError, "shape 0 of dl must be %d", n-1);
|
|
82
|
+
if (NA_TYPE(rblapack_dl) != NA_DCOMPLEX)
|
|
83
|
+
rblapack_dl = na_change_type(rblapack_dl, NA_DCOMPLEX);
|
|
84
|
+
dl = NA_PTR_TYPE(rblapack_dl, doublecomplex*);
|
|
85
|
+
if (!NA_IsNArray(rblapack_du2))
|
|
86
|
+
rb_raise(rb_eArgError, "du2 (5th argument) must be NArray");
|
|
87
|
+
if (NA_RANK(rblapack_du2) != 1)
|
|
88
|
+
rb_raise(rb_eArgError, "rank of du2 (5th argument) must be %d", 1);
|
|
89
|
+
if (NA_SHAPE0(rblapack_du2) != (n-2))
|
|
90
|
+
rb_raise(rb_eRuntimeError, "shape 0 of du2 must be %d", n-2);
|
|
91
|
+
if (NA_TYPE(rblapack_du2) != NA_DCOMPLEX)
|
|
92
|
+
rblapack_du2 = na_change_type(rblapack_du2, NA_DCOMPLEX);
|
|
93
|
+
du2 = NA_PTR_TYPE(rblapack_du2, doublecomplex*);
|
|
94
|
+
if (!NA_IsNArray(rblapack_du))
|
|
95
|
+
rb_raise(rb_eArgError, "du (4th argument) must be NArray");
|
|
96
|
+
if (NA_RANK(rblapack_du) != 1)
|
|
97
|
+
rb_raise(rb_eArgError, "rank of du (4th argument) must be %d", 1);
|
|
98
|
+
if (NA_SHAPE0(rblapack_du) != (n-1))
|
|
99
|
+
rb_raise(rb_eRuntimeError, "shape 0 of du must be %d", n-1);
|
|
100
|
+
if (NA_TYPE(rblapack_du) != NA_DCOMPLEX)
|
|
101
|
+
rblapack_du = na_change_type(rblapack_du, NA_DCOMPLEX);
|
|
102
|
+
du = NA_PTR_TYPE(rblapack_du, doublecomplex*);
|
|
103
|
+
anorm = NUM2DBL(rblapack_anorm);
|
|
104
|
+
work = ALLOC_N(doublecomplex, (2*n));
|
|
105
|
+
|
|
106
|
+
zgtcon_(&norm, &n, dl, d, du, du2, ipiv, &anorm, &rcond, work, &info);
|
|
107
|
+
|
|
108
|
+
free(work);
|
|
109
|
+
rblapack_rcond = rb_float_new((double)rcond);
|
|
110
|
+
rblapack_info = INT2NUM(info);
|
|
111
|
+
return rb_ary_new3(2, rblapack_rcond, rblapack_info);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
void
|
|
115
|
+
init_lapack_zgtcon(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
116
|
+
sHelp = sH;
|
|
117
|
+
sUsage = sU;
|
|
118
|
+
rblapack_ZERO = zero;
|
|
119
|
+
|
|
120
|
+
rb_define_module_function(mLapack, "zgtcon", rblapack_zgtcon, -1);
|
|
121
|
+
}
|