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/dbdsdc.c
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
#include "rb_lapack.h"
|
2
|
+
|
3
|
+
extern VOID dbdsdc_(char* uplo, char* compq, integer* n, doublereal* d, doublereal* e, doublereal* u, integer* ldu, doublereal* vt, integer* ldvt, doublereal* q, integer* iq, doublereal* work, integer* iwork, integer* info);
|
4
|
+
|
5
|
+
|
6
|
+
static VALUE
|
7
|
+
rblapack_dbdsdc(int argc, VALUE *argv, VALUE self){
|
8
|
+
VALUE rblapack_uplo;
|
9
|
+
char uplo;
|
10
|
+
VALUE rblapack_compq;
|
11
|
+
char compq;
|
12
|
+
VALUE rblapack_d;
|
13
|
+
doublereal *d;
|
14
|
+
VALUE rblapack_e;
|
15
|
+
doublereal *e;
|
16
|
+
VALUE rblapack_u;
|
17
|
+
doublereal *u;
|
18
|
+
VALUE rblapack_vt;
|
19
|
+
doublereal *vt;
|
20
|
+
VALUE rblapack_q;
|
21
|
+
doublereal *q;
|
22
|
+
VALUE rblapack_iq;
|
23
|
+
integer *iq;
|
24
|
+
VALUE rblapack_info;
|
25
|
+
integer info;
|
26
|
+
VALUE rblapack_d_out__;
|
27
|
+
doublereal *d_out__;
|
28
|
+
VALUE rblapack_e_out__;
|
29
|
+
doublereal *e_out__;
|
30
|
+
integer c__0;
|
31
|
+
integer c__9;
|
32
|
+
real smlsiz;
|
33
|
+
doublereal *work;
|
34
|
+
integer *iwork;
|
35
|
+
|
36
|
+
integer n;
|
37
|
+
integer ldvt;
|
38
|
+
integer ldu;
|
39
|
+
|
40
|
+
VALUE rblapack_options;
|
41
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
42
|
+
argc--;
|
43
|
+
rblapack_options = argv[argc];
|
44
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
45
|
+
printf("%s\n", "USAGE:\n u, vt, q, iq, info, d, e = NumRu::Lapack.dbdsdc( uplo, compq, d, e, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ, WORK, IWORK, INFO )\n\n* Purpose\n* =======\n*\n* DBDSDC computes the singular value decomposition (SVD) of a real\n* N-by-N (upper or lower) bidiagonal matrix B: B = U * S * VT,\n* using a divide and conquer method, where S is a diagonal matrix\n* with non-negative diagonal elements (the singular values of B), and\n* U and VT are orthogonal matrices of left and right singular vectors,\n* respectively. DBDSDC can be used to compute all singular values,\n* and optionally, singular vectors or singular vectors in compact form.\n*\n* This code makes very mild assumptions about floating point\n* arithmetic. It will work on machines with a guard digit in\n* add/subtract, or on those binary machines without guard digits\n* which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2.\n* It could conceivably fail on hexadecimal or decimal machines\n* without guard digits, but we know of none. See DLASD3 for details.\n*\n* The code currently calls DLASDQ if singular values only are desired.\n* However, it can be slightly modified to compute singular values\n* using the divide and conquer method.\n*\n\n* Arguments\n* =========\n*\n* UPLO (input) CHARACTER*1\n* = 'U': B is upper bidiagonal.\n* = 'L': B is lower bidiagonal.\n*\n* COMPQ (input) CHARACTER*1\n* Specifies whether singular vectors are to be computed\n* as follows:\n* = 'N': Compute singular values only;\n* = 'P': Compute singular values and compute singular\n* vectors in compact form;\n* = 'I': Compute singular values and singular vectors.\n*\n* N (input) INTEGER\n* The order of the matrix B. N >= 0.\n*\n* D (input/output) DOUBLE PRECISION array, dimension (N)\n* On entry, the n diagonal elements of the bidiagonal matrix B.\n* On exit, if INFO=0, the singular values of B.\n*\n* E (input/output) DOUBLE PRECISION array, dimension (N-1)\n* On entry, the elements of E contain the offdiagonal\n* elements of the bidiagonal matrix whose SVD is desired.\n* On exit, E has been destroyed.\n*\n* U (output) DOUBLE PRECISION array, dimension (LDU,N)\n* If COMPQ = 'I', then:\n* On exit, if INFO = 0, U contains the left singular vectors\n* of the bidiagonal matrix.\n* For other values of COMPQ, U is not referenced.\n*\n* LDU (input) INTEGER\n* The leading dimension of the array U. LDU >= 1.\n* If singular vectors are desired, then LDU >= max( 1, N ).\n*\n* VT (output) DOUBLE PRECISION array, dimension (LDVT,N)\n* If COMPQ = 'I', then:\n* On exit, if INFO = 0, VT' contains the right singular\n* vectors of the bidiagonal matrix.\n* For other values of COMPQ, VT is not referenced.\n*\n* LDVT (input) INTEGER\n* The leading dimension of the array VT. LDVT >= 1.\n* If singular vectors are desired, then LDVT >= max( 1, N ).\n*\n* Q (output) DOUBLE PRECISION array, dimension (LDQ)\n* If COMPQ = 'P', then:\n* On exit, if INFO = 0, Q and IQ contain the left\n* and right singular vectors in a compact form,\n* requiring O(N log N) space instead of 2*N**2.\n* In particular, Q contains all the DOUBLE PRECISION data in\n* LDQ >= N*(11 + 2*SMLSIZ + 8*INT(LOG_2(N/(SMLSIZ+1))))\n* words of memory, where SMLSIZ is returned by ILAENV and\n* is equal to the maximum size of the subproblems at the\n* bottom of the computation tree (usually about 25).\n* For other values of COMPQ, Q is not referenced.\n*\n* IQ (output) INTEGER array, dimension (LDIQ)\n* If COMPQ = 'P', then:\n* On exit, if INFO = 0, Q and IQ contain the left\n* and right singular vectors in a compact form,\n* requiring O(N log N) space instead of 2*N**2.\n* In particular, IQ contains all INTEGER data in\n* LDIQ >= N*(3 + 3*INT(LOG_2(N/(SMLSIZ+1))))\n* words of memory, where SMLSIZ is returned by ILAENV and\n* is equal to the maximum size of the subproblems at the\n* bottom of the computation tree (usually about 25).\n* For other values of COMPQ, IQ is not referenced.\n*\n* WORK (workspace) DOUBLE PRECISION array, dimension (MAX(1,LWORK))\n* If COMPQ = 'N' then LWORK >= (4 * N).\n* If COMPQ = 'P' then LWORK >= (6 * N).\n* If COMPQ = 'I' then LWORK >= (3 * N**2 + 4 * N).\n*\n* IWORK (workspace) INTEGER array, dimension (8*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: The algorithm failed to compute a singular value.\n* The update process of divide and conquer failed.\n*\n\n* Further Details\n* ===============\n*\n* Based on contributions by\n* Ming Gu and Huan Ren, Computer Science Division, University of\n* California at Berkeley, USA\n*\n* =====================================================================\n* Changed dimension statement in comment describing E from (N) to\n* (N-1). Sven, 17 Feb 05.\n* =====================================================================\n*\n\n");
|
46
|
+
return Qnil;
|
47
|
+
}
|
48
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
49
|
+
printf("%s\n", "USAGE:\n u, vt, q, iq, info, d, e = NumRu::Lapack.dbdsdc( uplo, compq, d, e, [:usage => usage, :help => help])\n");
|
50
|
+
return Qnil;
|
51
|
+
}
|
52
|
+
} else
|
53
|
+
rblapack_options = Qnil;
|
54
|
+
if (argc != 4 && argc != 4)
|
55
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 4)", argc);
|
56
|
+
rblapack_uplo = argv[0];
|
57
|
+
rblapack_compq = argv[1];
|
58
|
+
rblapack_d = argv[2];
|
59
|
+
rblapack_e = argv[3];
|
60
|
+
if (argc == 4) {
|
61
|
+
} else if (rblapack_options != Qnil) {
|
62
|
+
} else {
|
63
|
+
}
|
64
|
+
|
65
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
66
|
+
if (!NA_IsNArray(rblapack_d))
|
67
|
+
rb_raise(rb_eArgError, "d (3th argument) must be NArray");
|
68
|
+
if (NA_RANK(rblapack_d) != 1)
|
69
|
+
rb_raise(rb_eArgError, "rank of d (3th argument) must be %d", 1);
|
70
|
+
n = NA_SHAPE0(rblapack_d);
|
71
|
+
if (NA_TYPE(rblapack_d) != NA_DFLOAT)
|
72
|
+
rblapack_d = na_change_type(rblapack_d, NA_DFLOAT);
|
73
|
+
d = NA_PTR_TYPE(rblapack_d, doublereal*);
|
74
|
+
c__0 = 0;
|
75
|
+
compq = StringValueCStr(rblapack_compq)[0];
|
76
|
+
c__9 = 9;
|
77
|
+
ldu = lsame_(&compq,"I") ? MAX(1,n) : 0;
|
78
|
+
if (!NA_IsNArray(rblapack_e))
|
79
|
+
rb_raise(rb_eArgError, "e (4th argument) must be NArray");
|
80
|
+
if (NA_RANK(rblapack_e) != 1)
|
81
|
+
rb_raise(rb_eArgError, "rank of e (4th argument) must be %d", 1);
|
82
|
+
if (NA_SHAPE0(rblapack_e) != (n-1))
|
83
|
+
rb_raise(rb_eRuntimeError, "shape 0 of e must be %d", n-1);
|
84
|
+
if (NA_TYPE(rblapack_e) != NA_DFLOAT)
|
85
|
+
rblapack_e = na_change_type(rblapack_e, NA_DFLOAT);
|
86
|
+
e = NA_PTR_TYPE(rblapack_e, doublereal*);
|
87
|
+
smlsiz = ilaenv_(&c__9, "DBDSDC", " ", &c__0, &c__0, &c__0, &c__0);
|
88
|
+
ldvt = lsame_(&compq,"I") ? MAX(1,n) : 0;
|
89
|
+
{
|
90
|
+
na_shape_t shape[2];
|
91
|
+
shape[0] = lsame_(&compq,"I") ? ldu : 0;
|
92
|
+
shape[1] = lsame_(&compq,"I") ? n : 0;
|
93
|
+
rblapack_u = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
94
|
+
}
|
95
|
+
u = NA_PTR_TYPE(rblapack_u, doublereal*);
|
96
|
+
{
|
97
|
+
na_shape_t shape[2];
|
98
|
+
shape[0] = lsame_(&compq,"I") ? ldvt : 0;
|
99
|
+
shape[1] = lsame_(&compq,"I") ? n : 0;
|
100
|
+
rblapack_vt = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
101
|
+
}
|
102
|
+
vt = NA_PTR_TYPE(rblapack_vt, doublereal*);
|
103
|
+
{
|
104
|
+
na_shape_t shape[1];
|
105
|
+
shape[0] = lsame_(&compq,"I") ? (lsame_(&compq,"P") ? n*(11+2*smlsiz+8*(int)(log(((double)n)/(smlsiz+1))/log(2.0))) : 0) : 0;
|
106
|
+
rblapack_q = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
107
|
+
}
|
108
|
+
q = NA_PTR_TYPE(rblapack_q, doublereal*);
|
109
|
+
{
|
110
|
+
na_shape_t shape[1];
|
111
|
+
shape[0] = lsame_(&compq,"I") ? (lsame_(&compq,"P") ? n*(3+3*(int)(log(((double)n)/(smlsiz+1))/log(2.0))) : 0) : 0;
|
112
|
+
rblapack_iq = na_make_object(NA_LINT, 1, shape, cNArray);
|
113
|
+
}
|
114
|
+
iq = NA_PTR_TYPE(rblapack_iq, integer*);
|
115
|
+
{
|
116
|
+
na_shape_t shape[1];
|
117
|
+
shape[0] = n;
|
118
|
+
rblapack_d_out__ = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
119
|
+
}
|
120
|
+
d_out__ = NA_PTR_TYPE(rblapack_d_out__, doublereal*);
|
121
|
+
MEMCPY(d_out__, d, doublereal, NA_TOTAL(rblapack_d));
|
122
|
+
rblapack_d = rblapack_d_out__;
|
123
|
+
d = d_out__;
|
124
|
+
{
|
125
|
+
na_shape_t shape[1];
|
126
|
+
shape[0] = n-1;
|
127
|
+
rblapack_e_out__ = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
128
|
+
}
|
129
|
+
e_out__ = NA_PTR_TYPE(rblapack_e_out__, doublereal*);
|
130
|
+
MEMCPY(e_out__, e, doublereal, NA_TOTAL(rblapack_e));
|
131
|
+
rblapack_e = rblapack_e_out__;
|
132
|
+
e = e_out__;
|
133
|
+
work = ALLOC_N(doublereal, (MAX(1,lsame_(&compq,"N") ? 4*n : lsame_(&compq,"P") ? 6*n : lsame_(&compq,"I") ? 3*n*n+4*n : 0)));
|
134
|
+
iwork = ALLOC_N(integer, (8*n));
|
135
|
+
|
136
|
+
dbdsdc_(&uplo, &compq, &n, d, e, u, &ldu, vt, &ldvt, q, iq, work, iwork, &info);
|
137
|
+
|
138
|
+
free(work);
|
139
|
+
free(iwork);
|
140
|
+
rblapack_info = INT2NUM(info);
|
141
|
+
return rb_ary_new3(7, rblapack_u, rblapack_vt, rblapack_q, rblapack_iq, rblapack_info, rblapack_d, rblapack_e);
|
142
|
+
}
|
143
|
+
|
144
|
+
void
|
145
|
+
init_lapack_dbdsdc(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
146
|
+
sHelp = sH;
|
147
|
+
sUsage = sU;
|
148
|
+
rblapack_ZERO = zero;
|
149
|
+
|
150
|
+
rb_define_module_function(mLapack, "dbdsdc", rblapack_dbdsdc, -1);
|
151
|
+
}
|
data/ext/dbdsqr.c
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
#include "rb_lapack.h"
|
2
|
+
|
3
|
+
extern VOID dbdsqr_(char* uplo, integer* n, integer* ncvt, integer* nru, integer* ncc, doublereal* d, doublereal* e, doublereal* vt, integer* ldvt, doublereal* u, integer* ldu, doublereal* c, integer* ldc, doublereal* work, integer* info);
|
4
|
+
|
5
|
+
|
6
|
+
static VALUE
|
7
|
+
rblapack_dbdsqr(int argc, VALUE *argv, VALUE self){
|
8
|
+
VALUE rblapack_uplo;
|
9
|
+
char uplo;
|
10
|
+
VALUE rblapack_nru;
|
11
|
+
integer nru;
|
12
|
+
VALUE rblapack_d;
|
13
|
+
doublereal *d;
|
14
|
+
VALUE rblapack_e;
|
15
|
+
doublereal *e;
|
16
|
+
VALUE rblapack_vt;
|
17
|
+
doublereal *vt;
|
18
|
+
VALUE rblapack_u;
|
19
|
+
doublereal *u;
|
20
|
+
VALUE rblapack_c;
|
21
|
+
doublereal *c;
|
22
|
+
VALUE rblapack_info;
|
23
|
+
integer info;
|
24
|
+
VALUE rblapack_d_out__;
|
25
|
+
doublereal *d_out__;
|
26
|
+
VALUE rblapack_e_out__;
|
27
|
+
doublereal *e_out__;
|
28
|
+
VALUE rblapack_vt_out__;
|
29
|
+
doublereal *vt_out__;
|
30
|
+
VALUE rblapack_u_out__;
|
31
|
+
doublereal *u_out__;
|
32
|
+
VALUE rblapack_c_out__;
|
33
|
+
doublereal *c_out__;
|
34
|
+
doublereal *work;
|
35
|
+
|
36
|
+
integer n;
|
37
|
+
integer ldvt;
|
38
|
+
integer ncvt;
|
39
|
+
integer ldu;
|
40
|
+
integer ldc;
|
41
|
+
integer ncc;
|
42
|
+
|
43
|
+
VALUE rblapack_options;
|
44
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
45
|
+
argc--;
|
46
|
+
rblapack_options = argv[argc];
|
47
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
48
|
+
printf("%s\n", "USAGE:\n info, d, e, vt, u, c = NumRu::Lapack.dbdsqr( uplo, nru, d, e, vt, u, c, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE DBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO )\n\n* Purpose\n* =======\n*\n* DBDSQR computes the singular values and, optionally, the right and/or\n* left singular vectors from the singular value decomposition (SVD) of\n* a real N-by-N (upper or lower) bidiagonal matrix B using the implicit\n* zero-shift QR algorithm. The SVD of B has the form\n* \n* B = Q * S * P**T\n* \n* where S is the diagonal matrix of singular values, Q is an orthogonal\n* matrix of left singular vectors, and P is an orthogonal matrix of\n* right singular vectors. If left singular vectors are requested, this\n* subroutine actually returns U*Q instead of Q, and, if right singular\n* vectors are requested, this subroutine returns P**T*VT instead of\n* P**T, for given real input matrices U and VT. When U and VT are the\n* orthogonal matrices that reduce a general matrix A to bidiagonal\n* form: A = U*B*VT, as computed by DGEBRD, then\n*\n* A = (U*Q) * S * (P**T*VT)\n*\n* is the SVD of A. Optionally, the subroutine may also compute Q**T*C\n* for a given real input matrix C.\n*\n* See \"Computing Small Singular Values of Bidiagonal Matrices With\n* Guaranteed High Relative Accuracy,\" by J. Demmel and W. Kahan,\n* LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11,\n* no. 5, pp. 873-912, Sept 1990) and\n* \"Accurate singular values and differential qd algorithms,\" by\n* B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics\n* Department, University of California at Berkeley, July 1992\n* for a detailed description of the algorithm.\n*\n\n* Arguments\n* =========\n*\n* UPLO (input) CHARACTER*1\n* = 'U': B is upper bidiagonal;\n* = 'L': B is lower bidiagonal.\n*\n* N (input) INTEGER\n* The order of the matrix B. N >= 0.\n*\n* NCVT (input) INTEGER\n* The number of columns of the matrix VT. NCVT >= 0.\n*\n* NRU (input) INTEGER\n* The number of rows of the matrix U. NRU >= 0.\n*\n* NCC (input) INTEGER\n* The number of columns of the matrix C. NCC >= 0.\n*\n* D (input/output) DOUBLE PRECISION array, dimension (N)\n* On entry, the n diagonal elements of the bidiagonal matrix B.\n* On exit, if INFO=0, the singular values of B in decreasing\n* order.\n*\n* E (input/output) DOUBLE PRECISION array, dimension (N-1)\n* On entry, the N-1 offdiagonal elements of the bidiagonal\n* matrix B. \n* On exit, if INFO = 0, E is destroyed; if INFO > 0, D and E\n* will contain the diagonal and superdiagonal elements of a\n* bidiagonal matrix orthogonally equivalent to the one given\n* as input.\n*\n* VT (input/output) DOUBLE PRECISION array, dimension (LDVT, NCVT)\n* On entry, an N-by-NCVT matrix VT.\n* On exit, VT is overwritten by P**T * VT.\n* Not referenced if NCVT = 0.\n*\n* LDVT (input) INTEGER\n* The leading dimension of the array VT.\n* LDVT >= max(1,N) if NCVT > 0; LDVT >= 1 if NCVT = 0.\n*\n* U (input/output) DOUBLE PRECISION array, dimension (LDU, N)\n* On entry, an NRU-by-N matrix U.\n* On exit, U is overwritten by U * Q.\n* Not referenced if NRU = 0.\n*\n* LDU (input) INTEGER\n* The leading dimension of the array U. LDU >= max(1,NRU).\n*\n* C (input/output) DOUBLE PRECISION array, dimension (LDC, NCC)\n* On entry, an N-by-NCC matrix C.\n* On exit, C is overwritten by Q**T * C.\n* Not referenced if NCC = 0.\n*\n* LDC (input) INTEGER\n* The leading dimension of the array C.\n* LDC >= max(1,N) if NCC > 0; LDC >=1 if NCC = 0.\n*\n* WORK (workspace) DOUBLE PRECISION array, dimension (4*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:\n* if NCVT = NRU = NCC = 0,\n* = 1, a split was marked by a positive value in E\n* = 2, current block of Z not diagonalized after 30*N\n* iterations (in inner while loop)\n* = 3, termination criterion of outer while loop not met \n* (program created more than N unreduced blocks)\n* else NCVT = NRU = NCC = 0,\n* the algorithm did not converge; D and E contain the\n* elements of a bidiagonal matrix which is orthogonally\n* similar to the input matrix B; if INFO = i, i\n* elements of E have not converged to zero.\n*\n* Internal Parameters\n* ===================\n*\n* TOLMUL DOUBLE PRECISION, default = max(10,min(100,EPS**(-1/8)))\n* TOLMUL controls the convergence criterion of the QR loop.\n* If it is positive, TOLMUL*EPS is the desired relative\n* precision in the computed singular values.\n* If it is negative, abs(TOLMUL*EPS*sigma_max) is the\n* desired absolute accuracy in the computed singular\n* values (corresponds to relative accuracy\n* abs(TOLMUL*EPS) in the largest singular value.\n* abs(TOLMUL) should be between 1 and 1/EPS, and preferably\n* between 10 (for fast convergence) and .1/EPS\n* (for there to be some accuracy in the results).\n* Default is to lose at either one eighth or 2 of the\n* available decimal digits in each computed singular value\n* (whichever is smaller).\n*\n* MAXITR INTEGER, default = 6\n* MAXITR controls the maximum number of passes of the\n* algorithm through its inner loop. The algorithms stops\n* (and so fails to converge) if the number of passes\n* through the inner loop exceeds MAXITR*N**2.\n*\n\n* =====================================================================\n*\n\n");
|
49
|
+
return Qnil;
|
50
|
+
}
|
51
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
52
|
+
printf("%s\n", "USAGE:\n info, d, e, vt, u, c = NumRu::Lapack.dbdsqr( uplo, nru, d, e, vt, u, c, [:usage => usage, :help => help])\n");
|
53
|
+
return Qnil;
|
54
|
+
}
|
55
|
+
} else
|
56
|
+
rblapack_options = Qnil;
|
57
|
+
if (argc != 7 && argc != 7)
|
58
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 7)", argc);
|
59
|
+
rblapack_uplo = argv[0];
|
60
|
+
rblapack_nru = argv[1];
|
61
|
+
rblapack_d = argv[2];
|
62
|
+
rblapack_e = argv[3];
|
63
|
+
rblapack_vt = argv[4];
|
64
|
+
rblapack_u = argv[5];
|
65
|
+
rblapack_c = argv[6];
|
66
|
+
if (argc == 7) {
|
67
|
+
} else if (rblapack_options != Qnil) {
|
68
|
+
} else {
|
69
|
+
}
|
70
|
+
|
71
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
72
|
+
if (!NA_IsNArray(rblapack_d))
|
73
|
+
rb_raise(rb_eArgError, "d (3th argument) must be NArray");
|
74
|
+
if (NA_RANK(rblapack_d) != 1)
|
75
|
+
rb_raise(rb_eArgError, "rank of d (3th argument) must be %d", 1);
|
76
|
+
n = NA_SHAPE0(rblapack_d);
|
77
|
+
if (NA_TYPE(rblapack_d) != NA_DFLOAT)
|
78
|
+
rblapack_d = na_change_type(rblapack_d, NA_DFLOAT);
|
79
|
+
d = NA_PTR_TYPE(rblapack_d, doublereal*);
|
80
|
+
if (!NA_IsNArray(rblapack_vt))
|
81
|
+
rb_raise(rb_eArgError, "vt (5th argument) must be NArray");
|
82
|
+
if (NA_RANK(rblapack_vt) != 2)
|
83
|
+
rb_raise(rb_eArgError, "rank of vt (5th argument) must be %d", 2);
|
84
|
+
ldvt = NA_SHAPE0(rblapack_vt);
|
85
|
+
ncvt = NA_SHAPE1(rblapack_vt);
|
86
|
+
if (NA_TYPE(rblapack_vt) != NA_DFLOAT)
|
87
|
+
rblapack_vt = na_change_type(rblapack_vt, NA_DFLOAT);
|
88
|
+
vt = NA_PTR_TYPE(rblapack_vt, doublereal*);
|
89
|
+
if (!NA_IsNArray(rblapack_c))
|
90
|
+
rb_raise(rb_eArgError, "c (7th argument) must be NArray");
|
91
|
+
if (NA_RANK(rblapack_c) != 2)
|
92
|
+
rb_raise(rb_eArgError, "rank of c (7th argument) must be %d", 2);
|
93
|
+
ldc = NA_SHAPE0(rblapack_c);
|
94
|
+
ncc = NA_SHAPE1(rblapack_c);
|
95
|
+
if (NA_TYPE(rblapack_c) != NA_DFLOAT)
|
96
|
+
rblapack_c = na_change_type(rblapack_c, NA_DFLOAT);
|
97
|
+
c = NA_PTR_TYPE(rblapack_c, doublereal*);
|
98
|
+
nru = NUM2INT(rblapack_nru);
|
99
|
+
if (!NA_IsNArray(rblapack_u))
|
100
|
+
rb_raise(rb_eArgError, "u (6th argument) must be NArray");
|
101
|
+
if (NA_RANK(rblapack_u) != 2)
|
102
|
+
rb_raise(rb_eArgError, "rank of u (6th argument) must be %d", 2);
|
103
|
+
ldu = NA_SHAPE0(rblapack_u);
|
104
|
+
if (NA_SHAPE1(rblapack_u) != n)
|
105
|
+
rb_raise(rb_eRuntimeError, "shape 1 of u must be the same as shape 0 of d");
|
106
|
+
if (NA_TYPE(rblapack_u) != NA_DFLOAT)
|
107
|
+
rblapack_u = na_change_type(rblapack_u, NA_DFLOAT);
|
108
|
+
u = NA_PTR_TYPE(rblapack_u, doublereal*);
|
109
|
+
if (!NA_IsNArray(rblapack_e))
|
110
|
+
rb_raise(rb_eArgError, "e (4th argument) must be NArray");
|
111
|
+
if (NA_RANK(rblapack_e) != 1)
|
112
|
+
rb_raise(rb_eArgError, "rank of e (4th argument) must be %d", 1);
|
113
|
+
if (NA_SHAPE0(rblapack_e) != (n-1))
|
114
|
+
rb_raise(rb_eRuntimeError, "shape 0 of e must be %d", n-1);
|
115
|
+
if (NA_TYPE(rblapack_e) != NA_DFLOAT)
|
116
|
+
rblapack_e = na_change_type(rblapack_e, NA_DFLOAT);
|
117
|
+
e = NA_PTR_TYPE(rblapack_e, doublereal*);
|
118
|
+
{
|
119
|
+
na_shape_t shape[1];
|
120
|
+
shape[0] = n;
|
121
|
+
rblapack_d_out__ = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
122
|
+
}
|
123
|
+
d_out__ = NA_PTR_TYPE(rblapack_d_out__, doublereal*);
|
124
|
+
MEMCPY(d_out__, d, doublereal, NA_TOTAL(rblapack_d));
|
125
|
+
rblapack_d = rblapack_d_out__;
|
126
|
+
d = d_out__;
|
127
|
+
{
|
128
|
+
na_shape_t shape[1];
|
129
|
+
shape[0] = n-1;
|
130
|
+
rblapack_e_out__ = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
131
|
+
}
|
132
|
+
e_out__ = NA_PTR_TYPE(rblapack_e_out__, doublereal*);
|
133
|
+
MEMCPY(e_out__, e, doublereal, NA_TOTAL(rblapack_e));
|
134
|
+
rblapack_e = rblapack_e_out__;
|
135
|
+
e = e_out__;
|
136
|
+
{
|
137
|
+
na_shape_t shape[2];
|
138
|
+
shape[0] = ldvt;
|
139
|
+
shape[1] = ncvt;
|
140
|
+
rblapack_vt_out__ = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
141
|
+
}
|
142
|
+
vt_out__ = NA_PTR_TYPE(rblapack_vt_out__, doublereal*);
|
143
|
+
MEMCPY(vt_out__, vt, doublereal, NA_TOTAL(rblapack_vt));
|
144
|
+
rblapack_vt = rblapack_vt_out__;
|
145
|
+
vt = vt_out__;
|
146
|
+
{
|
147
|
+
na_shape_t shape[2];
|
148
|
+
shape[0] = ldu;
|
149
|
+
shape[1] = n;
|
150
|
+
rblapack_u_out__ = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
151
|
+
}
|
152
|
+
u_out__ = NA_PTR_TYPE(rblapack_u_out__, doublereal*);
|
153
|
+
MEMCPY(u_out__, u, doublereal, NA_TOTAL(rblapack_u));
|
154
|
+
rblapack_u = rblapack_u_out__;
|
155
|
+
u = u_out__;
|
156
|
+
{
|
157
|
+
na_shape_t shape[2];
|
158
|
+
shape[0] = ldc;
|
159
|
+
shape[1] = ncc;
|
160
|
+
rblapack_c_out__ = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
161
|
+
}
|
162
|
+
c_out__ = NA_PTR_TYPE(rblapack_c_out__, doublereal*);
|
163
|
+
MEMCPY(c_out__, c, doublereal, NA_TOTAL(rblapack_c));
|
164
|
+
rblapack_c = rblapack_c_out__;
|
165
|
+
c = c_out__;
|
166
|
+
work = ALLOC_N(doublereal, (4*n));
|
167
|
+
|
168
|
+
dbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info);
|
169
|
+
|
170
|
+
free(work);
|
171
|
+
rblapack_info = INT2NUM(info);
|
172
|
+
return rb_ary_new3(6, rblapack_info, rblapack_d, rblapack_e, rblapack_vt, rblapack_u, rblapack_c);
|
173
|
+
}
|
174
|
+
|
175
|
+
void
|
176
|
+
init_lapack_dbdsqr(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
177
|
+
sHelp = sH;
|
178
|
+
sUsage = sU;
|
179
|
+
rblapack_ZERO = zero;
|
180
|
+
|
181
|
+
rb_define_module_function(mLapack, "dbdsqr", rblapack_dbdsqr, -1);
|
182
|
+
}
|
data/ext/ddisna.c
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#include "rb_lapack.h"
|
2
|
+
|
3
|
+
extern VOID ddisna_(char* job, integer* m, integer* n, doublereal* d, doublereal* sep, integer* info);
|
4
|
+
|
5
|
+
|
6
|
+
static VALUE
|
7
|
+
rblapack_ddisna(int argc, VALUE *argv, VALUE self){
|
8
|
+
VALUE rblapack_job;
|
9
|
+
char job;
|
10
|
+
VALUE rblapack_n;
|
11
|
+
integer n;
|
12
|
+
VALUE rblapack_d;
|
13
|
+
doublereal *d;
|
14
|
+
VALUE rblapack_sep;
|
15
|
+
doublereal *sep;
|
16
|
+
VALUE rblapack_info;
|
17
|
+
integer info;
|
18
|
+
|
19
|
+
integer m;
|
20
|
+
|
21
|
+
VALUE rblapack_options;
|
22
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
23
|
+
argc--;
|
24
|
+
rblapack_options = argv[argc];
|
25
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
26
|
+
printf("%s\n", "USAGE:\n sep, info = NumRu::Lapack.ddisna( job, n, d, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE DDISNA( JOB, M, N, D, SEP, INFO )\n\n* Purpose\n* =======\n*\n* DDISNA computes the reciprocal condition numbers for the eigenvectors\n* of a real symmetric or complex Hermitian matrix or for the left or\n* right singular vectors of a general m-by-n matrix. The reciprocal\n* condition number is the 'gap' between the corresponding eigenvalue or\n* singular value and the nearest other one.\n*\n* The bound on the error, measured by angle in radians, in the I-th\n* computed vector is given by\n*\n* DLAMCH( 'E' ) * ( ANORM / SEP( I ) )\n*\n* where ANORM = 2-norm(A) = max( abs( D(j) ) ). SEP(I) is not allowed\n* to be smaller than DLAMCH( 'E' )*ANORM in order to limit the size of\n* the error bound.\n*\n* DDISNA may also be used to compute error bounds for eigenvectors of\n* the generalized symmetric definite eigenproblem.\n*\n\n* Arguments\n* =========\n*\n* JOB (input) CHARACTER*1\n* Specifies for which problem the reciprocal condition numbers\n* should be computed:\n* = 'E': the eigenvectors of a symmetric/Hermitian matrix;\n* = 'L': the left singular vectors of a general matrix;\n* = 'R': the right singular vectors of a general matrix.\n*\n* M (input) INTEGER\n* The number of rows of the matrix. M >= 0.\n*\n* N (input) INTEGER\n* If JOB = 'L' or 'R', the number of columns of the matrix,\n* in which case N >= 0. Ignored if JOB = 'E'.\n*\n* D (input) DOUBLE PRECISION array, dimension (M) if JOB = 'E'\n* dimension (min(M,N)) if JOB = 'L' or 'R'\n* The eigenvalues (if JOB = 'E') or singular values (if JOB =\n* 'L' or 'R') of the matrix, in either increasing or decreasing\n* order. If singular values, they must be non-negative.\n*\n* SEP (output) DOUBLE PRECISION array, dimension (M) if JOB = 'E'\n* dimension (min(M,N)) if JOB = 'L' or 'R'\n* The reciprocal condition numbers of the vectors.\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");
|
27
|
+
return Qnil;
|
28
|
+
}
|
29
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
30
|
+
printf("%s\n", "USAGE:\n sep, info = NumRu::Lapack.ddisna( job, n, d, [:usage => usage, :help => help])\n");
|
31
|
+
return Qnil;
|
32
|
+
}
|
33
|
+
} else
|
34
|
+
rblapack_options = Qnil;
|
35
|
+
if (argc != 3 && argc != 3)
|
36
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 3)", argc);
|
37
|
+
rblapack_job = argv[0];
|
38
|
+
rblapack_n = argv[1];
|
39
|
+
rblapack_d = argv[2];
|
40
|
+
if (argc == 3) {
|
41
|
+
} else if (rblapack_options != Qnil) {
|
42
|
+
} else {
|
43
|
+
}
|
44
|
+
|
45
|
+
job = StringValueCStr(rblapack_job)[0];
|
46
|
+
if (!NA_IsNArray(rblapack_d))
|
47
|
+
rb_raise(rb_eArgError, "d (3th argument) must be NArray");
|
48
|
+
if (NA_RANK(rblapack_d) != 1)
|
49
|
+
rb_raise(rb_eArgError, "rank of d (3th argument) must be %d", 1);
|
50
|
+
m = NA_SHAPE0(rblapack_d);
|
51
|
+
if (NA_TYPE(rblapack_d) != NA_DFLOAT)
|
52
|
+
rblapack_d = na_change_type(rblapack_d, NA_DFLOAT);
|
53
|
+
d = NA_PTR_TYPE(rblapack_d, doublereal*);
|
54
|
+
n = NUM2INT(rblapack_n);
|
55
|
+
{
|
56
|
+
na_shape_t shape[1];
|
57
|
+
shape[0] = lsame_(&job,"E") ? m : ((lsame_(&job,"L")) || (lsame_(&job,"R"))) ? MIN(m,n) : 0;
|
58
|
+
rblapack_sep = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
59
|
+
}
|
60
|
+
sep = NA_PTR_TYPE(rblapack_sep, doublereal*);
|
61
|
+
|
62
|
+
ddisna_(&job, &m, &n, d, sep, &info);
|
63
|
+
|
64
|
+
rblapack_info = INT2NUM(info);
|
65
|
+
return rb_ary_new3(2, rblapack_sep, rblapack_info);
|
66
|
+
}
|
67
|
+
|
68
|
+
void
|
69
|
+
init_lapack_ddisna(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
70
|
+
sHelp = sH;
|
71
|
+
sUsage = sU;
|
72
|
+
rblapack_ZERO = zero;
|
73
|
+
|
74
|
+
rb_define_module_function(mLapack, "ddisna", rblapack_ddisna, -1);
|
75
|
+
}
|
data/ext/dgbbrd.c
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
#include "rb_lapack.h"
|
2
|
+
|
3
|
+
extern VOID dgbbrd_(char* vect, integer* m, integer* n, integer* ncc, integer* kl, integer* ku, doublereal* ab, integer* ldab, doublereal* d, doublereal* e, doublereal* q, integer* ldq, doublereal* pt, integer* ldpt, doublereal* c, integer* ldc, doublereal* work, integer* info);
|
4
|
+
|
5
|
+
|
6
|
+
static VALUE
|
7
|
+
rblapack_dgbbrd(int argc, VALUE *argv, VALUE self){
|
8
|
+
VALUE rblapack_vect;
|
9
|
+
char vect;
|
10
|
+
VALUE rblapack_kl;
|
11
|
+
integer kl;
|
12
|
+
VALUE rblapack_ku;
|
13
|
+
integer ku;
|
14
|
+
VALUE rblapack_ab;
|
15
|
+
doublereal *ab;
|
16
|
+
VALUE rblapack_c;
|
17
|
+
doublereal *c;
|
18
|
+
VALUE rblapack_d;
|
19
|
+
doublereal *d;
|
20
|
+
VALUE rblapack_e;
|
21
|
+
doublereal *e;
|
22
|
+
VALUE rblapack_q;
|
23
|
+
doublereal *q;
|
24
|
+
VALUE rblapack_pt;
|
25
|
+
doublereal *pt;
|
26
|
+
VALUE rblapack_info;
|
27
|
+
integer info;
|
28
|
+
VALUE rblapack_ab_out__;
|
29
|
+
doublereal *ab_out__;
|
30
|
+
VALUE rblapack_c_out__;
|
31
|
+
doublereal *c_out__;
|
32
|
+
doublereal *work;
|
33
|
+
|
34
|
+
integer ldab;
|
35
|
+
integer n;
|
36
|
+
integer ldc;
|
37
|
+
integer ncc;
|
38
|
+
integer ldq;
|
39
|
+
integer m;
|
40
|
+
integer ldpt;
|
41
|
+
|
42
|
+
VALUE rblapack_options;
|
43
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
44
|
+
argc--;
|
45
|
+
rblapack_options = argv[argc];
|
46
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
47
|
+
printf("%s\n", "USAGE:\n d, e, q, pt, info, ab, c = NumRu::Lapack.dgbbrd( vect, kl, ku, ab, c, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE DGBBRD( VECT, M, N, NCC, KL, KU, AB, LDAB, D, E, Q, LDQ, PT, LDPT, C, LDC, WORK, INFO )\n\n* Purpose\n* =======\n*\n* DGBBRD reduces a real general m-by-n band matrix A to upper\n* bidiagonal form B by an orthogonal transformation: Q' * A * P = B.\n*\n* The routine computes B, and optionally forms Q or P', or computes\n* Q'*C for a given matrix C.\n*\n\n* Arguments\n* =========\n*\n* VECT (input) CHARACTER*1\n* Specifies whether or not the matrices Q and P' are to be\n* formed.\n* = 'N': do not form Q or P';\n* = 'Q': form Q only;\n* = 'P': form P' only;\n* = 'B': form both.\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 matrix A. N >= 0.\n*\n* NCC (input) INTEGER\n* The number of columns of the matrix C. NCC >= 0.\n*\n* KL (input) INTEGER\n* The number of subdiagonals of the matrix A. KL >= 0.\n*\n* KU (input) INTEGER\n* The number of superdiagonals of the matrix A. KU >= 0.\n*\n* AB (input/output) DOUBLE PRECISION array, dimension (LDAB,N)\n* On entry, the m-by-n band matrix A, stored in rows 1 to\n* KL+KU+1. The j-th column of A is stored in the j-th column of\n* the array AB as follows:\n* AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl).\n* On exit, A is overwritten by values generated during the\n* reduction.\n*\n* LDAB (input) INTEGER\n* The leading dimension of the array A. LDAB >= KL+KU+1.\n*\n* D (output) DOUBLE PRECISION array, dimension (min(M,N))\n* The diagonal elements of the bidiagonal matrix B.\n*\n* E (output) DOUBLE PRECISION array, dimension (min(M,N)-1)\n* The superdiagonal elements of the bidiagonal matrix B.\n*\n* Q (output) DOUBLE PRECISION array, dimension (LDQ,M)\n* If VECT = 'Q' or 'B', the m-by-m orthogonal matrix Q.\n* If VECT = 'N' or 'P', the array Q is not referenced.\n*\n* LDQ (input) INTEGER\n* The leading dimension of the array Q.\n* LDQ >= max(1,M) if VECT = 'Q' or 'B'; LDQ >= 1 otherwise.\n*\n* PT (output) DOUBLE PRECISION array, dimension (LDPT,N)\n* If VECT = 'P' or 'B', the n-by-n orthogonal matrix P'.\n* If VECT = 'N' or 'Q', the array PT is not referenced.\n*\n* LDPT (input) INTEGER\n* The leading dimension of the array PT.\n* LDPT >= max(1,N) if VECT = 'P' or 'B'; LDPT >= 1 otherwise.\n*\n* C (input/output) DOUBLE PRECISION array, dimension (LDC,NCC)\n* On entry, an m-by-ncc matrix C.\n* On exit, C is overwritten by Q'*C.\n* C is not referenced if NCC = 0.\n*\n* LDC (input) INTEGER\n* The leading dimension of the array C.\n* LDC >= max(1,M) if NCC > 0; LDC >= 1 if NCC = 0.\n*\n* WORK (workspace) DOUBLE PRECISION array, dimension (2*max(M,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");
|
48
|
+
return Qnil;
|
49
|
+
}
|
50
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
51
|
+
printf("%s\n", "USAGE:\n d, e, q, pt, info, ab, c = NumRu::Lapack.dgbbrd( vect, kl, ku, ab, c, [:usage => usage, :help => help])\n");
|
52
|
+
return Qnil;
|
53
|
+
}
|
54
|
+
} else
|
55
|
+
rblapack_options = Qnil;
|
56
|
+
if (argc != 5 && argc != 5)
|
57
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 5)", argc);
|
58
|
+
rblapack_vect = argv[0];
|
59
|
+
rblapack_kl = argv[1];
|
60
|
+
rblapack_ku = argv[2];
|
61
|
+
rblapack_ab = argv[3];
|
62
|
+
rblapack_c = argv[4];
|
63
|
+
if (argc == 5) {
|
64
|
+
} else if (rblapack_options != Qnil) {
|
65
|
+
} else {
|
66
|
+
}
|
67
|
+
|
68
|
+
vect = StringValueCStr(rblapack_vect)[0];
|
69
|
+
ku = NUM2INT(rblapack_ku);
|
70
|
+
if (!NA_IsNArray(rblapack_c))
|
71
|
+
rb_raise(rb_eArgError, "c (5th argument) must be NArray");
|
72
|
+
if (NA_RANK(rblapack_c) != 2)
|
73
|
+
rb_raise(rb_eArgError, "rank of c (5th argument) must be %d", 2);
|
74
|
+
ldc = NA_SHAPE0(rblapack_c);
|
75
|
+
ncc = NA_SHAPE1(rblapack_c);
|
76
|
+
if (NA_TYPE(rblapack_c) != NA_DFLOAT)
|
77
|
+
rblapack_c = na_change_type(rblapack_c, NA_DFLOAT);
|
78
|
+
c = NA_PTR_TYPE(rblapack_c, doublereal*);
|
79
|
+
kl = NUM2INT(rblapack_kl);
|
80
|
+
if (!NA_IsNArray(rblapack_ab))
|
81
|
+
rb_raise(rb_eArgError, "ab (4th argument) must be NArray");
|
82
|
+
if (NA_RANK(rblapack_ab) != 2)
|
83
|
+
rb_raise(rb_eArgError, "rank of ab (4th argument) must be %d", 2);
|
84
|
+
ldab = NA_SHAPE0(rblapack_ab);
|
85
|
+
n = NA_SHAPE1(rblapack_ab);
|
86
|
+
if (NA_TYPE(rblapack_ab) != NA_DFLOAT)
|
87
|
+
rblapack_ab = na_change_type(rblapack_ab, NA_DFLOAT);
|
88
|
+
ab = NA_PTR_TYPE(rblapack_ab, doublereal*);
|
89
|
+
ldpt = ((lsame_(&vect,"P")) || (lsame_(&vect,"B"))) ? MAX(1,n) : 1;
|
90
|
+
m = ldab;
|
91
|
+
ldq = ((lsame_(&vect,"Q")) || (lsame_(&vect,"B"))) ? MAX(1,m) : 1;
|
92
|
+
{
|
93
|
+
na_shape_t shape[1];
|
94
|
+
shape[0] = MIN(m,n);
|
95
|
+
rblapack_d = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
96
|
+
}
|
97
|
+
d = NA_PTR_TYPE(rblapack_d, doublereal*);
|
98
|
+
{
|
99
|
+
na_shape_t shape[1];
|
100
|
+
shape[0] = MIN(m,n)-1;
|
101
|
+
rblapack_e = na_make_object(NA_DFLOAT, 1, shape, cNArray);
|
102
|
+
}
|
103
|
+
e = NA_PTR_TYPE(rblapack_e, doublereal*);
|
104
|
+
{
|
105
|
+
na_shape_t shape[2];
|
106
|
+
shape[0] = ldq;
|
107
|
+
shape[1] = m;
|
108
|
+
rblapack_q = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
109
|
+
}
|
110
|
+
q = NA_PTR_TYPE(rblapack_q, doublereal*);
|
111
|
+
{
|
112
|
+
na_shape_t shape[2];
|
113
|
+
shape[0] = ldpt;
|
114
|
+
shape[1] = n;
|
115
|
+
rblapack_pt = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
116
|
+
}
|
117
|
+
pt = NA_PTR_TYPE(rblapack_pt, doublereal*);
|
118
|
+
{
|
119
|
+
na_shape_t shape[2];
|
120
|
+
shape[0] = ldab;
|
121
|
+
shape[1] = n;
|
122
|
+
rblapack_ab_out__ = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
123
|
+
}
|
124
|
+
ab_out__ = NA_PTR_TYPE(rblapack_ab_out__, doublereal*);
|
125
|
+
MEMCPY(ab_out__, ab, doublereal, NA_TOTAL(rblapack_ab));
|
126
|
+
rblapack_ab = rblapack_ab_out__;
|
127
|
+
ab = ab_out__;
|
128
|
+
{
|
129
|
+
na_shape_t shape[2];
|
130
|
+
shape[0] = ldc;
|
131
|
+
shape[1] = ncc;
|
132
|
+
rblapack_c_out__ = na_make_object(NA_DFLOAT, 2, shape, cNArray);
|
133
|
+
}
|
134
|
+
c_out__ = NA_PTR_TYPE(rblapack_c_out__, doublereal*);
|
135
|
+
MEMCPY(c_out__, c, doublereal, NA_TOTAL(rblapack_c));
|
136
|
+
rblapack_c = rblapack_c_out__;
|
137
|
+
c = c_out__;
|
138
|
+
work = ALLOC_N(doublereal, (2*MAX(m,n)));
|
139
|
+
|
140
|
+
dgbbrd_(&vect, &m, &n, &ncc, &kl, &ku, ab, &ldab, d, e, q, &ldq, pt, &ldpt, c, &ldc, work, &info);
|
141
|
+
|
142
|
+
free(work);
|
143
|
+
rblapack_info = INT2NUM(info);
|
144
|
+
return rb_ary_new3(7, rblapack_d, rblapack_e, rblapack_q, rblapack_pt, rblapack_info, rblapack_ab, rblapack_c);
|
145
|
+
}
|
146
|
+
|
147
|
+
void
|
148
|
+
init_lapack_dgbbrd(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
149
|
+
sHelp = sH;
|
150
|
+
sUsage = sU;
|
151
|
+
rblapack_ZERO = zero;
|
152
|
+
|
153
|
+
rb_define_module_function(mLapack, "dgbbrd", rblapack_dgbbrd, -1);
|
154
|
+
}
|