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/ctbcon.c
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID ctbcon_(char* norm, char* uplo, char* diag, integer* n, integer* kd, complex* ab, integer* ldab, real* rcond, complex* work, real* rwork, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_ctbcon(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_norm;
|
|
9
|
+
char norm;
|
|
10
|
+
VALUE rblapack_uplo;
|
|
11
|
+
char uplo;
|
|
12
|
+
VALUE rblapack_diag;
|
|
13
|
+
char diag;
|
|
14
|
+
VALUE rblapack_kd;
|
|
15
|
+
integer kd;
|
|
16
|
+
VALUE rblapack_ab;
|
|
17
|
+
complex *ab;
|
|
18
|
+
VALUE rblapack_rcond;
|
|
19
|
+
real rcond;
|
|
20
|
+
VALUE rblapack_info;
|
|
21
|
+
integer info;
|
|
22
|
+
complex *work;
|
|
23
|
+
real *rwork;
|
|
24
|
+
|
|
25
|
+
integer ldab;
|
|
26
|
+
integer n;
|
|
27
|
+
|
|
28
|
+
VALUE rblapack_options;
|
|
29
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
30
|
+
argc--;
|
|
31
|
+
rblapack_options = argv[argc];
|
|
32
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
33
|
+
printf("%s\n", "USAGE:\n rcond, info = NumRu::Lapack.ctbcon( norm, uplo, diag, kd, ab, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE CTBCON( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, RWORK, INFO )\n\n* Purpose\n* =======\n*\n* CTBCON estimates the reciprocal of the condition number of a\n* triangular band matrix A, in either the 1-norm or the infinity-norm.\n*\n* The norm of A is computed and an estimate is obtained for\n* norm(inv(A)), then the reciprocal of the condition number is\n* computed as\n* RCOND = 1 / ( norm(A) * 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* UPLO (input) CHARACTER*1\n* = 'U': A is upper triangular;\n* = 'L': A is lower triangular.\n*\n* DIAG (input) CHARACTER*1\n* = 'N': A is non-unit triangular;\n* = 'U': A is unit triangular.\n*\n* N (input) INTEGER\n* The order of the matrix A. N >= 0.\n*\n* KD (input) INTEGER\n* The number of superdiagonals or subdiagonals of the\n* triangular band matrix A. KD >= 0.\n*\n* AB (input) COMPLEX array, dimension (LDAB,N)\n* The upper or lower triangular band matrix A, stored in the\n* first kd+1 rows of the array. The j-th column of A is stored\n* in the j-th column of the array AB as follows:\n* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;\n* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).\n* If DIAG = 'U', the diagonal elements of A are not referenced\n* and are assumed to be 1.\n*\n* LDAB (input) INTEGER\n* The leading dimension of the array AB. LDAB >= KD+1.\n*\n* RCOND (output) REAL\n* The reciprocal of the condition number of the matrix A,\n* computed as RCOND = 1/(norm(A) * norm(inv(A))).\n*\n* WORK (workspace) COMPLEX array, dimension (2*N)\n*\n* RWORK (workspace) REAL array, dimension (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");
|
|
34
|
+
return Qnil;
|
|
35
|
+
}
|
|
36
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
37
|
+
printf("%s\n", "USAGE:\n rcond, info = NumRu::Lapack.ctbcon( norm, uplo, diag, kd, ab, [:usage => usage, :help => help])\n");
|
|
38
|
+
return Qnil;
|
|
39
|
+
}
|
|
40
|
+
} else
|
|
41
|
+
rblapack_options = Qnil;
|
|
42
|
+
if (argc != 5 && argc != 5)
|
|
43
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 5)", argc);
|
|
44
|
+
rblapack_norm = argv[0];
|
|
45
|
+
rblapack_uplo = argv[1];
|
|
46
|
+
rblapack_diag = argv[2];
|
|
47
|
+
rblapack_kd = argv[3];
|
|
48
|
+
rblapack_ab = argv[4];
|
|
49
|
+
if (argc == 5) {
|
|
50
|
+
} else if (rblapack_options != Qnil) {
|
|
51
|
+
} else {
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
norm = StringValueCStr(rblapack_norm)[0];
|
|
55
|
+
diag = StringValueCStr(rblapack_diag)[0];
|
|
56
|
+
if (!NA_IsNArray(rblapack_ab))
|
|
57
|
+
rb_raise(rb_eArgError, "ab (5th argument) must be NArray");
|
|
58
|
+
if (NA_RANK(rblapack_ab) != 2)
|
|
59
|
+
rb_raise(rb_eArgError, "rank of ab (5th argument) must be %d", 2);
|
|
60
|
+
ldab = NA_SHAPE0(rblapack_ab);
|
|
61
|
+
n = NA_SHAPE1(rblapack_ab);
|
|
62
|
+
if (NA_TYPE(rblapack_ab) != NA_SCOMPLEX)
|
|
63
|
+
rblapack_ab = na_change_type(rblapack_ab, NA_SCOMPLEX);
|
|
64
|
+
ab = NA_PTR_TYPE(rblapack_ab, complex*);
|
|
65
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
|
66
|
+
kd = NUM2INT(rblapack_kd);
|
|
67
|
+
work = ALLOC_N(complex, (2*n));
|
|
68
|
+
rwork = ALLOC_N(real, (n));
|
|
69
|
+
|
|
70
|
+
ctbcon_(&norm, &uplo, &diag, &n, &kd, ab, &ldab, &rcond, work, rwork, &info);
|
|
71
|
+
|
|
72
|
+
free(work);
|
|
73
|
+
free(rwork);
|
|
74
|
+
rblapack_rcond = rb_float_new((double)rcond);
|
|
75
|
+
rblapack_info = INT2NUM(info);
|
|
76
|
+
return rb_ary_new3(2, rblapack_rcond, rblapack_info);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
void
|
|
80
|
+
init_lapack_ctbcon(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
81
|
+
sHelp = sH;
|
|
82
|
+
sUsage = sU;
|
|
83
|
+
rblapack_ZERO = zero;
|
|
84
|
+
|
|
85
|
+
rb_define_module_function(mLapack, "ctbcon", rblapack_ctbcon, -1);
|
|
86
|
+
}
|
data/ext/ctbrfs.c
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID ctbrfs_(char* uplo, char* trans, char* diag, integer* n, integer* kd, integer* nrhs, complex* ab, integer* ldab, complex* b, integer* ldb, complex* x, integer* ldx, real* ferr, real* berr, complex* work, real* rwork, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_ctbrfs(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_uplo;
|
|
9
|
+
char uplo;
|
|
10
|
+
VALUE rblapack_trans;
|
|
11
|
+
char trans;
|
|
12
|
+
VALUE rblapack_diag;
|
|
13
|
+
char diag;
|
|
14
|
+
VALUE rblapack_kd;
|
|
15
|
+
integer kd;
|
|
16
|
+
VALUE rblapack_ab;
|
|
17
|
+
complex *ab;
|
|
18
|
+
VALUE rblapack_b;
|
|
19
|
+
complex *b;
|
|
20
|
+
VALUE rblapack_x;
|
|
21
|
+
complex *x;
|
|
22
|
+
VALUE rblapack_ferr;
|
|
23
|
+
real *ferr;
|
|
24
|
+
VALUE rblapack_berr;
|
|
25
|
+
real *berr;
|
|
26
|
+
VALUE rblapack_info;
|
|
27
|
+
integer info;
|
|
28
|
+
complex *work;
|
|
29
|
+
real *rwork;
|
|
30
|
+
|
|
31
|
+
integer ldab;
|
|
32
|
+
integer n;
|
|
33
|
+
integer ldb;
|
|
34
|
+
integer nrhs;
|
|
35
|
+
integer ldx;
|
|
36
|
+
|
|
37
|
+
VALUE rblapack_options;
|
|
38
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
39
|
+
argc--;
|
|
40
|
+
rblapack_options = argv[argc];
|
|
41
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
42
|
+
printf("%s\n", "USAGE:\n ferr, berr, info = NumRu::Lapack.ctbrfs( uplo, trans, diag, kd, ab, b, x, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE CTBRFS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO )\n\n* Purpose\n* =======\n*\n* CTBRFS provides error bounds and backward error estimates for the\n* solution to a system of linear equations with a triangular band\n* coefficient matrix.\n*\n* The solution matrix X must be computed by CTBTRS or some other\n* means before entering this routine. CTBRFS does not do iterative\n* refinement because doing so cannot improve the backward error.\n*\n\n* Arguments\n* =========\n*\n* UPLO (input) CHARACTER*1\n* = 'U': A is upper triangular;\n* = 'L': A is lower triangular.\n*\n* TRANS (input) CHARACTER*1\n* Specifies the form of the system of equations:\n* = 'N': A * X = B (No transpose)\n* = 'T': A**T * X = B (Transpose)\n* = 'C': A**H * X = B (Conjugate transpose)\n*\n* DIAG (input) CHARACTER*1\n* = 'N': A is non-unit triangular;\n* = 'U': A is unit triangular.\n*\n* N (input) INTEGER\n* The order of the matrix A. N >= 0.\n*\n* KD (input) INTEGER\n* The number of superdiagonals or subdiagonals of the\n* triangular band matrix A. KD >= 0.\n*\n* NRHS (input) INTEGER\n* The number of right hand sides, i.e., the number of columns\n* of the matrices B and X. NRHS >= 0.\n*\n* AB (input) COMPLEX array, dimension (LDAB,N)\n* The upper or lower triangular band matrix A, stored in the\n* first kd+1 rows of the array. The j-th column of A is stored\n* in the j-th column of the array AB as follows:\n* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;\n* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).\n* If DIAG = 'U', the diagonal elements of A are not referenced\n* and are assumed to be 1.\n*\n* LDAB (input) INTEGER\n* The leading dimension of the array AB. LDAB >= KD+1.\n*\n* B (input) COMPLEX array, dimension (LDB,NRHS)\n* The right hand side matrix B.\n*\n* LDB (input) INTEGER\n* The leading dimension of the array B. LDB >= max(1,N).\n*\n* X (input) COMPLEX array, dimension (LDX,NRHS)\n* The solution matrix X.\n*\n* LDX (input) INTEGER\n* The leading dimension of the array X. LDX >= max(1,N).\n*\n* FERR (output) REAL array, dimension (NRHS)\n* The estimated forward error bound for each solution vector\n* X(j) (the j-th column of the solution matrix X).\n* If XTRUE is the true solution corresponding to X(j), FERR(j)\n* is an estimated upper bound for the magnitude of the largest\n* element in (X(j) - XTRUE) divided by the magnitude of the\n* largest element in X(j). The estimate is as reliable as\n* the estimate for RCOND, and is almost always a slight\n* overestimate of the true error.\n*\n* BERR (output) REAL array, dimension (NRHS)\n* The componentwise relative backward error of each solution\n* vector X(j) (i.e., the smallest relative change in\n* any element of A or B that makes X(j) an exact solution).\n*\n* WORK (workspace) COMPLEX array, dimension (2*N)\n*\n* RWORK (workspace) REAL array, dimension (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");
|
|
43
|
+
return Qnil;
|
|
44
|
+
}
|
|
45
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
46
|
+
printf("%s\n", "USAGE:\n ferr, berr, info = NumRu::Lapack.ctbrfs( uplo, trans, diag, kd, ab, b, x, [:usage => usage, :help => help])\n");
|
|
47
|
+
return Qnil;
|
|
48
|
+
}
|
|
49
|
+
} else
|
|
50
|
+
rblapack_options = Qnil;
|
|
51
|
+
if (argc != 7 && argc != 7)
|
|
52
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 7)", argc);
|
|
53
|
+
rblapack_uplo = argv[0];
|
|
54
|
+
rblapack_trans = argv[1];
|
|
55
|
+
rblapack_diag = argv[2];
|
|
56
|
+
rblapack_kd = argv[3];
|
|
57
|
+
rblapack_ab = argv[4];
|
|
58
|
+
rblapack_b = argv[5];
|
|
59
|
+
rblapack_x = argv[6];
|
|
60
|
+
if (argc == 7) {
|
|
61
|
+
} else if (rblapack_options != Qnil) {
|
|
62
|
+
} else {
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
|
66
|
+
diag = StringValueCStr(rblapack_diag)[0];
|
|
67
|
+
if (!NA_IsNArray(rblapack_ab))
|
|
68
|
+
rb_raise(rb_eArgError, "ab (5th argument) must be NArray");
|
|
69
|
+
if (NA_RANK(rblapack_ab) != 2)
|
|
70
|
+
rb_raise(rb_eArgError, "rank of ab (5th argument) must be %d", 2);
|
|
71
|
+
ldab = NA_SHAPE0(rblapack_ab);
|
|
72
|
+
n = NA_SHAPE1(rblapack_ab);
|
|
73
|
+
if (NA_TYPE(rblapack_ab) != NA_SCOMPLEX)
|
|
74
|
+
rblapack_ab = na_change_type(rblapack_ab, NA_SCOMPLEX);
|
|
75
|
+
ab = NA_PTR_TYPE(rblapack_ab, complex*);
|
|
76
|
+
if (!NA_IsNArray(rblapack_x))
|
|
77
|
+
rb_raise(rb_eArgError, "x (7th argument) must be NArray");
|
|
78
|
+
if (NA_RANK(rblapack_x) != 2)
|
|
79
|
+
rb_raise(rb_eArgError, "rank of x (7th argument) must be %d", 2);
|
|
80
|
+
ldx = NA_SHAPE0(rblapack_x);
|
|
81
|
+
nrhs = NA_SHAPE1(rblapack_x);
|
|
82
|
+
if (NA_TYPE(rblapack_x) != NA_SCOMPLEX)
|
|
83
|
+
rblapack_x = na_change_type(rblapack_x, NA_SCOMPLEX);
|
|
84
|
+
x = NA_PTR_TYPE(rblapack_x, complex*);
|
|
85
|
+
trans = StringValueCStr(rblapack_trans)[0];
|
|
86
|
+
if (!NA_IsNArray(rblapack_b))
|
|
87
|
+
rb_raise(rb_eArgError, "b (6th argument) must be NArray");
|
|
88
|
+
if (NA_RANK(rblapack_b) != 2)
|
|
89
|
+
rb_raise(rb_eArgError, "rank of b (6th argument) must be %d", 2);
|
|
90
|
+
ldb = NA_SHAPE0(rblapack_b);
|
|
91
|
+
if (NA_SHAPE1(rblapack_b) != nrhs)
|
|
92
|
+
rb_raise(rb_eRuntimeError, "shape 1 of b must be the same as shape 1 of x");
|
|
93
|
+
if (NA_TYPE(rblapack_b) != NA_SCOMPLEX)
|
|
94
|
+
rblapack_b = na_change_type(rblapack_b, NA_SCOMPLEX);
|
|
95
|
+
b = NA_PTR_TYPE(rblapack_b, complex*);
|
|
96
|
+
kd = NUM2INT(rblapack_kd);
|
|
97
|
+
{
|
|
98
|
+
na_shape_t shape[1];
|
|
99
|
+
shape[0] = nrhs;
|
|
100
|
+
rblapack_ferr = na_make_object(NA_SFLOAT, 1, shape, cNArray);
|
|
101
|
+
}
|
|
102
|
+
ferr = NA_PTR_TYPE(rblapack_ferr, real*);
|
|
103
|
+
{
|
|
104
|
+
na_shape_t shape[1];
|
|
105
|
+
shape[0] = nrhs;
|
|
106
|
+
rblapack_berr = na_make_object(NA_SFLOAT, 1, shape, cNArray);
|
|
107
|
+
}
|
|
108
|
+
berr = NA_PTR_TYPE(rblapack_berr, real*);
|
|
109
|
+
work = ALLOC_N(complex, (2*n));
|
|
110
|
+
rwork = ALLOC_N(real, (n));
|
|
111
|
+
|
|
112
|
+
ctbrfs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, x, &ldx, ferr, berr, work, rwork, &info);
|
|
113
|
+
|
|
114
|
+
free(work);
|
|
115
|
+
free(rwork);
|
|
116
|
+
rblapack_info = INT2NUM(info);
|
|
117
|
+
return rb_ary_new3(3, rblapack_ferr, rblapack_berr, rblapack_info);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
void
|
|
121
|
+
init_lapack_ctbrfs(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
122
|
+
sHelp = sH;
|
|
123
|
+
sUsage = sU;
|
|
124
|
+
rblapack_ZERO = zero;
|
|
125
|
+
|
|
126
|
+
rb_define_module_function(mLapack, "ctbrfs", rblapack_ctbrfs, -1);
|
|
127
|
+
}
|
data/ext/ctbtrs.c
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID ctbtrs_(char* uplo, char* trans, char* diag, integer* n, integer* kd, integer* nrhs, complex* ab, integer* ldab, complex* b, integer* ldb, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_ctbtrs(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_uplo;
|
|
9
|
+
char uplo;
|
|
10
|
+
VALUE rblapack_trans;
|
|
11
|
+
char trans;
|
|
12
|
+
VALUE rblapack_diag;
|
|
13
|
+
char diag;
|
|
14
|
+
VALUE rblapack_kd;
|
|
15
|
+
integer kd;
|
|
16
|
+
VALUE rblapack_ab;
|
|
17
|
+
complex *ab;
|
|
18
|
+
VALUE rblapack_b;
|
|
19
|
+
complex *b;
|
|
20
|
+
VALUE rblapack_info;
|
|
21
|
+
integer info;
|
|
22
|
+
VALUE rblapack_b_out__;
|
|
23
|
+
complex *b_out__;
|
|
24
|
+
|
|
25
|
+
integer ldab;
|
|
26
|
+
integer n;
|
|
27
|
+
integer ldb;
|
|
28
|
+
integer nrhs;
|
|
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 info, b = NumRu::Lapack.ctbtrs( uplo, trans, diag, kd, ab, b, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE CTBTRS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, LDB, INFO )\n\n* Purpose\n* =======\n*\n* CTBTRS solves a triangular system of the form\n*\n* A * X = B, A**T * X = B, or A**H * X = B,\n*\n* where A is a triangular band matrix of order N, and B is an\n* N-by-NRHS matrix. A check is made to verify that A is nonsingular.\n*\n\n* Arguments\n* =========\n*\n* UPLO (input) CHARACTER*1\n* = 'U': A is upper triangular;\n* = 'L': A is lower triangular.\n*\n* TRANS (input) CHARACTER*1\n* Specifies the form of the system of equations:\n* = 'N': A * X = B (No transpose)\n* = 'T': A**T * X = B (Transpose)\n* = 'C': A**H * X = B (Conjugate transpose)\n*\n* DIAG (input) CHARACTER*1\n* = 'N': A is non-unit triangular;\n* = 'U': A is unit triangular.\n*\n* N (input) INTEGER\n* The order of the matrix A. N >= 0.\n*\n* KD (input) INTEGER\n* The number of superdiagonals or subdiagonals of the\n* triangular band matrix A. KD >= 0.\n*\n* NRHS (input) INTEGER\n* The number of right hand sides, i.e., the number of columns\n* of the matrix B. NRHS >= 0.\n*\n* AB (input) COMPLEX array, dimension (LDAB,N)\n* The upper or lower triangular band matrix A, stored in the\n* first kd+1 rows of AB. The j-th column of A is stored\n* in the j-th column of the array AB as follows:\n* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;\n* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).\n* If DIAG = 'U', the diagonal elements of A are not referenced\n* and are assumed to be 1.\n*\n* LDAB (input) INTEGER\n* The leading dimension of the array AB. LDAB >= KD+1.\n*\n* B (input/output) COMPLEX array, dimension (LDB,NRHS)\n* On entry, the right hand side matrix B.\n* On exit, if INFO = 0, the solution matrix X.\n*\n* LDB (input) INTEGER\n* The leading dimension of the array B. LDB >= max(1,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 = i, the i-th diagonal element of A is zero,\n* indicating that the matrix is singular and the\n* solutions X have not been computed.\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 info, b = NumRu::Lapack.ctbtrs( uplo, trans, diag, kd, ab, b, [:usage => usage, :help => help])\n");
|
|
40
|
+
return Qnil;
|
|
41
|
+
}
|
|
42
|
+
} else
|
|
43
|
+
rblapack_options = Qnil;
|
|
44
|
+
if (argc != 6 && argc != 6)
|
|
45
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 6)", argc);
|
|
46
|
+
rblapack_uplo = argv[0];
|
|
47
|
+
rblapack_trans = argv[1];
|
|
48
|
+
rblapack_diag = argv[2];
|
|
49
|
+
rblapack_kd = argv[3];
|
|
50
|
+
rblapack_ab = argv[4];
|
|
51
|
+
rblapack_b = argv[5];
|
|
52
|
+
if (argc == 6) {
|
|
53
|
+
} else if (rblapack_options != Qnil) {
|
|
54
|
+
} else {
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
|
58
|
+
diag = StringValueCStr(rblapack_diag)[0];
|
|
59
|
+
if (!NA_IsNArray(rblapack_ab))
|
|
60
|
+
rb_raise(rb_eArgError, "ab (5th argument) must be NArray");
|
|
61
|
+
if (NA_RANK(rblapack_ab) != 2)
|
|
62
|
+
rb_raise(rb_eArgError, "rank of ab (5th argument) must be %d", 2);
|
|
63
|
+
ldab = NA_SHAPE0(rblapack_ab);
|
|
64
|
+
n = NA_SHAPE1(rblapack_ab);
|
|
65
|
+
if (NA_TYPE(rblapack_ab) != NA_SCOMPLEX)
|
|
66
|
+
rblapack_ab = na_change_type(rblapack_ab, NA_SCOMPLEX);
|
|
67
|
+
ab = NA_PTR_TYPE(rblapack_ab, complex*);
|
|
68
|
+
trans = StringValueCStr(rblapack_trans)[0];
|
|
69
|
+
if (!NA_IsNArray(rblapack_b))
|
|
70
|
+
rb_raise(rb_eArgError, "b (6th argument) must be NArray");
|
|
71
|
+
if (NA_RANK(rblapack_b) != 2)
|
|
72
|
+
rb_raise(rb_eArgError, "rank of b (6th argument) must be %d", 2);
|
|
73
|
+
ldb = NA_SHAPE0(rblapack_b);
|
|
74
|
+
nrhs = NA_SHAPE1(rblapack_b);
|
|
75
|
+
if (NA_TYPE(rblapack_b) != NA_SCOMPLEX)
|
|
76
|
+
rblapack_b = na_change_type(rblapack_b, NA_SCOMPLEX);
|
|
77
|
+
b = NA_PTR_TYPE(rblapack_b, complex*);
|
|
78
|
+
kd = NUM2INT(rblapack_kd);
|
|
79
|
+
{
|
|
80
|
+
na_shape_t shape[2];
|
|
81
|
+
shape[0] = ldb;
|
|
82
|
+
shape[1] = nrhs;
|
|
83
|
+
rblapack_b_out__ = na_make_object(NA_SCOMPLEX, 2, shape, cNArray);
|
|
84
|
+
}
|
|
85
|
+
b_out__ = NA_PTR_TYPE(rblapack_b_out__, complex*);
|
|
86
|
+
MEMCPY(b_out__, b, complex, NA_TOTAL(rblapack_b));
|
|
87
|
+
rblapack_b = rblapack_b_out__;
|
|
88
|
+
b = b_out__;
|
|
89
|
+
|
|
90
|
+
ctbtrs_(&uplo, &trans, &diag, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info);
|
|
91
|
+
|
|
92
|
+
rblapack_info = INT2NUM(info);
|
|
93
|
+
return rb_ary_new3(2, rblapack_info, rblapack_b);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
void
|
|
97
|
+
init_lapack_ctbtrs(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
98
|
+
sHelp = sH;
|
|
99
|
+
sUsage = sU;
|
|
100
|
+
rblapack_ZERO = zero;
|
|
101
|
+
|
|
102
|
+
rb_define_module_function(mLapack, "ctbtrs", rblapack_ctbtrs, -1);
|
|
103
|
+
}
|
data/ext/ctfsm.c
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID ctfsm_(char* transr, char* side, char* uplo, char* trans, char* diag, integer* m, integer* n, complex* alpha, complex* a, complex* b, integer* ldb);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_ctfsm(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_transr;
|
|
9
|
+
char transr;
|
|
10
|
+
VALUE rblapack_side;
|
|
11
|
+
char side;
|
|
12
|
+
VALUE rblapack_uplo;
|
|
13
|
+
char uplo;
|
|
14
|
+
VALUE rblapack_trans;
|
|
15
|
+
char trans;
|
|
16
|
+
VALUE rblapack_diag;
|
|
17
|
+
char diag;
|
|
18
|
+
VALUE rblapack_m;
|
|
19
|
+
integer m;
|
|
20
|
+
VALUE rblapack_alpha;
|
|
21
|
+
complex alpha;
|
|
22
|
+
VALUE rblapack_a;
|
|
23
|
+
complex *a;
|
|
24
|
+
VALUE rblapack_b;
|
|
25
|
+
complex *b;
|
|
26
|
+
VALUE rblapack_b_out__;
|
|
27
|
+
complex *b_out__;
|
|
28
|
+
|
|
29
|
+
integer ldb;
|
|
30
|
+
integer n;
|
|
31
|
+
|
|
32
|
+
VALUE rblapack_options;
|
|
33
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
34
|
+
argc--;
|
|
35
|
+
rblapack_options = argv[argc];
|
|
36
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
37
|
+
printf("%s\n", "USAGE:\n b = NumRu::Lapack.ctfsm( transr, side, uplo, trans, diag, m, alpha, a, b, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE CTFSM( TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, B, LDB )\n\n* Purpose\n* =======\n*\n* Level 3 BLAS like routine for A in RFP Format.\n*\n* CTFSM solves the matrix equation\n*\n* op( A )*X = alpha*B or X*op( A ) = alpha*B\n*\n* where alpha is a scalar, X and B are m by n matrices, A is a unit, or\n* non-unit, upper or lower triangular matrix and op( A ) is one of\n*\n* op( A ) = A or op( A ) = conjg( A' ).\n*\n* A is in Rectangular Full Packed (RFP) Format.\n*\n* The matrix X is overwritten on B.\n*\n\n* Arguments\n* ==========\n*\n* TRANSR (input) CHARACTER*1\n* = 'N': The Normal Form of RFP A is stored;\n* = 'C': The Conjugate-transpose Form of RFP A is stored.\n*\n* SIDE (input) CHARACTER*1\n* On entry, SIDE specifies whether op( A ) appears on the left\n* or right of X as follows:\n*\n* SIDE = 'L' or 'l' op( A )*X = alpha*B.\n*\n* SIDE = 'R' or 'r' X*op( A ) = alpha*B.\n*\n* Unchanged on exit.\n*\n* UPLO (input) CHARACTER*1\n* On entry, UPLO specifies whether the RFP matrix A came from\n* an upper or lower triangular matrix as follows:\n* UPLO = 'U' or 'u' RFP A came from an upper triangular matrix\n* UPLO = 'L' or 'l' RFP A came from a lower triangular matrix\n*\n* Unchanged on exit.\n*\n* TRANS (input) CHARACTER*1\n* On entry, TRANS specifies the form of op( A ) to be used\n* in the matrix multiplication as follows:\n*\n* TRANS = 'N' or 'n' op( A ) = A.\n*\n* TRANS = 'C' or 'c' op( A ) = conjg( A' ).\n*\n* Unchanged on exit.\n*\n* DIAG (input) CHARACTER*1\n* On entry, DIAG specifies whether or not RFP A is unit\n* triangular as follows:\n*\n* DIAG = 'U' or 'u' A is assumed to be unit triangular.\n*\n* DIAG = 'N' or 'n' A is not assumed to be unit\n* triangular.\n*\n* Unchanged on exit.\n*\n* M (input) INTEGER\n* On entry, M specifies the number of rows of B. M must be at\n* least zero.\n* Unchanged on exit.\n*\n* N (input) INTEGER\n* On entry, N specifies the number of columns of B. N must be\n* at least zero.\n* Unchanged on exit.\n*\n* ALPHA (input) COMPLEX\n* On entry, ALPHA specifies the scalar alpha. When alpha is\n* zero then A is not referenced and B need not be set before\n* entry.\n* Unchanged on exit.\n*\n* A (input) COMPLEX array, dimension (N*(N+1)/2)\n* NT = N*(N+1)/2. On entry, the matrix A in RFP Format.\n* RFP Format is described by TRANSR, UPLO and N as follows:\n* If TRANSR='N' then RFP A is (0:N,0:K-1) when N is even;\n* K=N/2. RFP A is (0:N-1,0:K) when N is odd; K=N/2. If\n* TRANSR = 'C' then RFP is the Conjugate-transpose of RFP A as\n* defined when TRANSR = 'N'. The contents of RFP A are defined\n* by UPLO as follows: If UPLO = 'U' the RFP A contains the NT\n* elements of upper packed A either in normal or\n* conjugate-transpose Format. If UPLO = 'L' the RFP A contains\n* the NT elements of lower packed A either in normal or\n* conjugate-transpose Format. The LDA of RFP A is (N+1)/2 when\n* TRANSR = 'C'. When TRANSR is 'N' the LDA is N+1 when N is\n* even and is N when is odd.\n* See the Note below for more details. Unchanged on exit.\n*\n* B (input/output) COMPLEX array, dimension (LDB,N)\n* Before entry, the leading m by n part of the array B must\n* contain the right-hand side matrix B, and on exit is\n* overwritten by the solution matrix X.\n*\n* LDB (input) INTEGER\n* On entry, LDB specifies the first dimension of B as declared\n* in the calling (sub) program. LDB must be at least\n* max( 1, m ).\n* Unchanged on exit.\n*\n\n* Further Details\n* ===============\n*\n* We first consider Standard Packed Format when N is even.\n* We give an example where N = 6.\n*\n* AP is Upper AP is Lower\n*\n* 00 01 02 03 04 05 00\n* 11 12 13 14 15 10 11\n* 22 23 24 25 20 21 22\n* 33 34 35 30 31 32 33\n* 44 45 40 41 42 43 44\n* 55 50 51 52 53 54 55\n*\n*\n* Let TRANSR = 'N'. RFP holds AP as follows:\n* For UPLO = 'U' the upper trapezoid A(0:5,0:2) consists of the last\n* three columns of AP upper. The lower triangle A(4:6,0:2) consists of\n* conjugate-transpose of the first three columns of AP upper.\n* For UPLO = 'L' the lower trapezoid A(1:6,0:2) consists of the first\n* three columns of AP lower. The upper triangle A(0:2,0:2) consists of\n* conjugate-transpose of the last three columns of AP lower.\n* To denote conjugate we place -- above the element. This covers the\n* case N even and TRANSR = 'N'.\n*\n* RFP A RFP A\n*\n* -- -- --\n* 03 04 05 33 43 53\n* -- --\n* 13 14 15 00 44 54\n* --\n* 23 24 25 10 11 55\n*\n* 33 34 35 20 21 22\n* --\n* 00 44 45 30 31 32\n* -- --\n* 01 11 55 40 41 42\n* -- -- --\n* 02 12 22 50 51 52\n*\n* Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-\n* transpose of RFP A above. One therefore gets:\n*\n*\n* RFP A RFP A\n*\n* -- -- -- -- -- -- -- -- -- --\n* 03 13 23 33 00 01 02 33 00 10 20 30 40 50\n* -- -- -- -- -- -- -- -- -- --\n* 04 14 24 34 44 11 12 43 44 11 21 31 41 51\n* -- -- -- -- -- -- -- -- -- --\n* 05 15 25 35 45 55 22 53 54 55 22 32 42 52\n*\n*\n* We next consider Standard Packed Format when N is odd.\n* We give an example where N = 5.\n*\n* AP is Upper AP is Lower\n*\n* 00 01 02 03 04 00\n* 11 12 13 14 10 11\n* 22 23 24 20 21 22\n* 33 34 30 31 32 33\n* 44 40 41 42 43 44\n*\n*\n* Let TRANSR = 'N'. RFP holds AP as follows:\n* For UPLO = 'U' the upper trapezoid A(0:4,0:2) consists of the last\n* three columns of AP upper. The lower triangle A(3:4,0:1) consists of\n* conjugate-transpose of the first two columns of AP upper.\n* For UPLO = 'L' the lower trapezoid A(0:4,0:2) consists of the first\n* three columns of AP lower. The upper triangle A(0:1,1:2) consists of\n* conjugate-transpose of the last two columns of AP lower.\n* To denote conjugate we place -- above the element. This covers the\n* case N odd and TRANSR = 'N'.\n*\n* RFP A RFP A\n*\n* -- --\n* 02 03 04 00 33 43\n* --\n* 12 13 14 10 11 44\n*\n* 22 23 24 20 21 22\n* --\n* 00 33 34 30 31 32\n* -- --\n* 01 11 44 40 41 42\n*\n* Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-\n* transpose of RFP A above. One therefore gets:\n*\n*\n* RFP A RFP A\n*\n* -- -- -- -- -- -- -- -- --\n* 02 12 22 00 01 00 10 20 30 40 50\n* -- -- -- -- -- -- -- -- --\n* 03 13 23 33 11 33 11 21 31 41 51\n* -- -- -- -- -- -- -- -- --\n* 04 14 24 34 44 43 44 22 32 42 52\n*\n* ..\n\n");
|
|
38
|
+
return Qnil;
|
|
39
|
+
}
|
|
40
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
41
|
+
printf("%s\n", "USAGE:\n b = NumRu::Lapack.ctfsm( transr, side, uplo, trans, diag, m, alpha, a, b, [:usage => usage, :help => help])\n");
|
|
42
|
+
return Qnil;
|
|
43
|
+
}
|
|
44
|
+
} else
|
|
45
|
+
rblapack_options = Qnil;
|
|
46
|
+
if (argc != 9 && argc != 9)
|
|
47
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 9)", argc);
|
|
48
|
+
rblapack_transr = argv[0];
|
|
49
|
+
rblapack_side = argv[1];
|
|
50
|
+
rblapack_uplo = argv[2];
|
|
51
|
+
rblapack_trans = argv[3];
|
|
52
|
+
rblapack_diag = argv[4];
|
|
53
|
+
rblapack_m = argv[5];
|
|
54
|
+
rblapack_alpha = argv[6];
|
|
55
|
+
rblapack_a = argv[7];
|
|
56
|
+
rblapack_b = argv[8];
|
|
57
|
+
if (argc == 9) {
|
|
58
|
+
} else if (rblapack_options != Qnil) {
|
|
59
|
+
} else {
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
transr = StringValueCStr(rblapack_transr)[0];
|
|
63
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
|
64
|
+
diag = StringValueCStr(rblapack_diag)[0];
|
|
65
|
+
alpha.r = (real)NUM2DBL(rb_funcall(rblapack_alpha, rb_intern("real"), 0));
|
|
66
|
+
alpha.i = (real)NUM2DBL(rb_funcall(rblapack_alpha, rb_intern("imag"), 0));
|
|
67
|
+
if (!NA_IsNArray(rblapack_b))
|
|
68
|
+
rb_raise(rb_eArgError, "b (9th argument) must be NArray");
|
|
69
|
+
if (NA_RANK(rblapack_b) != 2)
|
|
70
|
+
rb_raise(rb_eArgError, "rank of b (9th argument) must be %d", 2);
|
|
71
|
+
ldb = NA_SHAPE0(rblapack_b);
|
|
72
|
+
n = NA_SHAPE1(rblapack_b);
|
|
73
|
+
if (NA_TYPE(rblapack_b) != NA_SCOMPLEX)
|
|
74
|
+
rblapack_b = na_change_type(rblapack_b, NA_SCOMPLEX);
|
|
75
|
+
b = NA_PTR_TYPE(rblapack_b, complex*);
|
|
76
|
+
side = StringValueCStr(rblapack_side)[0];
|
|
77
|
+
m = NUM2INT(rblapack_m);
|
|
78
|
+
trans = StringValueCStr(rblapack_trans)[0];
|
|
79
|
+
if (!NA_IsNArray(rblapack_a))
|
|
80
|
+
rb_raise(rb_eArgError, "a (8th argument) must be NArray");
|
|
81
|
+
if (NA_RANK(rblapack_a) != 1)
|
|
82
|
+
rb_raise(rb_eArgError, "rank of a (8th argument) must be %d", 1);
|
|
83
|
+
if (NA_SHAPE0(rblapack_a) != (n*(n+1)/2))
|
|
84
|
+
rb_raise(rb_eRuntimeError, "shape 0 of a must be %d", n*(n+1)/2);
|
|
85
|
+
if (NA_TYPE(rblapack_a) != NA_SCOMPLEX)
|
|
86
|
+
rblapack_a = na_change_type(rblapack_a, NA_SCOMPLEX);
|
|
87
|
+
a = NA_PTR_TYPE(rblapack_a, complex*);
|
|
88
|
+
{
|
|
89
|
+
na_shape_t shape[2];
|
|
90
|
+
shape[0] = ldb;
|
|
91
|
+
shape[1] = n;
|
|
92
|
+
rblapack_b_out__ = na_make_object(NA_SCOMPLEX, 2, shape, cNArray);
|
|
93
|
+
}
|
|
94
|
+
b_out__ = NA_PTR_TYPE(rblapack_b_out__, complex*);
|
|
95
|
+
MEMCPY(b_out__, b, complex, NA_TOTAL(rblapack_b));
|
|
96
|
+
rblapack_b = rblapack_b_out__;
|
|
97
|
+
b = b_out__;
|
|
98
|
+
|
|
99
|
+
ctfsm_(&transr, &side, &uplo, &trans, &diag, &m, &n, &alpha, a, b, &ldb);
|
|
100
|
+
|
|
101
|
+
return rblapack_b;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
void
|
|
105
|
+
init_lapack_ctfsm(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
106
|
+
sHelp = sH;
|
|
107
|
+
sUsage = sU;
|
|
108
|
+
rblapack_ZERO = zero;
|
|
109
|
+
|
|
110
|
+
rb_define_module_function(mLapack, "ctfsm", rblapack_ctfsm, -1);
|
|
111
|
+
}
|
data/ext/ctftri.c
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#include "rb_lapack.h"
|
|
2
|
+
|
|
3
|
+
extern VOID ctftri_(char* transr, char* uplo, char* diag, integer* n, complex* a, integer* info);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
static VALUE
|
|
7
|
+
rblapack_ctftri(int argc, VALUE *argv, VALUE self){
|
|
8
|
+
VALUE rblapack_transr;
|
|
9
|
+
char transr;
|
|
10
|
+
VALUE rblapack_uplo;
|
|
11
|
+
char uplo;
|
|
12
|
+
VALUE rblapack_diag;
|
|
13
|
+
char diag;
|
|
14
|
+
VALUE rblapack_n;
|
|
15
|
+
integer n;
|
|
16
|
+
VALUE rblapack_a;
|
|
17
|
+
complex *a;
|
|
18
|
+
VALUE rblapack_info;
|
|
19
|
+
integer info;
|
|
20
|
+
VALUE rblapack_a_out__;
|
|
21
|
+
complex *a_out__;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
VALUE rblapack_options;
|
|
25
|
+
if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
|
|
26
|
+
argc--;
|
|
27
|
+
rblapack_options = argv[argc];
|
|
28
|
+
if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
|
|
29
|
+
printf("%s\n", "USAGE:\n info, a = NumRu::Lapack.ctftri( transr, uplo, diag, n, a, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE CTFTRI( TRANSR, UPLO, DIAG, N, A, INFO )\n\n* Purpose\n* =======\n*\n* CTFTRI computes the inverse of a triangular matrix A stored in RFP\n* format.\n*\n* This is a Level 3 BLAS version of the algorithm.\n*\n\n* Arguments\n* =========\n*\n* TRANSR (input) CHARACTER*1\n* = 'N': The Normal TRANSR of RFP A is stored;\n* = 'C': The Conjugate-transpose TRANSR of RFP A is stored.\n*\n* UPLO (input) CHARACTER*1\n* = 'U': A is upper triangular;\n* = 'L': A is lower triangular.\n*\n* DIAG (input) CHARACTER*1\n* = 'N': A is non-unit triangular;\n* = 'U': A is unit triangular.\n*\n* N (input) INTEGER\n* The order of the matrix A. N >= 0.\n*\n* A (input/output) COMPLEX array, dimension ( N*(N+1)/2 );\n* On entry, the triangular matrix A in RFP format. RFP format\n* is described by TRANSR, UPLO, and N as follows: If TRANSR =\n* 'N' then RFP A is (0:N,0:k-1) when N is even; k=N/2. RFP A is\n* (0:N-1,0:k) when N is odd; k=N/2. IF TRANSR = 'C' then RFP is\n* the Conjugate-transpose of RFP A as defined when\n* TRANSR = 'N'. The contents of RFP A are defined by UPLO as\n* follows: If UPLO = 'U' the RFP A contains the nt elements of\n* upper packed A; If UPLO = 'L' the RFP A contains the nt\n* elements of lower packed A. The LDA of RFP A is (N+1)/2 when\n* TRANSR = 'C'. When TRANSR is 'N' the LDA is N+1 when N is\n* even and N is odd. See the Note below for more details.\n*\n* On exit, the (triangular) inverse of the original matrix, in\n* the same storage format.\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 = i, A(i,i) is exactly zero. The triangular\n* matrix is singular and its inverse can not be computed.\n*\n\n* Further Details\n* ===============\n*\n* We first consider Standard Packed Format when N is even.\n* We give an example where N = 6.\n*\n* AP is Upper AP is Lower\n*\n* 00 01 02 03 04 05 00\n* 11 12 13 14 15 10 11\n* 22 23 24 25 20 21 22\n* 33 34 35 30 31 32 33\n* 44 45 40 41 42 43 44\n* 55 50 51 52 53 54 55\n*\n*\n* Let TRANSR = 'N'. RFP holds AP as follows:\n* For UPLO = 'U' the upper trapezoid A(0:5,0:2) consists of the last\n* three columns of AP upper. The lower triangle A(4:6,0:2) consists of\n* conjugate-transpose of the first three columns of AP upper.\n* For UPLO = 'L' the lower trapezoid A(1:6,0:2) consists of the first\n* three columns of AP lower. The upper triangle A(0:2,0:2) consists of\n* conjugate-transpose of the last three columns of AP lower.\n* To denote conjugate we place -- above the element. This covers the\n* case N even and TRANSR = 'N'.\n*\n* RFP A RFP A\n*\n* -- -- --\n* 03 04 05 33 43 53\n* -- --\n* 13 14 15 00 44 54\n* --\n* 23 24 25 10 11 55\n*\n* 33 34 35 20 21 22\n* --\n* 00 44 45 30 31 32\n* -- --\n* 01 11 55 40 41 42\n* -- -- --\n* 02 12 22 50 51 52\n*\n* Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-\n* transpose of RFP A above. One therefore gets:\n*\n*\n* RFP A RFP A\n*\n* -- -- -- -- -- -- -- -- -- --\n* 03 13 23 33 00 01 02 33 00 10 20 30 40 50\n* -- -- -- -- -- -- -- -- -- --\n* 04 14 24 34 44 11 12 43 44 11 21 31 41 51\n* -- -- -- -- -- -- -- -- -- --\n* 05 15 25 35 45 55 22 53 54 55 22 32 42 52\n*\n*\n* We next consider Standard Packed Format when N is odd.\n* We give an example where N = 5.\n*\n* AP is Upper AP is Lower\n*\n* 00 01 02 03 04 00\n* 11 12 13 14 10 11\n* 22 23 24 20 21 22\n* 33 34 30 31 32 33\n* 44 40 41 42 43 44\n*\n*\n* Let TRANSR = 'N'. RFP holds AP as follows:\n* For UPLO = 'U' the upper trapezoid A(0:4,0:2) consists of the last\n* three columns of AP upper. The lower triangle A(3:4,0:1) consists of\n* conjugate-transpose of the first two columns of AP upper.\n* For UPLO = 'L' the lower trapezoid A(0:4,0:2) consists of the first\n* three columns of AP lower. The upper triangle A(0:1,1:2) consists of\n* conjugate-transpose of the last two columns of AP lower.\n* To denote conjugate we place -- above the element. This covers the\n* case N odd and TRANSR = 'N'.\n*\n* RFP A RFP A\n*\n* -- --\n* 02 03 04 00 33 43\n* --\n* 12 13 14 10 11 44\n*\n* 22 23 24 20 21 22\n* --\n* 00 33 34 30 31 32\n* -- --\n* 01 11 44 40 41 42\n*\n* Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-\n* transpose of RFP A above. One therefore gets:\n*\n*\n* RFP A RFP A\n*\n* -- -- -- -- -- -- -- -- --\n* 02 12 22 00 01 00 10 20 30 40 50\n* -- -- -- -- -- -- -- -- --\n* 03 13 23 33 11 33 11 21 31 41 51\n* -- -- -- -- -- -- -- -- --\n* 04 14 24 34 44 43 44 22 32 42 52\n*\n* =====================================================================\n*\n\n");
|
|
30
|
+
return Qnil;
|
|
31
|
+
}
|
|
32
|
+
if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
|
|
33
|
+
printf("%s\n", "USAGE:\n info, a = NumRu::Lapack.ctftri( transr, uplo, diag, n, a, [:usage => usage, :help => help])\n");
|
|
34
|
+
return Qnil;
|
|
35
|
+
}
|
|
36
|
+
} else
|
|
37
|
+
rblapack_options = Qnil;
|
|
38
|
+
if (argc != 5 && argc != 5)
|
|
39
|
+
rb_raise(rb_eArgError,"wrong number of arguments (%d for 5)", argc);
|
|
40
|
+
rblapack_transr = argv[0];
|
|
41
|
+
rblapack_uplo = argv[1];
|
|
42
|
+
rblapack_diag = argv[2];
|
|
43
|
+
rblapack_n = argv[3];
|
|
44
|
+
rblapack_a = argv[4];
|
|
45
|
+
if (argc == 5) {
|
|
46
|
+
} else if (rblapack_options != Qnil) {
|
|
47
|
+
} else {
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
transr = StringValueCStr(rblapack_transr)[0];
|
|
51
|
+
diag = StringValueCStr(rblapack_diag)[0];
|
|
52
|
+
uplo = StringValueCStr(rblapack_uplo)[0];
|
|
53
|
+
n = NUM2INT(rblapack_n);
|
|
54
|
+
if (!NA_IsNArray(rblapack_a))
|
|
55
|
+
rb_raise(rb_eArgError, "a (5th argument) must be NArray");
|
|
56
|
+
if (NA_RANK(rblapack_a) != 1)
|
|
57
|
+
rb_raise(rb_eArgError, "rank of a (5th argument) must be %d", 1);
|
|
58
|
+
if (NA_SHAPE0(rblapack_a) != (n*(n+1)/2))
|
|
59
|
+
rb_raise(rb_eRuntimeError, "shape 0 of a must be %d", n*(n+1)/2);
|
|
60
|
+
if (NA_TYPE(rblapack_a) != NA_SCOMPLEX)
|
|
61
|
+
rblapack_a = na_change_type(rblapack_a, NA_SCOMPLEX);
|
|
62
|
+
a = NA_PTR_TYPE(rblapack_a, complex*);
|
|
63
|
+
{
|
|
64
|
+
na_shape_t shape[1];
|
|
65
|
+
shape[0] = n*(n+1)/2;
|
|
66
|
+
rblapack_a_out__ = na_make_object(NA_SCOMPLEX, 1, shape, cNArray);
|
|
67
|
+
}
|
|
68
|
+
a_out__ = NA_PTR_TYPE(rblapack_a_out__, complex*);
|
|
69
|
+
MEMCPY(a_out__, a, complex, NA_TOTAL(rblapack_a));
|
|
70
|
+
rblapack_a = rblapack_a_out__;
|
|
71
|
+
a = a_out__;
|
|
72
|
+
|
|
73
|
+
ctftri_(&transr, &uplo, &diag, &n, a, &info);
|
|
74
|
+
|
|
75
|
+
rblapack_info = INT2NUM(info);
|
|
76
|
+
return rb_ary_new3(2, rblapack_info, rblapack_a);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
void
|
|
80
|
+
init_lapack_ctftri(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
|
|
81
|
+
sHelp = sH;
|
|
82
|
+
sUsage = sU;
|
|
83
|
+
rblapack_ZERO = zero;
|
|
84
|
+
|
|
85
|
+
rb_define_module_function(mLapack, "ctftri", rblapack_ctftri, -1);
|
|
86
|
+
}
|