ruby-lapack 1.7 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1634) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/ext/cbbcsd.c +283 -0
  4. data/ext/cbdsqr.c +182 -0
  5. data/ext/cgbbrd.c +157 -0
  6. data/ext/cgbcon.c +98 -0
  7. data/ext/cgbequ.c +98 -0
  8. data/ext/cgbequb.c +96 -0
  9. data/ext/cgbrfs.c +161 -0
  10. data/ext/cgbrfsx.c +249 -0
  11. data/ext/cgbsv.c +115 -0
  12. data/ext/cgbsvx.c +286 -0
  13. data/ext/cgbsvxx.c +289 -0
  14. data/ext/cgbtf2.c +93 -0
  15. data/ext/cgbtrf.c +93 -0
  16. data/ext/cgbtrs.c +111 -0
  17. data/ext/cgebak.c +101 -0
  18. data/ext/cgebal.c +91 -0
  19. data/ext/cgebd2.c +112 -0
  20. data/ext/cgebrd.c +127 -0
  21. data/ext/cgecon.c +78 -0
  22. data/ext/cgeequ.c +88 -0
  23. data/ext/cgeequb.c +88 -0
  24. data/ext/cgees.c +142 -0
  25. data/ext/cgeesx.c +152 -0
  26. data/ext/cgeev.c +132 -0
  27. data/ext/cgeevx.c +173 -0
  28. data/ext/cgegs.c +166 -0
  29. data/ext/cgegv.c +171 -0
  30. data/ext/cgehd2.c +92 -0
  31. data/ext/cgehrd.c +107 -0
  32. data/ext/cgelq2.c +86 -0
  33. data/ext/cgelqf.c +103 -0
  34. data/ext/cgels.c +137 -0
  35. data/ext/cgelsd.c +154 -0
  36. data/ext/cgelss.c +151 -0
  37. data/ext/cgelsx.c +139 -0
  38. data/ext/cgelsy.c +166 -0
  39. data/ext/cgeql2.c +88 -0
  40. data/ext/cgeqlf.c +103 -0
  41. data/ext/cgeqp3.c +129 -0
  42. data/ext/cgeqpf.c +114 -0
  43. data/ext/cgeqr2.c +88 -0
  44. data/ext/cgeqr2p.c +88 -0
  45. data/ext/cgeqrf.c +103 -0
  46. data/ext/cgeqrfp.c +103 -0
  47. data/ext/cgerfs.c +153 -0
  48. data/ext/cgerfsx.c +219 -0
  49. data/ext/cgerq2.c +86 -0
  50. data/ext/cgerqf.c +103 -0
  51. data/ext/cgesc2.c +108 -0
  52. data/ext/cgesdd.c +135 -0
  53. data/ext/cgesv.c +107 -0
  54. data/ext/cgesvd.c +146 -0
  55. data/ext/cgesvx.c +278 -0
  56. data/ext/cgesvxx.c +281 -0
  57. data/ext/cgetc2.c +89 -0
  58. data/ext/cgetf2.c +85 -0
  59. data/ext/cgetrf.c +85 -0
  60. data/ext/cgetri.c +103 -0
  61. data/ext/cgetrs.c +103 -0
  62. data/ext/cggbak.c +113 -0
  63. data/ext/cggbal.c +128 -0
  64. data/ext/cgges.c +192 -0
  65. data/ext/cggesx.c +230 -0
  66. data/ext/cggev.c +171 -0
  67. data/ext/cggevx.c +226 -0
  68. data/ext/cggglm.c +156 -0
  69. data/ext/cgghrd.c +167 -0
  70. data/ext/cgglse.c +171 -0
  71. data/ext/cggqrf.c +137 -0
  72. data/ext/cggrqf.c +141 -0
  73. data/ext/cggsvd.c +184 -0
  74. data/ext/cggsvp.c +174 -0
  75. data/ext/cgtcon.c +121 -0
  76. data/ext/cgtrfs.c +209 -0
  77. data/ext/cgtsv.c +142 -0
  78. data/ext/cgtsvx.c +256 -0
  79. data/ext/cgttrf.c +132 -0
  80. data/ext/cgttrs.c +137 -0
  81. data/ext/cgtts2.c +134 -0
  82. data/ext/chbev.c +110 -0
  83. data/ext/chbevd.c +158 -0
  84. data/ext/chbevx.c +160 -0
  85. data/ext/chbgst.c +120 -0
  86. data/ext/chbgv.c +140 -0
  87. data/ext/chbgvd.c +188 -0
  88. data/ext/chbgvx.c +189 -0
  89. data/ext/chbtrd.c +130 -0
  90. data/ext/checon.c +87 -0
  91. data/ext/cheequb.c +82 -0
  92. data/ext/cheev.c +110 -0
  93. data/ext/cheevd.c +143 -0
  94. data/ext/cheevr.c +190 -0
  95. data/ext/cheevx.c +160 -0
  96. data/ext/chegs2.c +95 -0
  97. data/ext/chegst.c +95 -0
  98. data/ext/chegv.c +140 -0
  99. data/ext/chegvd.c +173 -0
  100. data/ext/chegvx.c +190 -0
  101. data/ext/cherfs.c +153 -0
  102. data/ext/cherfsx.c +218 -0
  103. data/ext/chesv.c +123 -0
  104. data/ext/chesvx.c +183 -0
  105. data/ext/chesvxx.c +258 -0
  106. data/ext/chetd2.c +101 -0
  107. data/ext/chetf2.c +85 -0
  108. data/ext/chetrd.c +113 -0
  109. data/ext/chetrf.c +97 -0
  110. data/ext/chetri.c +92 -0
  111. data/ext/chetrs.c +103 -0
  112. data/ext/chetrs2.c +106 -0
  113. data/ext/chfrk.c +109 -0
  114. data/ext/chgeqz.c +208 -0
  115. data/ext/chla_transtype.c +51 -0
  116. data/ext/chpcon.c +85 -0
  117. data/ext/chpev.c +105 -0
  118. data/ext/chpevd.c +153 -0
  119. data/ext/chpevx.c +144 -0
  120. data/ext/chpgst.c +94 -0
  121. data/ext/chpgv.c +132 -0
  122. data/ext/chpgvd.c +170 -0
  123. data/ext/chpgvx.c +170 -0
  124. data/ext/chprfs.c +149 -0
  125. data/ext/chpsv.c +110 -0
  126. data/ext/chpsvx.c +163 -0
  127. data/ext/chptrd.c +100 -0
  128. data/ext/chptrf.c +84 -0
  129. data/ext/chptri.c +89 -0
  130. data/ext/chptrs.c +101 -0
  131. data/ext/chsein.c +185 -0
  132. data/ext/chseqr.c +145 -0
  133. data/ext/cla_gbamv.c +127 -0
  134. data/ext/cla_gbrcond_c.c +142 -0
  135. data/ext/cla_gbrcond_x.c +138 -0
  136. data/ext/cla_gbrfsx_extended.c +295 -0
  137. data/ext/cla_gbrpvgrw.c +87 -0
  138. data/ext/cla_geamv.c +117 -0
  139. data/ext/cla_gercond_c.c +134 -0
  140. data/ext/cla_gercond_x.c +130 -0
  141. data/ext/cla_gerfsx_extended.c +281 -0
  142. data/ext/cla_heamv.c +116 -0
  143. data/ext/cla_hercond_c.c +134 -0
  144. data/ext/cla_hercond_x.c +130 -0
  145. data/ext/cla_herfsx_extended.c +283 -0
  146. data/ext/cla_herpvgrw.c +107 -0
  147. data/ext/cla_lin_berr.c +84 -0
  148. data/ext/cla_porcond_c.c +122 -0
  149. data/ext/cla_porcond_x.c +118 -0
  150. data/ext/cla_porfsx_extended.c +271 -0
  151. data/ext/cla_porpvgrw.c +95 -0
  152. data/ext/cla_rpvgrw.c +79 -0
  153. data/ext/cla_syamv.c +115 -0
  154. data/ext/cla_syrcond_c.c +134 -0
  155. data/ext/cla_syrcond_x.c +130 -0
  156. data/ext/cla_syrfsx_extended.c +283 -0
  157. data/ext/cla_syrpvgrw.c +107 -0
  158. data/ext/cla_wwaddw.c +102 -0
  159. data/ext/clabrd.c +132 -0
  160. data/ext/clacgv.c +75 -0
  161. data/ext/clacn2.c +103 -0
  162. data/ext/clacon.c +80 -0
  163. data/ext/clacp2.c +77 -0
  164. data/ext/clacpy.c +77 -0
  165. data/ext/clacrm.c +90 -0
  166. data/ext/clacrt.c +108 -0
  167. data/ext/cladiv.c +57 -0
  168. data/ext/claed0.c +134 -0
  169. data/ext/claed7.c +247 -0
  170. data/ext/claed8.c +198 -0
  171. data/ext/claein.c +113 -0
  172. data/ext/claesy.c +74 -0
  173. data/ext/claev2.c +71 -0
  174. data/ext/clag2z.c +76 -0
  175. data/ext/clags2.c +92 -0
  176. data/ext/clagtm.c +132 -0
  177. data/ext/clahef.c +97 -0
  178. data/ext/clahqr.c +135 -0
  179. data/ext/clahr2.c +112 -0
  180. data/ext/clahrd.c +112 -0
  181. data/ext/claic1.c +90 -0
  182. data/ext/clals0.c +201 -0
  183. data/ext/clalsa.c +270 -0
  184. data/ext/clalsd.c +145 -0
  185. data/ext/clangb.c +76 -0
  186. data/ext/clange.c +74 -0
  187. data/ext/clangt.c +87 -0
  188. data/ext/clanhb.c +78 -0
  189. data/ext/clanhe.c +72 -0
  190. data/ext/clanhf.c +80 -0
  191. data/ext/clanhp.c +74 -0
  192. data/ext/clanhs.c +70 -0
  193. data/ext/clanht.c +75 -0
  194. data/ext/clansb.c +78 -0
  195. data/ext/clansp.c +74 -0
  196. data/ext/clansy.c +72 -0
  197. data/ext/clantb.c +80 -0
  198. data/ext/clantp.c +80 -0
  199. data/ext/clantr.c +82 -0
  200. data/ext/clapll.c +105 -0
  201. data/ext/clapmr.c +97 -0
  202. data/ext/clapmt.c +101 -0
  203. data/ext/claqgb.c +117 -0
  204. data/ext/claqge.c +109 -0
  205. data/ext/claqhb.c +97 -0
  206. data/ext/claqhe.c +97 -0
  207. data/ext/claqhp.c +94 -0
  208. data/ext/claqp2.c +158 -0
  209. data/ext/claqps.c +208 -0
  210. data/ext/claqr0.c +145 -0
  211. data/ext/claqr1.c +76 -0
  212. data/ext/claqr2.c +174 -0
  213. data/ext/claqr3.c +174 -0
  214. data/ext/claqr4.c +145 -0
  215. data/ext/claqr5.c +179 -0
  216. data/ext/claqsb.c +101 -0
  217. data/ext/claqsp.c +94 -0
  218. data/ext/claqsy.c +97 -0
  219. data/ext/clar1v.c +173 -0
  220. data/ext/clar2v.c +149 -0
  221. data/ext/clarcm.c +86 -0
  222. data/ext/clarf.c +102 -0
  223. data/ext/clarfb.c +123 -0
  224. data/ext/clarfg.c +84 -0
  225. data/ext/clarfgp.c +84 -0
  226. data/ext/clarft.c +105 -0
  227. data/ext/clarfx.c +94 -0
  228. data/ext/clargv.c +114 -0
  229. data/ext/clarnv.c +83 -0
  230. data/ext/clarrv.c +271 -0
  231. data/ext/clarscl2.c +82 -0
  232. data/ext/clartg.c +63 -0
  233. data/ext/clartv.c +130 -0
  234. data/ext/clarz.c +106 -0
  235. data/ext/clarzb.c +127 -0
  236. data/ext/clarzt.c +105 -0
  237. data/ext/clascl.c +97 -0
  238. data/ext/clascl2.c +82 -0
  239. data/ext/claset.c +88 -0
  240. data/ext/clasr.c +110 -0
  241. data/ext/classq.c +70 -0
  242. data/ext/claswp.c +94 -0
  243. data/ext/clasyf.c +97 -0
  244. data/ext/clatbs.c +130 -0
  245. data/ext/clatdf.c +119 -0
  246. data/ext/clatps.c +124 -0
  247. data/ext/clatrd.c +105 -0
  248. data/ext/clatrs.c +126 -0
  249. data/ext/clatrz.c +87 -0
  250. data/ext/clatzm.c +132 -0
  251. data/ext/clauu2.c +77 -0
  252. data/ext/clauum.c +77 -0
  253. data/ext/cpbcon.c +82 -0
  254. data/ext/cpbequ.c +83 -0
  255. data/ext/cpbrfs.c +145 -0
  256. data/ext/cpbstf.c +81 -0
  257. data/ext/cpbsv.c +107 -0
  258. data/ext/cpbsvx.c +201 -0
  259. data/ext/cpbtf2.c +81 -0
  260. data/ext/cpbtrf.c +81 -0
  261. data/ext/cpbtrs.c +95 -0
  262. data/ext/cpftrf.c +82 -0
  263. data/ext/cpftri.c +82 -0
  264. data/ext/cpftrs.c +97 -0
  265. data/ext/cpocon.c +78 -0
  266. data/ext/cpoequ.c +75 -0
  267. data/ext/cpoequb.c +75 -0
  268. data/ext/cporfs.c +141 -0
  269. data/ext/cporfsx.c +206 -0
  270. data/ext/cposv.c +103 -0
  271. data/ext/cposvx.c +197 -0
  272. data/ext/cposvxx.c +235 -0
  273. data/ext/cpotf2.c +77 -0
  274. data/ext/cpotrf.c +77 -0
  275. data/ext/cpotri.c +77 -0
  276. data/ext/cpotrs.c +91 -0
  277. data/ext/cppcon.c +78 -0
  278. data/ext/cppequ.c +79 -0
  279. data/ext/cpprfs.c +139 -0
  280. data/ext/cppsv.c +104 -0
  281. data/ext/cppsvx.c +191 -0
  282. data/ext/cpptrf.c +78 -0
  283. data/ext/cpptri.c +78 -0
  284. data/ext/cpptrs.c +93 -0
  285. data/ext/cpstf2.c +95 -0
  286. data/ext/cpstrf.c +95 -0
  287. data/ext/cptcon.c +81 -0
  288. data/ext/cpteqr.c +126 -0
  289. data/ext/cptrfs.c +161 -0
  290. data/ext/cptsv.c +119 -0
  291. data/ext/cptsvx.c +171 -0
  292. data/ext/cpttrf.c +93 -0
  293. data/ext/cpttrs.c +101 -0
  294. data/ext/cptts2.c +98 -0
  295. data/ext/crot.c +107 -0
  296. data/ext/cspcon.c +85 -0
  297. data/ext/cspmv.c +115 -0
  298. data/ext/cspr.c +96 -0
  299. data/ext/csprfs.c +149 -0
  300. data/ext/cspsv.c +110 -0
  301. data/ext/cspsvx.c +163 -0
  302. data/ext/csptrf.c +84 -0
  303. data/ext/csptri.c +89 -0
  304. data/ext/csptrs.c +101 -0
  305. data/ext/csrscl.c +79 -0
  306. data/ext/cstedc.c +177 -0
  307. data/ext/cstegr.c +188 -0
  308. data/ext/cstein.c +134 -0
  309. data/ext/cstemr.c +193 -0
  310. data/ext/csteqr.c +126 -0
  311. data/ext/csycon.c +87 -0
  312. data/ext/csyconv.c +84 -0
  313. data/ext/csyequb.c +82 -0
  314. data/ext/csymv.c +115 -0
  315. data/ext/csyr.c +95 -0
  316. data/ext/csyrfs.c +153 -0
  317. data/ext/csyrfsx.c +218 -0
  318. data/ext/csysv.c +129 -0
  319. data/ext/csysvx.c +183 -0
  320. data/ext/csysvxx.c +258 -0
  321. data/ext/csyswapr.c +82 -0
  322. data/ext/csytf2.c +85 -0
  323. data/ext/csytrf.c +97 -0
  324. data/ext/csytri.c +92 -0
  325. data/ext/csytri2.c +108 -0
  326. data/ext/csytri2x.c +96 -0
  327. data/ext/csytrs.c +103 -0
  328. data/ext/csytrs2.c +106 -0
  329. data/ext/ctbcon.c +86 -0
  330. data/ext/ctbrfs.c +127 -0
  331. data/ext/ctbtrs.c +103 -0
  332. data/ext/ctfsm.c +111 -0
  333. data/ext/ctftri.c +86 -0
  334. data/ext/ctfttp.c +79 -0
  335. data/ext/ctfttr.c +80 -0
  336. data/ext/ctgevc.c +156 -0
  337. data/ext/ctgex2.c +171 -0
  338. data/ext/ctgexc.c +172 -0
  339. data/ext/ctgsen.c +244 -0
  340. data/ext/ctgsja.c +227 -0
  341. data/ext/ctgsna.c +164 -0
  342. data/ext/ctgsy2.c +176 -0
  343. data/ext/ctgsyl.c +190 -0
  344. data/ext/ctpcon.c +82 -0
  345. data/ext/ctprfs.c +123 -0
  346. data/ext/ctptri.c +82 -0
  347. data/ext/ctptrs.c +101 -0
  348. data/ext/ctpttf.c +79 -0
  349. data/ext/ctpttr.c +76 -0
  350. data/ext/ctrcon.c +82 -0
  351. data/ext/ctrevc.c +154 -0
  352. data/ext/ctrexc.c +111 -0
  353. data/ext/ctrrfs.c +123 -0
  354. data/ext/ctrsen.c +154 -0
  355. data/ext/ctrsna.c +137 -0
  356. data/ext/ctrsyl.c +116 -0
  357. data/ext/ctrti2.c +81 -0
  358. data/ext/ctrtri.c +81 -0
  359. data/ext/ctrtrs.c +99 -0
  360. data/ext/ctrttf.c +77 -0
  361. data/ext/ctrttp.c +73 -0
  362. data/ext/ctzrqf.c +83 -0
  363. data/ext/ctzrzf.c +101 -0
  364. data/ext/cunbdb.c +232 -0
  365. data/ext/cuncsd.c +204 -0
  366. data/ext/cung2l.c +92 -0
  367. data/ext/cung2r.c +92 -0
  368. data/ext/cungbr.c +115 -0
  369. data/ext/cunghr.c +111 -0
  370. data/ext/cungl2.c +90 -0
  371. data/ext/cunglq.c +107 -0
  372. data/ext/cungql.c +107 -0
  373. data/ext/cungqr.c +107 -0
  374. data/ext/cungr2.c +90 -0
  375. data/ext/cungrq.c +107 -0
  376. data/ext/cungtr.c +107 -0
  377. data/ext/cunm2l.c +114 -0
  378. data/ext/cunm2r.c +114 -0
  379. data/ext/cunmbr.c +139 -0
  380. data/ext/cunmhr.c +133 -0
  381. data/ext/cunml2.c +110 -0
  382. data/ext/cunmlq.c +125 -0
  383. data/ext/cunmql.c +129 -0
  384. data/ext/cunmqr.c +129 -0
  385. data/ext/cunmr2.c +110 -0
  386. data/ext/cunmr3.c +114 -0
  387. data/ext/cunmrq.c +125 -0
  388. data/ext/cunmrz.c +129 -0
  389. data/ext/cunmtr.c +129 -0
  390. data/ext/cupgtr.c +91 -0
  391. data/ext/cupmtr.c +116 -0
  392. data/ext/dbbcsd.c +287 -0
  393. data/ext/dbdsdc.c +151 -0
  394. data/ext/dbdsqr.c +182 -0
  395. data/ext/ddisna.c +75 -0
  396. data/ext/dgbbrd.c +154 -0
  397. data/ext/dgbcon.c +98 -0
  398. data/ext/dgbequ.c +98 -0
  399. data/ext/dgbequb.c +96 -0
  400. data/ext/dgbrfs.c +161 -0
  401. data/ext/dgbrfsx.c +249 -0
  402. data/ext/dgbsv.c +115 -0
  403. data/ext/dgbsvx.c +286 -0
  404. data/ext/dgbsvxx.c +289 -0
  405. data/ext/dgbtf2.c +93 -0
  406. data/ext/dgbtrf.c +93 -0
  407. data/ext/dgbtrs.c +111 -0
  408. data/ext/dgebak.c +101 -0
  409. data/ext/dgebal.c +91 -0
  410. data/ext/dgebd2.c +112 -0
  411. data/ext/dgebrd.c +127 -0
  412. data/ext/dgecon.c +78 -0
  413. data/ext/dgeequ.c +88 -0
  414. data/ext/dgeequb.c +88 -0
  415. data/ext/dgees.c +148 -0
  416. data/ext/dgeesx.c +170 -0
  417. data/ext/dgeev.c +137 -0
  418. data/ext/dgeevx.c +181 -0
  419. data/ext/dgegs.c +171 -0
  420. data/ext/dgegv.c +171 -0
  421. data/ext/dgehd2.c +92 -0
  422. data/ext/dgehrd.c +107 -0
  423. data/ext/dgejsv.c +159 -0
  424. data/ext/dgelq2.c +86 -0
  425. data/ext/dgelqf.c +103 -0
  426. data/ext/dgels.c +137 -0
  427. data/ext/dgelsd.c +149 -0
  428. data/ext/dgelss.c +148 -0
  429. data/ext/dgelsx.c +136 -0
  430. data/ext/dgelsy.c +163 -0
  431. data/ext/dgeql2.c +88 -0
  432. data/ext/dgeqlf.c +103 -0
  433. data/ext/dgeqp3.c +126 -0
  434. data/ext/dgeqpf.c +111 -0
  435. data/ext/dgeqr2.c +88 -0
  436. data/ext/dgeqr2p.c +88 -0
  437. data/ext/dgeqrf.c +103 -0
  438. data/ext/dgeqrfp.c +103 -0
  439. data/ext/dgerfs.c +153 -0
  440. data/ext/dgerfsx.c +219 -0
  441. data/ext/dgerq2.c +86 -0
  442. data/ext/dgerqf.c +103 -0
  443. data/ext/dgesc2.c +108 -0
  444. data/ext/dgesdd.c +132 -0
  445. data/ext/dgesv.c +107 -0
  446. data/ext/dgesvd.c +143 -0
  447. data/ext/dgesvj.c +156 -0
  448. data/ext/dgesvx.c +278 -0
  449. data/ext/dgesvxx.c +281 -0
  450. data/ext/dgetc2.c +89 -0
  451. data/ext/dgetf2.c +85 -0
  452. data/ext/dgetrf.c +85 -0
  453. data/ext/dgetri.c +103 -0
  454. data/ext/dgetrs.c +103 -0
  455. data/ext/dggbak.c +113 -0
  456. data/ext/dggbal.c +128 -0
  457. data/ext/dgges.c +198 -0
  458. data/ext/dggesx.c +231 -0
  459. data/ext/dggev.c +171 -0
  460. data/ext/dggevx.c +229 -0
  461. data/ext/dggglm.c +156 -0
  462. data/ext/dgghrd.c +167 -0
  463. data/ext/dgglse.c +171 -0
  464. data/ext/dggqrf.c +137 -0
  465. data/ext/dggrqf.c +141 -0
  466. data/ext/dggsvd.c +181 -0
  467. data/ext/dggsvp.c +171 -0
  468. data/ext/dgsvj0.c +182 -0
  469. data/ext/dgsvj1.c +186 -0
  470. data/ext/dgtcon.c +124 -0
  471. data/ext/dgtrfs.c +209 -0
  472. data/ext/dgtsv.c +142 -0
  473. data/ext/dgtsvx.c +256 -0
  474. data/ext/dgttrf.c +132 -0
  475. data/ext/dgttrs.c +137 -0
  476. data/ext/dgtts2.c +134 -0
  477. data/ext/dhgeqz.c +213 -0
  478. data/ext/dhsein.c +205 -0
  479. data/ext/dhseqr.c +153 -0
  480. data/ext/disnan.c +51 -0
  481. data/ext/dla_gbamv.c +129 -0
  482. data/ext/dla_gbrcond.c +142 -0
  483. data/ext/dla_gbrfsx_extended.c +293 -0
  484. data/ext/dla_gbrpvgrw.c +87 -0
  485. data/ext/dla_geamv.c +119 -0
  486. data/ext/dla_gercond.c +134 -0
  487. data/ext/dla_gerfsx_extended.c +281 -0
  488. data/ext/dla_lin_berr.c +84 -0
  489. data/ext/dla_porcond.c +122 -0
  490. data/ext/dla_porfsx_extended.c +271 -0
  491. data/ext/dla_porpvgrw.c +95 -0
  492. data/ext/dla_rpvgrw.c +79 -0
  493. data/ext/dla_syamv.c +113 -0
  494. data/ext/dla_syrcond.c +134 -0
  495. data/ext/dla_syrfsx_extended.c +283 -0
  496. data/ext/dla_syrpvgrw.c +107 -0
  497. data/ext/dla_wwaddw.c +102 -0
  498. data/ext/dlabad.c +54 -0
  499. data/ext/dlabrd.c +132 -0
  500. data/ext/dlacn2.c +106 -0
  501. data/ext/dlacon.c +83 -0
  502. data/ext/dlacpy.c +77 -0
  503. data/ext/dladiv.c +66 -0
  504. data/ext/dlae2.c +62 -0
  505. data/ext/dlaebz.c +218 -0
  506. data/ext/dlaed0.c +127 -0
  507. data/ext/dlaed1.c +133 -0
  508. data/ext/dlaed2.c +189 -0
  509. data/ext/dlaed3.c +161 -0
  510. data/ext/dlaed4.c +90 -0
  511. data/ext/dlaed5.c +87 -0
  512. data/ext/dlaed6.c +90 -0
  513. data/ext/dlaed7.c +248 -0
  514. data/ext/dlaed8.c +206 -0
  515. data/ext/dlaed9.c +111 -0
  516. data/ext/dlaeda.c +160 -0
  517. data/ext/dlaein.c +143 -0
  518. data/ext/dlaev2.c +68 -0
  519. data/ext/dlaexc.c +118 -0
  520. data/ext/dlag2.c +91 -0
  521. data/ext/dlag2s.c +76 -0
  522. data/ext/dlags2.c +90 -0
  523. data/ext/dlagtf.c +140 -0
  524. data/ext/dlagtm.c +132 -0
  525. data/ext/dlagts.c +139 -0
  526. data/ext/dlagv2.c +132 -0
  527. data/ext/dlahqr.c +143 -0
  528. data/ext/dlahr2.c +112 -0
  529. data/ext/dlahrd.c +112 -0
  530. data/ext/dlaic1.c +89 -0
  531. data/ext/dlaln2.c +120 -0
  532. data/ext/dlals0.c +201 -0
  533. data/ext/dlalsa.c +270 -0
  534. data/ext/dlalsd.c +142 -0
  535. data/ext/dlamrg.c +80 -0
  536. data/ext/dlaneg.c +83 -0
  537. data/ext/dlangb.c +78 -0
  538. data/ext/dlange.c +74 -0
  539. data/ext/dlangt.c +87 -0
  540. data/ext/dlanhs.c +70 -0
  541. data/ext/dlansb.c +78 -0
  542. data/ext/dlansf.c +80 -0
  543. data/ext/dlansp.c +76 -0
  544. data/ext/dlanst.c +75 -0
  545. data/ext/dlansy.c +74 -0
  546. data/ext/dlantb.c +82 -0
  547. data/ext/dlantp.c +80 -0
  548. data/ext/dlantr.c +82 -0
  549. data/ext/dlanv2.c +82 -0
  550. data/ext/dlapll.c +105 -0
  551. data/ext/dlapmr.c +97 -0
  552. data/ext/dlapmt.c +101 -0
  553. data/ext/dlapy2.c +55 -0
  554. data/ext/dlapy3.c +59 -0
  555. data/ext/dlaqgb.c +117 -0
  556. data/ext/dlaqge.c +109 -0
  557. data/ext/dlaqp2.c +158 -0
  558. data/ext/dlaqps.c +208 -0
  559. data/ext/dlaqr0.c +153 -0
  560. data/ext/dlaqr1.c +82 -0
  561. data/ext/dlaqr2.c +182 -0
  562. data/ext/dlaqr3.c +182 -0
  563. data/ext/dlaqr4.c +153 -0
  564. data/ext/dlaqr5.c +200 -0
  565. data/ext/dlaqsb.c +101 -0
  566. data/ext/dlaqsp.c +94 -0
  567. data/ext/dlaqsy.c +97 -0
  568. data/ext/dlaqtr.c +114 -0
  569. data/ext/dlar1v.c +173 -0
  570. data/ext/dlar2v.c +149 -0
  571. data/ext/dlarf.c +101 -0
  572. data/ext/dlarfb.c +123 -0
  573. data/ext/dlarfg.c +83 -0
  574. data/ext/dlarfgp.c +83 -0
  575. data/ext/dlarft.c +105 -0
  576. data/ext/dlarfx.c +93 -0
  577. data/ext/dlargv.c +114 -0
  578. data/ext/dlarnv.c +83 -0
  579. data/ext/dlarra.c +124 -0
  580. data/ext/dlarrb.c +178 -0
  581. data/ext/dlarrc.c +96 -0
  582. data/ext/dlarrd.c +190 -0
  583. data/ext/dlarre.c +221 -0
  584. data/ext/dlarrf.c +176 -0
  585. data/ext/dlarrj.c +147 -0
  586. data/ext/dlarrk.c +97 -0
  587. data/ext/dlarrr.c +82 -0
  588. data/ext/dlarrv.c +271 -0
  589. data/ext/dlarscl2.c +82 -0
  590. data/ext/dlartg.c +61 -0
  591. data/ext/dlartgp.c +61 -0
  592. data/ext/dlartgs.c +62 -0
  593. data/ext/dlartv.c +130 -0
  594. data/ext/dlaruv.c +79 -0
  595. data/ext/dlarz.c +105 -0
  596. data/ext/dlarzb.c +127 -0
  597. data/ext/dlarzt.c +105 -0
  598. data/ext/dlas2.c +62 -0
  599. data/ext/dlascl.c +97 -0
  600. data/ext/dlascl2.c +82 -0
  601. data/ext/dlasd0.c +120 -0
  602. data/ext/dlasd1.c +162 -0
  603. data/ext/dlasd2.c +228 -0
  604. data/ext/dlasd3.c +202 -0
  605. data/ext/dlasd4.c +93 -0
  606. data/ext/dlasd5.c +90 -0
  607. data/ext/dlasd6.c +236 -0
  608. data/ext/dlasd7.c +225 -0
  609. data/ext/dlasd8.c +173 -0
  610. data/ext/dlasda.c +221 -0
  611. data/ext/dlasdq.c +186 -0
  612. data/ext/dlasdt.c +82 -0
  613. data/ext/dlaset.c +86 -0
  614. data/ext/dlasq1.c +96 -0
  615. data/ext/dlasq2.c +74 -0
  616. data/ext/dlasq3.c +138 -0
  617. data/ext/dlasq4.c +107 -0
  618. data/ext/dlasq5.c +94 -0
  619. data/ext/dlasq6.c +86 -0
  620. data/ext/dlasr.c +110 -0
  621. data/ext/dlasrt.c +74 -0
  622. data/ext/dlassq.c +70 -0
  623. data/ext/dlasv2.c +74 -0
  624. data/ext/dlaswp.c +94 -0
  625. data/ext/dlasy2.c +126 -0
  626. data/ext/dlasyf.c +97 -0
  627. data/ext/dlat2s.c +76 -0
  628. data/ext/dlatbs.c +130 -0
  629. data/ext/dlatdf.c +119 -0
  630. data/ext/dlatps.c +124 -0
  631. data/ext/dlatrd.c +105 -0
  632. data/ext/dlatrs.c +126 -0
  633. data/ext/dlatrz.c +87 -0
  634. data/ext/dlatzm.c +131 -0
  635. data/ext/dlauu2.c +77 -0
  636. data/ext/dlauum.c +77 -0
  637. data/ext/dopgtr.c +91 -0
  638. data/ext/dopmtr.c +116 -0
  639. data/ext/dorbdb.c +232 -0
  640. data/ext/dorcsd.c +197 -0
  641. data/ext/dorg2l.c +92 -0
  642. data/ext/dorg2r.c +92 -0
  643. data/ext/dorgbr.c +115 -0
  644. data/ext/dorghr.c +111 -0
  645. data/ext/dorgl2.c +90 -0
  646. data/ext/dorglq.c +107 -0
  647. data/ext/dorgql.c +107 -0
  648. data/ext/dorgqr.c +107 -0
  649. data/ext/dorgr2.c +90 -0
  650. data/ext/dorgrq.c +107 -0
  651. data/ext/dorgtr.c +107 -0
  652. data/ext/dorm2l.c +114 -0
  653. data/ext/dorm2r.c +114 -0
  654. data/ext/dormbr.c +139 -0
  655. data/ext/dormhr.c +133 -0
  656. data/ext/dorml2.c +110 -0
  657. data/ext/dormlq.c +125 -0
  658. data/ext/dormql.c +129 -0
  659. data/ext/dormqr.c +129 -0
  660. data/ext/dormr2.c +110 -0
  661. data/ext/dormr3.c +114 -0
  662. data/ext/dormrq.c +125 -0
  663. data/ext/dormrz.c +129 -0
  664. data/ext/dormtr.c +129 -0
  665. data/ext/dpbcon.c +82 -0
  666. data/ext/dpbequ.c +83 -0
  667. data/ext/dpbrfs.c +145 -0
  668. data/ext/dpbstf.c +81 -0
  669. data/ext/dpbsv.c +107 -0
  670. data/ext/dpbsvx.c +201 -0
  671. data/ext/dpbtf2.c +81 -0
  672. data/ext/dpbtrf.c +81 -0
  673. data/ext/dpbtrs.c +95 -0
  674. data/ext/dpftrf.c +82 -0
  675. data/ext/dpftri.c +82 -0
  676. data/ext/dpftrs.c +97 -0
  677. data/ext/dpocon.c +78 -0
  678. data/ext/dpoequ.c +75 -0
  679. data/ext/dpoequb.c +75 -0
  680. data/ext/dporfs.c +141 -0
  681. data/ext/dporfsx.c +206 -0
  682. data/ext/dposv.c +103 -0
  683. data/ext/dposvx.c +197 -0
  684. data/ext/dposvxx.c +235 -0
  685. data/ext/dpotf2.c +77 -0
  686. data/ext/dpotrf.c +77 -0
  687. data/ext/dpotri.c +77 -0
  688. data/ext/dpotrs.c +91 -0
  689. data/ext/dppcon.c +78 -0
  690. data/ext/dppequ.c +79 -0
  691. data/ext/dpprfs.c +139 -0
  692. data/ext/dppsv.c +104 -0
  693. data/ext/dppsvx.c +191 -0
  694. data/ext/dpptrf.c +78 -0
  695. data/ext/dpptri.c +78 -0
  696. data/ext/dpptrs.c +93 -0
  697. data/ext/dpstf2.c +95 -0
  698. data/ext/dpstrf.c +95 -0
  699. data/ext/dptcon.c +81 -0
  700. data/ext/dpteqr.c +126 -0
  701. data/ext/dptrfs.c +154 -0
  702. data/ext/dptsv.c +119 -0
  703. data/ext/dptsvx.c +168 -0
  704. data/ext/dpttrf.c +93 -0
  705. data/ext/dpttrs.c +97 -0
  706. data/ext/dptts2.c +94 -0
  707. data/ext/drscl.c +79 -0
  708. data/ext/dsbev.c +107 -0
  709. data/ext/dsbevd.c +140 -0
  710. data/ext/dsbevx.c +157 -0
  711. data/ext/dsbgst.c +117 -0
  712. data/ext/dsbgv.c +137 -0
  713. data/ext/dsbgvd.c +170 -0
  714. data/ext/dsbgvx.c +197 -0
  715. data/ext/dsbtrd.c +130 -0
  716. data/ext/dsfrk.c +109 -0
  717. data/ext/dsgesv.c +115 -0
  718. data/ext/dspcon.c +88 -0
  719. data/ext/dspev.c +102 -0
  720. data/ext/dspevd.c +135 -0
  721. data/ext/dspevx.c +141 -0
  722. data/ext/dspgst.c +94 -0
  723. data/ext/dspgv.c +129 -0
  724. data/ext/dspgvd.c +162 -0
  725. data/ext/dspgvx.c +168 -0
  726. data/ext/dsposv.c +111 -0
  727. data/ext/dsprfs.c +149 -0
  728. data/ext/dspsv.c +110 -0
  729. data/ext/dspsvx.c +163 -0
  730. data/ext/dsptrd.c +100 -0
  731. data/ext/dsptrf.c +84 -0
  732. data/ext/dsptri.c +89 -0
  733. data/ext/dsptrs.c +101 -0
  734. data/ext/dstebz.c +135 -0
  735. data/ext/dstedc.c +159 -0
  736. data/ext/dstegr.c +188 -0
  737. data/ext/dstein.c +134 -0
  738. data/ext/dstemr.c +193 -0
  739. data/ext/dsteqr.c +126 -0
  740. data/ext/dsterf.c +93 -0
  741. data/ext/dstev.c +111 -0
  742. data/ext/dstevd.c +144 -0
  743. data/ext/dstevr.c +188 -0
  744. data/ext/dstevx.c +158 -0
  745. data/ext/dsycon.c +90 -0
  746. data/ext/dsyconv.c +84 -0
  747. data/ext/dsyequb.c +82 -0
  748. data/ext/dsyev.c +107 -0
  749. data/ext/dsyevd.c +125 -0
  750. data/ext/dsyevr.c +172 -0
  751. data/ext/dsyevx.c +157 -0
  752. data/ext/dsygs2.c +95 -0
  753. data/ext/dsygst.c +95 -0
  754. data/ext/dsygv.c +137 -0
  755. data/ext/dsygvd.c +155 -0
  756. data/ext/dsygvx.c +187 -0
  757. data/ext/dsyrfs.c +153 -0
  758. data/ext/dsyrfsx.c +218 -0
  759. data/ext/dsysv.c +129 -0
  760. data/ext/dsysvx.c +183 -0
  761. data/ext/dsysvxx.c +258 -0
  762. data/ext/dsyswapr.c +82 -0
  763. data/ext/dsytd2.c +101 -0
  764. data/ext/dsytf2.c +85 -0
  765. data/ext/dsytrd.c +113 -0
  766. data/ext/dsytrf.c +97 -0
  767. data/ext/dsytri.c +92 -0
  768. data/ext/dsytri2.c +108 -0
  769. data/ext/dsytri2x.c +96 -0
  770. data/ext/dsytrs.c +103 -0
  771. data/ext/dsytrs2.c +106 -0
  772. data/ext/dtbcon.c +86 -0
  773. data/ext/dtbrfs.c +127 -0
  774. data/ext/dtbtrs.c +103 -0
  775. data/ext/dtfsm.c +110 -0
  776. data/ext/dtftri.c +86 -0
  777. data/ext/dtfttp.c +79 -0
  778. data/ext/dtfttr.c +80 -0
  779. data/ext/dtgevc.c +153 -0
  780. data/ext/dtgex2.c +180 -0
  781. data/ext/dtgexc.c +187 -0
  782. data/ext/dtgsen.c +252 -0
  783. data/ext/dtgsja.c +227 -0
  784. data/ext/dtgsna.c +164 -0
  785. data/ext/dtgsy2.c +182 -0
  786. data/ext/dtgsyl.c +190 -0
  787. data/ext/dtpcon.c +82 -0
  788. data/ext/dtprfs.c +123 -0
  789. data/ext/dtptri.c +82 -0
  790. data/ext/dtptrs.c +101 -0
  791. data/ext/dtpttf.c +79 -0
  792. data/ext/dtpttr.c +76 -0
  793. data/ext/dtrcon.c +82 -0
  794. data/ext/dtrevc.c +150 -0
  795. data/ext/dtrexc.c +116 -0
  796. data/ext/dtrrfs.c +123 -0
  797. data/ext/dtrsen.c +169 -0
  798. data/ext/dtrsna.c +137 -0
  799. data/ext/dtrsyl.c +116 -0
  800. data/ext/dtrti2.c +81 -0
  801. data/ext/dtrtri.c +81 -0
  802. data/ext/dtrtrs.c +99 -0
  803. data/ext/dtrttf.c +77 -0
  804. data/ext/dtrttp.c +73 -0
  805. data/ext/dtzrqf.c +83 -0
  806. data/ext/dtzrzf.c +101 -0
  807. data/ext/dzsum1.c +63 -0
  808. data/ext/icmax1.c +63 -0
  809. data/ext/ieeeck.c +59 -0
  810. data/ext/ilaclc.c +65 -0
  811. data/ext/ilaclr.c +65 -0
  812. data/ext/iladiag.c +51 -0
  813. data/ext/iladlc.c +65 -0
  814. data/ext/iladlr.c +65 -0
  815. data/ext/ilaenv.c +75 -0
  816. data/ext/ilaprec.c +51 -0
  817. data/ext/ilaslc.c +65 -0
  818. data/ext/ilaslr.c +65 -0
  819. data/ext/ilatrans.c +51 -0
  820. data/ext/ilauplo.c +51 -0
  821. data/ext/ilaver.c +53 -0
  822. data/ext/ilazlc.c +65 -0
  823. data/ext/ilazlr.c +65 -0
  824. data/ext/iparmq.c +75 -0
  825. data/ext/izmax1.c +63 -0
  826. data/ext/lsamen.c +59 -0
  827. data/ext/rb_lapack.c +3279 -0
  828. data/ext/sbbcsd.c +287 -0
  829. data/ext/sbdsdc.c +157 -0
  830. data/ext/sbdsqr.c +182 -0
  831. data/ext/scsum1.c +63 -0
  832. data/ext/sdisna.c +75 -0
  833. data/ext/sgbbrd.c +154 -0
  834. data/ext/sgbcon.c +98 -0
  835. data/ext/sgbequ.c +98 -0
  836. data/ext/sgbequb.c +96 -0
  837. data/ext/sgbrfs.c +161 -0
  838. data/ext/sgbrfsx.c +249 -0
  839. data/ext/sgbsv.c +115 -0
  840. data/ext/sgbsvx.c +286 -0
  841. data/ext/sgbsvxx.c +289 -0
  842. data/ext/sgbtf2.c +93 -0
  843. data/ext/sgbtrf.c +93 -0
  844. data/ext/sgbtrs.c +111 -0
  845. data/ext/sgebak.c +101 -0
  846. data/ext/sgebal.c +91 -0
  847. data/ext/sgebd2.c +112 -0
  848. data/ext/sgebrd.c +127 -0
  849. data/ext/sgecon.c +78 -0
  850. data/ext/sgeequ.c +88 -0
  851. data/ext/sgeequb.c +88 -0
  852. data/ext/sgees.c +148 -0
  853. data/ext/sgeesx.c +170 -0
  854. data/ext/sgeev.c +137 -0
  855. data/ext/sgeevx.c +181 -0
  856. data/ext/sgegs.c +171 -0
  857. data/ext/sgegv.c +171 -0
  858. data/ext/sgehd2.c +92 -0
  859. data/ext/sgehrd.c +107 -0
  860. data/ext/sgejsv.c +159 -0
  861. data/ext/sgelq2.c +86 -0
  862. data/ext/sgelqf.c +103 -0
  863. data/ext/sgels.c +137 -0
  864. data/ext/sgelsd.c +149 -0
  865. data/ext/sgelss.c +148 -0
  866. data/ext/sgelsx.c +136 -0
  867. data/ext/sgelsy.c +163 -0
  868. data/ext/sgeql2.c +88 -0
  869. data/ext/sgeqlf.c +103 -0
  870. data/ext/sgeqp3.c +126 -0
  871. data/ext/sgeqpf.c +111 -0
  872. data/ext/sgeqr2.c +88 -0
  873. data/ext/sgeqr2p.c +88 -0
  874. data/ext/sgeqrf.c +103 -0
  875. data/ext/sgeqrfp.c +103 -0
  876. data/ext/sgerfs.c +153 -0
  877. data/ext/sgerfsx.c +219 -0
  878. data/ext/sgerq2.c +86 -0
  879. data/ext/sgerqf.c +103 -0
  880. data/ext/sgesc2.c +108 -0
  881. data/ext/sgesdd.c +132 -0
  882. data/ext/sgesv.c +107 -0
  883. data/ext/sgesvd.c +143 -0
  884. data/ext/sgesvj.c +156 -0
  885. data/ext/sgesvx.c +278 -0
  886. data/ext/sgesvxx.c +281 -0
  887. data/ext/sgetc2.c +89 -0
  888. data/ext/sgetf2.c +85 -0
  889. data/ext/sgetrf.c +85 -0
  890. data/ext/sgetri.c +103 -0
  891. data/ext/sgetrs.c +103 -0
  892. data/ext/sggbak.c +113 -0
  893. data/ext/sggbal.c +128 -0
  894. data/ext/sgges.c +198 -0
  895. data/ext/sggesx.c +231 -0
  896. data/ext/sggev.c +171 -0
  897. data/ext/sggevx.c +229 -0
  898. data/ext/sggglm.c +156 -0
  899. data/ext/sgghrd.c +167 -0
  900. data/ext/sgglse.c +171 -0
  901. data/ext/sggqrf.c +137 -0
  902. data/ext/sggrqf.c +141 -0
  903. data/ext/sggsvd.c +181 -0
  904. data/ext/sggsvp.c +171 -0
  905. data/ext/sgsvj0.c +182 -0
  906. data/ext/sgsvj1.c +186 -0
  907. data/ext/sgtcon.c +124 -0
  908. data/ext/sgtrfs.c +209 -0
  909. data/ext/sgtsv.c +142 -0
  910. data/ext/sgtsvx.c +256 -0
  911. data/ext/sgttrf.c +132 -0
  912. data/ext/sgttrs.c +137 -0
  913. data/ext/sgtts2.c +134 -0
  914. data/ext/shgeqz.c +213 -0
  915. data/ext/shsein.c +205 -0
  916. data/ext/shseqr.c +153 -0
  917. data/ext/sisnan.c +51 -0
  918. data/ext/sla_gbamv.c +129 -0
  919. data/ext/sla_gbrcond.c +142 -0
  920. data/ext/sla_gbrfsx_extended.c +291 -0
  921. data/ext/sla_gbrpvgrw.c +87 -0
  922. data/ext/sla_geamv.c +119 -0
  923. data/ext/sla_gercond.c +134 -0
  924. data/ext/sla_gerfsx_extended.c +283 -0
  925. data/ext/sla_lin_berr.c +84 -0
  926. data/ext/sla_porcond.c +122 -0
  927. data/ext/sla_porfsx_extended.c +271 -0
  928. data/ext/sla_porpvgrw.c +95 -0
  929. data/ext/sla_rpvgrw.c +79 -0
  930. data/ext/sla_syamv.c +116 -0
  931. data/ext/sla_syrcond.c +134 -0
  932. data/ext/sla_syrfsx_extended.c +283 -0
  933. data/ext/sla_syrpvgrw.c +107 -0
  934. data/ext/sla_wwaddw.c +102 -0
  935. data/ext/slabad.c +54 -0
  936. data/ext/slabrd.c +132 -0
  937. data/ext/slacn2.c +106 -0
  938. data/ext/slacon.c +83 -0
  939. data/ext/slacpy.c +77 -0
  940. data/ext/sladiv.c +66 -0
  941. data/ext/slae2.c +62 -0
  942. data/ext/slaebz.c +218 -0
  943. data/ext/slaed0.c +127 -0
  944. data/ext/slaed1.c +133 -0
  945. data/ext/slaed2.c +189 -0
  946. data/ext/slaed3.c +161 -0
  947. data/ext/slaed4.c +90 -0
  948. data/ext/slaed5.c +87 -0
  949. data/ext/slaed6.c +90 -0
  950. data/ext/slaed7.c +248 -0
  951. data/ext/slaed8.c +206 -0
  952. data/ext/slaed9.c +111 -0
  953. data/ext/slaeda.c +160 -0
  954. data/ext/slaein.c +143 -0
  955. data/ext/slaev2.c +68 -0
  956. data/ext/slaexc.c +118 -0
  957. data/ext/slag2.c +91 -0
  958. data/ext/slag2d.c +76 -0
  959. data/ext/slags2.c +90 -0
  960. data/ext/slagtf.c +140 -0
  961. data/ext/slagtm.c +132 -0
  962. data/ext/slagts.c +139 -0
  963. data/ext/slagv2.c +132 -0
  964. data/ext/slahqr.c +143 -0
  965. data/ext/slahr2.c +112 -0
  966. data/ext/slahrd.c +114 -0
  967. data/ext/slaic1.c +89 -0
  968. data/ext/slaln2.c +120 -0
  969. data/ext/slals0.c +201 -0
  970. data/ext/slalsa.c +270 -0
  971. data/ext/slalsd.c +142 -0
  972. data/ext/slamrg.c +80 -0
  973. data/ext/slaneg.c +83 -0
  974. data/ext/slangb.c +78 -0
  975. data/ext/slange.c +74 -0
  976. data/ext/slangt.c +87 -0
  977. data/ext/slanhs.c +70 -0
  978. data/ext/slansb.c +78 -0
  979. data/ext/slansf.c +78 -0
  980. data/ext/slansp.c +76 -0
  981. data/ext/slanst.c +75 -0
  982. data/ext/slansy.c +74 -0
  983. data/ext/slantb.c +82 -0
  984. data/ext/slantp.c +80 -0
  985. data/ext/slantr.c +82 -0
  986. data/ext/slanv2.c +82 -0
  987. data/ext/slapll.c +105 -0
  988. data/ext/slapmr.c +97 -0
  989. data/ext/slapmt.c +101 -0
  990. data/ext/slapy2.c +55 -0
  991. data/ext/slapy3.c +59 -0
  992. data/ext/slaqgb.c +117 -0
  993. data/ext/slaqge.c +109 -0
  994. data/ext/slaqp2.c +158 -0
  995. data/ext/slaqps.c +208 -0
  996. data/ext/slaqr0.c +153 -0
  997. data/ext/slaqr1.c +82 -0
  998. data/ext/slaqr2.c +182 -0
  999. data/ext/slaqr3.c +182 -0
  1000. data/ext/slaqr4.c +153 -0
  1001. data/ext/slaqr5.c +200 -0
  1002. data/ext/slaqsb.c +101 -0
  1003. data/ext/slaqsp.c +94 -0
  1004. data/ext/slaqsy.c +97 -0
  1005. data/ext/slaqtr.c +114 -0
  1006. data/ext/slar1v.c +173 -0
  1007. data/ext/slar2v.c +149 -0
  1008. data/ext/slarf.c +101 -0
  1009. data/ext/slarfb.c +123 -0
  1010. data/ext/slarfg.c +83 -0
  1011. data/ext/slarfgp.c +83 -0
  1012. data/ext/slarft.c +105 -0
  1013. data/ext/slarfx.c +93 -0
  1014. data/ext/slargv.c +114 -0
  1015. data/ext/slarnv.c +83 -0
  1016. data/ext/slarra.c +124 -0
  1017. data/ext/slarrb.c +178 -0
  1018. data/ext/slarrc.c +96 -0
  1019. data/ext/slarrd.c +190 -0
  1020. data/ext/slarre.c +221 -0
  1021. data/ext/slarrf.c +176 -0
  1022. data/ext/slarrj.c +147 -0
  1023. data/ext/slarrk.c +97 -0
  1024. data/ext/slarrr.c +82 -0
  1025. data/ext/slarrv.c +271 -0
  1026. data/ext/slarscl2.c +82 -0
  1027. data/ext/slartg.c +61 -0
  1028. data/ext/slartgp.c +61 -0
  1029. data/ext/slartgs.c +62 -0
  1030. data/ext/slartv.c +130 -0
  1031. data/ext/slaruv.c +79 -0
  1032. data/ext/slarz.c +105 -0
  1033. data/ext/slarzb.c +127 -0
  1034. data/ext/slarzt.c +105 -0
  1035. data/ext/slas2.c +62 -0
  1036. data/ext/slascl.c +97 -0
  1037. data/ext/slascl2.c +82 -0
  1038. data/ext/slasd0.c +120 -0
  1039. data/ext/slasd1.c +160 -0
  1040. data/ext/slasd2.c +228 -0
  1041. data/ext/slasd3.c +212 -0
  1042. data/ext/slasd4.c +93 -0
  1043. data/ext/slasd5.c +90 -0
  1044. data/ext/slasd6.c +236 -0
  1045. data/ext/slasd7.c +225 -0
  1046. data/ext/slasd8.c +173 -0
  1047. data/ext/slasda.c +221 -0
  1048. data/ext/slasdq.c +186 -0
  1049. data/ext/slasdt.c +82 -0
  1050. data/ext/slaset.c +86 -0
  1051. data/ext/slasq1.c +96 -0
  1052. data/ext/slasq2.c +74 -0
  1053. data/ext/slasq3.c +138 -0
  1054. data/ext/slasq4.c +107 -0
  1055. data/ext/slasq5.c +94 -0
  1056. data/ext/slasq6.c +86 -0
  1057. data/ext/slasr.c +110 -0
  1058. data/ext/slasrt.c +74 -0
  1059. data/ext/slassq.c +70 -0
  1060. data/ext/slasv2.c +74 -0
  1061. data/ext/slaswp.c +94 -0
  1062. data/ext/slasy2.c +126 -0
  1063. data/ext/slasyf.c +97 -0
  1064. data/ext/slatbs.c +130 -0
  1065. data/ext/slatdf.c +119 -0
  1066. data/ext/slatps.c +124 -0
  1067. data/ext/slatrd.c +105 -0
  1068. data/ext/slatrs.c +126 -0
  1069. data/ext/slatrz.c +87 -0
  1070. data/ext/slatzm.c +131 -0
  1071. data/ext/slauu2.c +77 -0
  1072. data/ext/slauum.c +77 -0
  1073. data/ext/sopgtr.c +91 -0
  1074. data/ext/sopmtr.c +116 -0
  1075. data/ext/sorbdb.c +232 -0
  1076. data/ext/sorcsd.c +197 -0
  1077. data/ext/sorg2l.c +92 -0
  1078. data/ext/sorg2r.c +92 -0
  1079. data/ext/sorgbr.c +115 -0
  1080. data/ext/sorghr.c +111 -0
  1081. data/ext/sorgl2.c +90 -0
  1082. data/ext/sorglq.c +107 -0
  1083. data/ext/sorgql.c +107 -0
  1084. data/ext/sorgqr.c +107 -0
  1085. data/ext/sorgr2.c +90 -0
  1086. data/ext/sorgrq.c +107 -0
  1087. data/ext/sorgtr.c +107 -0
  1088. data/ext/sorm2l.c +114 -0
  1089. data/ext/sorm2r.c +114 -0
  1090. data/ext/sormbr.c +139 -0
  1091. data/ext/sormhr.c +133 -0
  1092. data/ext/sorml2.c +110 -0
  1093. data/ext/sormlq.c +125 -0
  1094. data/ext/sormql.c +129 -0
  1095. data/ext/sormqr.c +129 -0
  1096. data/ext/sormr2.c +110 -0
  1097. data/ext/sormr3.c +114 -0
  1098. data/ext/sormrq.c +125 -0
  1099. data/ext/sormrz.c +129 -0
  1100. data/ext/sormtr.c +129 -0
  1101. data/ext/spbcon.c +82 -0
  1102. data/ext/spbequ.c +83 -0
  1103. data/ext/spbrfs.c +145 -0
  1104. data/ext/spbstf.c +81 -0
  1105. data/ext/spbsv.c +107 -0
  1106. data/ext/spbsvx.c +201 -0
  1107. data/ext/spbtf2.c +81 -0
  1108. data/ext/spbtrf.c +81 -0
  1109. data/ext/spbtrs.c +95 -0
  1110. data/ext/spftrf.c +82 -0
  1111. data/ext/spftri.c +82 -0
  1112. data/ext/spftrs.c +97 -0
  1113. data/ext/spocon.c +78 -0
  1114. data/ext/spoequ.c +75 -0
  1115. data/ext/spoequb.c +75 -0
  1116. data/ext/sporfs.c +141 -0
  1117. data/ext/sporfsx.c +206 -0
  1118. data/ext/sposv.c +103 -0
  1119. data/ext/sposvx.c +197 -0
  1120. data/ext/sposvxx.c +235 -0
  1121. data/ext/spotf2.c +77 -0
  1122. data/ext/spotrf.c +77 -0
  1123. data/ext/spotri.c +77 -0
  1124. data/ext/spotrs.c +91 -0
  1125. data/ext/sppcon.c +78 -0
  1126. data/ext/sppequ.c +79 -0
  1127. data/ext/spprfs.c +139 -0
  1128. data/ext/sppsv.c +104 -0
  1129. data/ext/sppsvx.c +191 -0
  1130. data/ext/spptrf.c +78 -0
  1131. data/ext/spptri.c +78 -0
  1132. data/ext/spptrs.c +93 -0
  1133. data/ext/spstf2.c +95 -0
  1134. data/ext/spstrf.c +95 -0
  1135. data/ext/sptcon.c +81 -0
  1136. data/ext/spteqr.c +126 -0
  1137. data/ext/sptrfs.c +154 -0
  1138. data/ext/sptsv.c +119 -0
  1139. data/ext/sptsvx.c +168 -0
  1140. data/ext/spttrf.c +93 -0
  1141. data/ext/spttrs.c +97 -0
  1142. data/ext/sptts2.c +94 -0
  1143. data/ext/srscl.c +79 -0
  1144. data/ext/ssbev.c +107 -0
  1145. data/ext/ssbevd.c +140 -0
  1146. data/ext/ssbevx.c +157 -0
  1147. data/ext/ssbgst.c +117 -0
  1148. data/ext/ssbgv.c +137 -0
  1149. data/ext/ssbgvd.c +170 -0
  1150. data/ext/ssbgvx.c +197 -0
  1151. data/ext/ssbtrd.c +130 -0
  1152. data/ext/ssfrk.c +109 -0
  1153. data/ext/sspcon.c +88 -0
  1154. data/ext/sspev.c +102 -0
  1155. data/ext/sspevd.c +135 -0
  1156. data/ext/sspevx.c +141 -0
  1157. data/ext/sspgst.c +94 -0
  1158. data/ext/sspgv.c +129 -0
  1159. data/ext/sspgvd.c +162 -0
  1160. data/ext/sspgvx.c +168 -0
  1161. data/ext/ssprfs.c +149 -0
  1162. data/ext/sspsv.c +110 -0
  1163. data/ext/sspsvx.c +163 -0
  1164. data/ext/ssptrd.c +100 -0
  1165. data/ext/ssptrf.c +84 -0
  1166. data/ext/ssptri.c +89 -0
  1167. data/ext/ssptrs.c +101 -0
  1168. data/ext/sstebz.c +135 -0
  1169. data/ext/sstedc.c +159 -0
  1170. data/ext/sstegr.c +188 -0
  1171. data/ext/sstein.c +134 -0
  1172. data/ext/sstemr.c +193 -0
  1173. data/ext/ssteqr.c +126 -0
  1174. data/ext/ssterf.c +93 -0
  1175. data/ext/sstev.c +111 -0
  1176. data/ext/sstevd.c +144 -0
  1177. data/ext/sstevr.c +188 -0
  1178. data/ext/sstevx.c +158 -0
  1179. data/ext/ssycon.c +90 -0
  1180. data/ext/ssyconv.c +84 -0
  1181. data/ext/ssyequb.c +82 -0
  1182. data/ext/ssyev.c +107 -0
  1183. data/ext/ssyevd.c +125 -0
  1184. data/ext/ssyevr.c +172 -0
  1185. data/ext/ssyevx.c +157 -0
  1186. data/ext/ssygs2.c +95 -0
  1187. data/ext/ssygst.c +95 -0
  1188. data/ext/ssygv.c +137 -0
  1189. data/ext/ssygvd.c +155 -0
  1190. data/ext/ssygvx.c +191 -0
  1191. data/ext/ssyrfs.c +153 -0
  1192. data/ext/ssyrfsx.c +218 -0
  1193. data/ext/ssysv.c +129 -0
  1194. data/ext/ssysvx.c +183 -0
  1195. data/ext/ssysvxx.c +258 -0
  1196. data/ext/ssyswapr.c +82 -0
  1197. data/ext/ssytd2.c +101 -0
  1198. data/ext/ssytf2.c +85 -0
  1199. data/ext/ssytrd.c +113 -0
  1200. data/ext/ssytrf.c +97 -0
  1201. data/ext/ssytri.c +92 -0
  1202. data/ext/ssytri2.c +127 -0
  1203. data/ext/ssytri2x.c +96 -0
  1204. data/ext/ssytrs.c +103 -0
  1205. data/ext/ssytrs2.c +106 -0
  1206. data/ext/stbcon.c +86 -0
  1207. data/ext/stbrfs.c +127 -0
  1208. data/ext/stbtrs.c +103 -0
  1209. data/ext/stfsm.c +112 -0
  1210. data/ext/stftri.c +86 -0
  1211. data/ext/stfttp.c +79 -0
  1212. data/ext/stfttr.c +80 -0
  1213. data/ext/stgevc.c +153 -0
  1214. data/ext/stgex2.c +184 -0
  1215. data/ext/stgexc.c +191 -0
  1216. data/ext/stgsen.c +252 -0
  1217. data/ext/stgsja.c +227 -0
  1218. data/ext/stgsna.c +164 -0
  1219. data/ext/stgsy2.c +182 -0
  1220. data/ext/stgsyl.c +190 -0
  1221. data/ext/stpcon.c +82 -0
  1222. data/ext/stprfs.c +123 -0
  1223. data/ext/stptri.c +82 -0
  1224. data/ext/stptrs.c +101 -0
  1225. data/ext/stpttf.c +79 -0
  1226. data/ext/stpttr.c +76 -0
  1227. data/ext/strcon.c +82 -0
  1228. data/ext/strevc.c +150 -0
  1229. data/ext/strexc.c +116 -0
  1230. data/ext/strrfs.c +123 -0
  1231. data/ext/strsen.c +169 -0
  1232. data/ext/strsna.c +137 -0
  1233. data/ext/strsyl.c +116 -0
  1234. data/ext/strti2.c +81 -0
  1235. data/ext/strtri.c +81 -0
  1236. data/ext/strtrs.c +99 -0
  1237. data/ext/strttf.c +77 -0
  1238. data/ext/strttp.c +73 -0
  1239. data/ext/stzrqf.c +83 -0
  1240. data/ext/stzrzf.c +101 -0
  1241. data/ext/xerbla.c +52 -0
  1242. data/ext/xerbla_array.c +53 -0
  1243. data/ext/zbbcsd.c +283 -0
  1244. data/ext/zbdsqr.c +182 -0
  1245. data/ext/zcgesv.c +118 -0
  1246. data/ext/zcposv.c +114 -0
  1247. data/ext/zdrscl.c +79 -0
  1248. data/ext/zgbbrd.c +157 -0
  1249. data/ext/zgbcon.c +98 -0
  1250. data/ext/zgbequ.c +98 -0
  1251. data/ext/zgbequb.c +96 -0
  1252. data/ext/zgbrfs.c +161 -0
  1253. data/ext/zgbrfsx.c +249 -0
  1254. data/ext/zgbsv.c +115 -0
  1255. data/ext/zgbsvx.c +286 -0
  1256. data/ext/zgbsvxx.c +289 -0
  1257. data/ext/zgbtf2.c +93 -0
  1258. data/ext/zgbtrf.c +93 -0
  1259. data/ext/zgbtrs.c +111 -0
  1260. data/ext/zgebak.c +101 -0
  1261. data/ext/zgebal.c +91 -0
  1262. data/ext/zgebd2.c +112 -0
  1263. data/ext/zgebrd.c +127 -0
  1264. data/ext/zgecon.c +78 -0
  1265. data/ext/zgeequ.c +88 -0
  1266. data/ext/zgeequb.c +88 -0
  1267. data/ext/zgees.c +142 -0
  1268. data/ext/zgeesx.c +152 -0
  1269. data/ext/zgeev.c +132 -0
  1270. data/ext/zgeevx.c +173 -0
  1271. data/ext/zgegs.c +166 -0
  1272. data/ext/zgegv.c +171 -0
  1273. data/ext/zgehd2.c +92 -0
  1274. data/ext/zgehrd.c +107 -0
  1275. data/ext/zgelq2.c +86 -0
  1276. data/ext/zgelqf.c +103 -0
  1277. data/ext/zgels.c +137 -0
  1278. data/ext/zgelsd.c +154 -0
  1279. data/ext/zgelss.c +151 -0
  1280. data/ext/zgelsx.c +139 -0
  1281. data/ext/zgelsy.c +166 -0
  1282. data/ext/zgeql2.c +88 -0
  1283. data/ext/zgeqlf.c +103 -0
  1284. data/ext/zgeqp3.c +129 -0
  1285. data/ext/zgeqpf.c +114 -0
  1286. data/ext/zgeqr2.c +88 -0
  1287. data/ext/zgeqr2p.c +88 -0
  1288. data/ext/zgeqrf.c +103 -0
  1289. data/ext/zgeqrfp.c +103 -0
  1290. data/ext/zgerfs.c +153 -0
  1291. data/ext/zgerfsx.c +219 -0
  1292. data/ext/zgerq2.c +86 -0
  1293. data/ext/zgerqf.c +103 -0
  1294. data/ext/zgesc2.c +108 -0
  1295. data/ext/zgesdd.c +135 -0
  1296. data/ext/zgesv.c +107 -0
  1297. data/ext/zgesvd.c +146 -0
  1298. data/ext/zgesvx.c +278 -0
  1299. data/ext/zgesvxx.c +281 -0
  1300. data/ext/zgetc2.c +89 -0
  1301. data/ext/zgetf2.c +85 -0
  1302. data/ext/zgetrf.c +85 -0
  1303. data/ext/zgetri.c +103 -0
  1304. data/ext/zgetrs.c +103 -0
  1305. data/ext/zggbak.c +113 -0
  1306. data/ext/zggbal.c +128 -0
  1307. data/ext/zgges.c +192 -0
  1308. data/ext/zggesx.c +230 -0
  1309. data/ext/zggev.c +171 -0
  1310. data/ext/zggevx.c +226 -0
  1311. data/ext/zggglm.c +156 -0
  1312. data/ext/zgghrd.c +167 -0
  1313. data/ext/zgglse.c +171 -0
  1314. data/ext/zggqrf.c +137 -0
  1315. data/ext/zggrqf.c +141 -0
  1316. data/ext/zggsvd.c +184 -0
  1317. data/ext/zggsvp.c +174 -0
  1318. data/ext/zgtcon.c +121 -0
  1319. data/ext/zgtrfs.c +209 -0
  1320. data/ext/zgtsv.c +142 -0
  1321. data/ext/zgtsvx.c +256 -0
  1322. data/ext/zgttrf.c +132 -0
  1323. data/ext/zgttrs.c +137 -0
  1324. data/ext/zgtts2.c +134 -0
  1325. data/ext/zhbev.c +110 -0
  1326. data/ext/zhbevd.c +158 -0
  1327. data/ext/zhbevx.c +160 -0
  1328. data/ext/zhbgst.c +120 -0
  1329. data/ext/zhbgv.c +140 -0
  1330. data/ext/zhbgvd.c +188 -0
  1331. data/ext/zhbgvx.c +189 -0
  1332. data/ext/zhbtrd.c +130 -0
  1333. data/ext/zhecon.c +87 -0
  1334. data/ext/zheequb.c +82 -0
  1335. data/ext/zheev.c +110 -0
  1336. data/ext/zheevd.c +143 -0
  1337. data/ext/zheevr.c +190 -0
  1338. data/ext/zheevx.c +160 -0
  1339. data/ext/zhegs2.c +95 -0
  1340. data/ext/zhegst.c +95 -0
  1341. data/ext/zhegv.c +140 -0
  1342. data/ext/zhegvd.c +173 -0
  1343. data/ext/zhegvx.c +190 -0
  1344. data/ext/zherfs.c +153 -0
  1345. data/ext/zherfsx.c +218 -0
  1346. data/ext/zhesv.c +123 -0
  1347. data/ext/zhesvx.c +183 -0
  1348. data/ext/zhesvxx.c +258 -0
  1349. data/ext/zhetd2.c +101 -0
  1350. data/ext/zhetf2.c +85 -0
  1351. data/ext/zhetrd.c +113 -0
  1352. data/ext/zhetrf.c +97 -0
  1353. data/ext/zhetri.c +92 -0
  1354. data/ext/zhetrs.c +103 -0
  1355. data/ext/zhetrs2.c +106 -0
  1356. data/ext/zhfrk.c +109 -0
  1357. data/ext/zhgeqz.c +208 -0
  1358. data/ext/zhpcon.c +85 -0
  1359. data/ext/zhpev.c +105 -0
  1360. data/ext/zhpevd.c +153 -0
  1361. data/ext/zhpevx.c +144 -0
  1362. data/ext/zhpgst.c +94 -0
  1363. data/ext/zhpgv.c +132 -0
  1364. data/ext/zhpgvd.c +170 -0
  1365. data/ext/zhpgvx.c +170 -0
  1366. data/ext/zhprfs.c +149 -0
  1367. data/ext/zhpsv.c +110 -0
  1368. data/ext/zhpsvx.c +163 -0
  1369. data/ext/zhptrd.c +100 -0
  1370. data/ext/zhptrf.c +84 -0
  1371. data/ext/zhptri.c +89 -0
  1372. data/ext/zhptrs.c +101 -0
  1373. data/ext/zhsein.c +185 -0
  1374. data/ext/zhseqr.c +145 -0
  1375. data/ext/zla_gbamv.c +127 -0
  1376. data/ext/zla_gbrcond_c.c +142 -0
  1377. data/ext/zla_gbrcond_x.c +138 -0
  1378. data/ext/zla_gbrfsx_extended.c +295 -0
  1379. data/ext/zla_gbrpvgrw.c +87 -0
  1380. data/ext/zla_geamv.c +119 -0
  1381. data/ext/zla_gercond_c.c +134 -0
  1382. data/ext/zla_gercond_x.c +130 -0
  1383. data/ext/zla_gerfsx_extended.c +281 -0
  1384. data/ext/zla_heamv.c +116 -0
  1385. data/ext/zla_hercond_c.c +134 -0
  1386. data/ext/zla_hercond_x.c +130 -0
  1387. data/ext/zla_herfsx_extended.c +283 -0
  1388. data/ext/zla_herpvgrw.c +107 -0
  1389. data/ext/zla_lin_berr.c +84 -0
  1390. data/ext/zla_porcond_c.c +122 -0
  1391. data/ext/zla_porcond_x.c +118 -0
  1392. data/ext/zla_porfsx_extended.c +271 -0
  1393. data/ext/zla_porpvgrw.c +95 -0
  1394. data/ext/zla_rpvgrw.c +79 -0
  1395. data/ext/zla_syamv.c +116 -0
  1396. data/ext/zla_syrcond_c.c +134 -0
  1397. data/ext/zla_syrcond_x.c +130 -0
  1398. data/ext/zla_syrfsx_extended.c +283 -0
  1399. data/ext/zla_syrpvgrw.c +107 -0
  1400. data/ext/zla_wwaddw.c +102 -0
  1401. data/ext/zlabrd.c +132 -0
  1402. data/ext/zlacgv.c +75 -0
  1403. data/ext/zlacn2.c +103 -0
  1404. data/ext/zlacon.c +80 -0
  1405. data/ext/zlacp2.c +77 -0
  1406. data/ext/zlacpy.c +77 -0
  1407. data/ext/zlacrm.c +90 -0
  1408. data/ext/zlacrt.c +108 -0
  1409. data/ext/zladiv.c +57 -0
  1410. data/ext/zlaed0.c +134 -0
  1411. data/ext/zlaed7.c +247 -0
  1412. data/ext/zlaed8.c +198 -0
  1413. data/ext/zlaein.c +113 -0
  1414. data/ext/zlaesy.c +74 -0
  1415. data/ext/zlaev2.c +71 -0
  1416. data/ext/zlag2c.c +76 -0
  1417. data/ext/zlags2.c +92 -0
  1418. data/ext/zlagtm.c +132 -0
  1419. data/ext/zlahef.c +97 -0
  1420. data/ext/zlahqr.c +135 -0
  1421. data/ext/zlahr2.c +112 -0
  1422. data/ext/zlahrd.c +112 -0
  1423. data/ext/zlaic1.c +90 -0
  1424. data/ext/zlals0.c +201 -0
  1425. data/ext/zlalsa.c +270 -0
  1426. data/ext/zlalsd.c +145 -0
  1427. data/ext/zlangb.c +76 -0
  1428. data/ext/zlange.c +74 -0
  1429. data/ext/zlangt.c +87 -0
  1430. data/ext/zlanhb.c +78 -0
  1431. data/ext/zlanhe.c +74 -0
  1432. data/ext/zlanhf.c +80 -0
  1433. data/ext/zlanhp.c +76 -0
  1434. data/ext/zlanhs.c +70 -0
  1435. data/ext/zlanht.c +75 -0
  1436. data/ext/zlansb.c +78 -0
  1437. data/ext/zlansp.c +76 -0
  1438. data/ext/zlansy.c +74 -0
  1439. data/ext/zlantb.c +82 -0
  1440. data/ext/zlantp.c +80 -0
  1441. data/ext/zlantr.c +82 -0
  1442. data/ext/zlapll.c +105 -0
  1443. data/ext/zlapmr.c +97 -0
  1444. data/ext/zlapmt.c +101 -0
  1445. data/ext/zlaqgb.c +117 -0
  1446. data/ext/zlaqge.c +109 -0
  1447. data/ext/zlaqhb.c +97 -0
  1448. data/ext/zlaqhe.c +97 -0
  1449. data/ext/zlaqhp.c +94 -0
  1450. data/ext/zlaqp2.c +158 -0
  1451. data/ext/zlaqps.c +208 -0
  1452. data/ext/zlaqr0.c +153 -0
  1453. data/ext/zlaqr1.c +76 -0
  1454. data/ext/zlaqr2.c +174 -0
  1455. data/ext/zlaqr3.c +174 -0
  1456. data/ext/zlaqr4.c +147 -0
  1457. data/ext/zlaqr5.c +179 -0
  1458. data/ext/zlaqsb.c +101 -0
  1459. data/ext/zlaqsp.c +94 -0
  1460. data/ext/zlaqsy.c +97 -0
  1461. data/ext/zlar1v.c +173 -0
  1462. data/ext/zlar2v.c +149 -0
  1463. data/ext/zlarcm.c +86 -0
  1464. data/ext/zlarf.c +102 -0
  1465. data/ext/zlarfb.c +123 -0
  1466. data/ext/zlarfg.c +84 -0
  1467. data/ext/zlarfgp.c +84 -0
  1468. data/ext/zlarft.c +105 -0
  1469. data/ext/zlarfx.c +94 -0
  1470. data/ext/zlargv.c +114 -0
  1471. data/ext/zlarnv.c +83 -0
  1472. data/ext/zlarrv.c +271 -0
  1473. data/ext/zlarscl2.c +82 -0
  1474. data/ext/zlartg.c +63 -0
  1475. data/ext/zlartv.c +130 -0
  1476. data/ext/zlarz.c +106 -0
  1477. data/ext/zlarzb.c +127 -0
  1478. data/ext/zlarzt.c +105 -0
  1479. data/ext/zlascl.c +97 -0
  1480. data/ext/zlascl2.c +82 -0
  1481. data/ext/zlaset.c +88 -0
  1482. data/ext/zlasr.c +110 -0
  1483. data/ext/zlassq.c +70 -0
  1484. data/ext/zlaswp.c +94 -0
  1485. data/ext/zlasyf.c +97 -0
  1486. data/ext/zlat2c.c +76 -0
  1487. data/ext/zlatbs.c +130 -0
  1488. data/ext/zlatdf.c +119 -0
  1489. data/ext/zlatps.c +124 -0
  1490. data/ext/zlatrd.c +105 -0
  1491. data/ext/zlatrs.c +126 -0
  1492. data/ext/zlatrz.c +87 -0
  1493. data/ext/zlatzm.c +132 -0
  1494. data/ext/zlauu2.c +77 -0
  1495. data/ext/zlauum.c +77 -0
  1496. data/ext/zpbcon.c +82 -0
  1497. data/ext/zpbequ.c +83 -0
  1498. data/ext/zpbrfs.c +145 -0
  1499. data/ext/zpbstf.c +81 -0
  1500. data/ext/zpbsv.c +107 -0
  1501. data/ext/zpbsvx.c +201 -0
  1502. data/ext/zpbtf2.c +81 -0
  1503. data/ext/zpbtrf.c +81 -0
  1504. data/ext/zpbtrs.c +95 -0
  1505. data/ext/zpftrf.c +82 -0
  1506. data/ext/zpftri.c +82 -0
  1507. data/ext/zpftrs.c +97 -0
  1508. data/ext/zpocon.c +78 -0
  1509. data/ext/zpoequ.c +75 -0
  1510. data/ext/zpoequb.c +75 -0
  1511. data/ext/zporfs.c +141 -0
  1512. data/ext/zporfsx.c +206 -0
  1513. data/ext/zposv.c +103 -0
  1514. data/ext/zposvx.c +197 -0
  1515. data/ext/zposvxx.c +235 -0
  1516. data/ext/zpotf2.c +77 -0
  1517. data/ext/zpotrf.c +77 -0
  1518. data/ext/zpotri.c +77 -0
  1519. data/ext/zpotrs.c +91 -0
  1520. data/ext/zppcon.c +78 -0
  1521. data/ext/zppequ.c +79 -0
  1522. data/ext/zpprfs.c +139 -0
  1523. data/ext/zppsv.c +104 -0
  1524. data/ext/zppsvx.c +191 -0
  1525. data/ext/zpptrf.c +78 -0
  1526. data/ext/zpptri.c +78 -0
  1527. data/ext/zpptrs.c +93 -0
  1528. data/ext/zpstf2.c +95 -0
  1529. data/ext/zpstrf.c +95 -0
  1530. data/ext/zptcon.c +81 -0
  1531. data/ext/zpteqr.c +126 -0
  1532. data/ext/zptrfs.c +161 -0
  1533. data/ext/zptsv.c +123 -0
  1534. data/ext/zptsvx.c +171 -0
  1535. data/ext/zpttrf.c +93 -0
  1536. data/ext/zpttrs.c +101 -0
  1537. data/ext/zptts2.c +98 -0
  1538. data/ext/zrot.c +107 -0
  1539. data/ext/zspcon.c +85 -0
  1540. data/ext/zspmv.c +117 -0
  1541. data/ext/zspr.c +96 -0
  1542. data/ext/zsprfs.c +149 -0
  1543. data/ext/zspsv.c +110 -0
  1544. data/ext/zspsvx.c +163 -0
  1545. data/ext/zsptrf.c +84 -0
  1546. data/ext/zsptri.c +89 -0
  1547. data/ext/zsptrs.c +101 -0
  1548. data/ext/zstedc.c +177 -0
  1549. data/ext/zstegr.c +188 -0
  1550. data/ext/zstein.c +134 -0
  1551. data/ext/zstemr.c +193 -0
  1552. data/ext/zsteqr.c +126 -0
  1553. data/ext/zsycon.c +87 -0
  1554. data/ext/zsyconv.c +84 -0
  1555. data/ext/zsyequb.c +82 -0
  1556. data/ext/zsymv.c +115 -0
  1557. data/ext/zsyr.c +95 -0
  1558. data/ext/zsyrfs.c +153 -0
  1559. data/ext/zsyrfsx.c +218 -0
  1560. data/ext/zsysv.c +129 -0
  1561. data/ext/zsysvx.c +183 -0
  1562. data/ext/zsysvxx.c +258 -0
  1563. data/ext/zsyswapr.c +82 -0
  1564. data/ext/zsytf2.c +85 -0
  1565. data/ext/zsytrf.c +97 -0
  1566. data/ext/zsytri.c +92 -0
  1567. data/ext/zsytri2.c +104 -0
  1568. data/ext/zsytri2x.c +96 -0
  1569. data/ext/zsytrs.c +103 -0
  1570. data/ext/zsytrs2.c +106 -0
  1571. data/ext/ztbcon.c +86 -0
  1572. data/ext/ztbrfs.c +127 -0
  1573. data/ext/ztbtrs.c +103 -0
  1574. data/ext/ztfsm.c +111 -0
  1575. data/ext/ztftri.c +86 -0
  1576. data/ext/ztfttp.c +79 -0
  1577. data/ext/ztfttr.c +80 -0
  1578. data/ext/ztgevc.c +156 -0
  1579. data/ext/ztgex2.c +171 -0
  1580. data/ext/ztgexc.c +172 -0
  1581. data/ext/ztgsen.c +244 -0
  1582. data/ext/ztgsja.c +227 -0
  1583. data/ext/ztgsna.c +164 -0
  1584. data/ext/ztgsy2.c +176 -0
  1585. data/ext/ztgsyl.c +190 -0
  1586. data/ext/ztpcon.c +82 -0
  1587. data/ext/ztprfs.c +123 -0
  1588. data/ext/ztptri.c +82 -0
  1589. data/ext/ztptrs.c +101 -0
  1590. data/ext/ztpttf.c +79 -0
  1591. data/ext/ztpttr.c +76 -0
  1592. data/ext/ztrcon.c +82 -0
  1593. data/ext/ztrevc.c +154 -0
  1594. data/ext/ztrexc.c +111 -0
  1595. data/ext/ztrrfs.c +123 -0
  1596. data/ext/ztrsen.c +154 -0
  1597. data/ext/ztrsna.c +137 -0
  1598. data/ext/ztrsyl.c +116 -0
  1599. data/ext/ztrti2.c +81 -0
  1600. data/ext/ztrtri.c +81 -0
  1601. data/ext/ztrtrs.c +99 -0
  1602. data/ext/ztrttf.c +77 -0
  1603. data/ext/ztrttp.c +73 -0
  1604. data/ext/ztzrqf.c +83 -0
  1605. data/ext/ztzrzf.c +101 -0
  1606. data/ext/zunbdb.c +232 -0
  1607. data/ext/zuncsd.c +204 -0
  1608. data/ext/zung2l.c +92 -0
  1609. data/ext/zung2r.c +92 -0
  1610. data/ext/zungbr.c +115 -0
  1611. data/ext/zunghr.c +111 -0
  1612. data/ext/zungl2.c +90 -0
  1613. data/ext/zunglq.c +107 -0
  1614. data/ext/zungql.c +107 -0
  1615. data/ext/zungqr.c +107 -0
  1616. data/ext/zungr2.c +90 -0
  1617. data/ext/zungrq.c +107 -0
  1618. data/ext/zungtr.c +107 -0
  1619. data/ext/zunm2l.c +114 -0
  1620. data/ext/zunm2r.c +114 -0
  1621. data/ext/zunmbr.c +139 -0
  1622. data/ext/zunmhr.c +133 -0
  1623. data/ext/zunml2.c +110 -0
  1624. data/ext/zunmlq.c +125 -0
  1625. data/ext/zunmql.c +129 -0
  1626. data/ext/zunmqr.c +129 -0
  1627. data/ext/zunmr2.c +110 -0
  1628. data/ext/zunmr3.c +114 -0
  1629. data/ext/zunmrq.c +125 -0
  1630. data/ext/zunmrz.c +129 -0
  1631. data/ext/zunmtr.c +129 -0
  1632. data/ext/zupgtr.c +91 -0
  1633. data/ext/zupmtr.c +116 -0
  1634. metadata +1632 -1
data/ext/slaqr1.c ADDED
@@ -0,0 +1,82 @@
1
+ #include "rb_lapack.h"
2
+
3
+ extern VOID slaqr1_(integer* n, real* h, integer* ldh, real* sr1, real* si1, real* sr2, real* si2, real* v);
4
+
5
+
6
+ static VALUE
7
+ rblapack_slaqr1(int argc, VALUE *argv, VALUE self){
8
+ VALUE rblapack_h;
9
+ real *h;
10
+ VALUE rblapack_sr1;
11
+ real sr1;
12
+ VALUE rblapack_si1;
13
+ real si1;
14
+ VALUE rblapack_sr2;
15
+ real sr2;
16
+ VALUE rblapack_si2;
17
+ real si2;
18
+ VALUE rblapack_v;
19
+ real *v;
20
+
21
+ integer ldh;
22
+ integer n;
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 v = NumRu::Lapack.slaqr1( h, sr1, si1, sr2, si2, [:usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE SLAQR1( N, H, LDH, SR1, SI1, SR2, SI2, V )\n\n* Given a 2-by-2 or 3-by-3 matrix H, SLAQR1 sets v to a\n* scalar multiple of the first column of the product\n*\n* (*) K = (H - (sr1 + i*si1)*I)*(H - (sr2 + i*si2)*I)\n*\n* scaling to avoid overflows and most underflows. It\n* is assumed that either\n*\n* 1) sr1 = sr2 and si1 = -si2\n* or\n* 2) si1 = si2 = 0.\n*\n* This is useful for starting double implicit shift bulges\n* in the QR algorithm.\n*\n*\n\n* N (input) integer\n* Order of the matrix H. N must be either 2 or 3.\n*\n* H (input) REAL array of dimension (LDH,N)\n* The 2-by-2 or 3-by-3 matrix H in (*).\n*\n* LDH (input) integer\n* The leading dimension of H as declared in\n* the calling procedure. LDH.GE.N\n*\n* SR1 (input) REAL\n* SI1 The shifts in (*).\n* SR2\n* SI2\n*\n* V (output) REAL array of dimension N\n* A scalar multiple of the first column of the\n* matrix K in (*).\n*\n\n* ================================================================\n* Based on contributions by\n* Karen Braman and Ralph Byers, Department of Mathematics,\n* University of Kansas, USA\n*\n* ================================================================\n*\n\n");
30
+ return Qnil;
31
+ }
32
+ if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
33
+ printf("%s\n", "USAGE:\n v = NumRu::Lapack.slaqr1( h, sr1, si1, sr2, si2, [: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_h = argv[0];
41
+ rblapack_sr1 = argv[1];
42
+ rblapack_si1 = argv[2];
43
+ rblapack_sr2 = argv[3];
44
+ rblapack_si2 = argv[4];
45
+ if (argc == 5) {
46
+ } else if (rblapack_options != Qnil) {
47
+ } else {
48
+ }
49
+
50
+ if (!NA_IsNArray(rblapack_h))
51
+ rb_raise(rb_eArgError, "h (1th argument) must be NArray");
52
+ if (NA_RANK(rblapack_h) != 2)
53
+ rb_raise(rb_eArgError, "rank of h (1th argument) must be %d", 2);
54
+ ldh = NA_SHAPE0(rblapack_h);
55
+ n = NA_SHAPE1(rblapack_h);
56
+ if (NA_TYPE(rblapack_h) != NA_SFLOAT)
57
+ rblapack_h = na_change_type(rblapack_h, NA_SFLOAT);
58
+ h = NA_PTR_TYPE(rblapack_h, real*);
59
+ si1 = (real)NUM2DBL(rblapack_si1);
60
+ si2 = (real)NUM2DBL(rblapack_si2);
61
+ sr1 = (real)NUM2DBL(rblapack_sr1);
62
+ sr2 = (real)NUM2DBL(rblapack_sr2);
63
+ {
64
+ na_shape_t shape[1];
65
+ shape[0] = n;
66
+ rblapack_v = na_make_object(NA_SFLOAT, 1, shape, cNArray);
67
+ }
68
+ v = NA_PTR_TYPE(rblapack_v, real*);
69
+
70
+ slaqr1_(&n, h, &ldh, &sr1, &si1, &sr2, &si2, v);
71
+
72
+ return rblapack_v;
73
+ }
74
+
75
+ void
76
+ init_lapack_slaqr1(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
77
+ sHelp = sH;
78
+ sUsage = sU;
79
+ rblapack_ZERO = zero;
80
+
81
+ rb_define_module_function(mLapack, "slaqr1", rblapack_slaqr1, -1);
82
+ }
data/ext/slaqr2.c ADDED
@@ -0,0 +1,182 @@
1
+ #include "rb_lapack.h"
2
+
3
+ extern VOID slaqr2_(logical* wantt, logical* wantz, integer* n, integer* ktop, integer* kbot, integer* nw, real* h, integer* ldh, integer* iloz, integer* ihiz, real* z, integer* ldz, integer* ns, integer* nd, real* sr, real* si, real* v, integer* ldv, integer* nh, real* t, integer* ldt, integer* nv, real* wv, integer* ldwv, real* work, integer* lwork);
4
+
5
+
6
+ static VALUE
7
+ rblapack_slaqr2(int argc, VALUE *argv, VALUE self){
8
+ VALUE rblapack_wantt;
9
+ logical wantt;
10
+ VALUE rblapack_wantz;
11
+ logical wantz;
12
+ VALUE rblapack_ktop;
13
+ integer ktop;
14
+ VALUE rblapack_kbot;
15
+ integer kbot;
16
+ VALUE rblapack_nw;
17
+ integer nw;
18
+ VALUE rblapack_h;
19
+ real *h;
20
+ VALUE rblapack_iloz;
21
+ integer iloz;
22
+ VALUE rblapack_ihiz;
23
+ integer ihiz;
24
+ VALUE rblapack_z;
25
+ real *z;
26
+ VALUE rblapack_nh;
27
+ integer nh;
28
+ VALUE rblapack_nv;
29
+ integer nv;
30
+ VALUE rblapack_lwork;
31
+ integer lwork;
32
+ VALUE rblapack_ns;
33
+ integer ns;
34
+ VALUE rblapack_nd;
35
+ integer nd;
36
+ VALUE rblapack_sr;
37
+ real *sr;
38
+ VALUE rblapack_si;
39
+ real *si;
40
+ VALUE rblapack_h_out__;
41
+ real *h_out__;
42
+ VALUE rblapack_z_out__;
43
+ real *z_out__;
44
+ real *v;
45
+ real *t;
46
+ real *wv;
47
+ real *work;
48
+
49
+ integer ldh;
50
+ integer n;
51
+ integer ldz;
52
+ integer ldv;
53
+ integer ldt;
54
+ integer ldwv;
55
+
56
+ VALUE rblapack_options;
57
+ if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
58
+ argc--;
59
+ rblapack_options = argv[argc];
60
+ if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
61
+ printf("%s\n", "USAGE:\n ns, nd, sr, si, h, z = NumRu::Lapack.slaqr2( wantt, wantz, ktop, kbot, nw, h, iloz, ihiz, z, nh, nv, [:lwork => lwork, :usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE SLAQR2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK )\n\n* This subroutine is identical to SLAQR3 except that it avoids\n* recursion by calling SLAHQR instead of SLAQR4.\n*\n*\n* ******************************************************************\n* Aggressive early deflation:\n*\n* This subroutine accepts as input an upper Hessenberg matrix\n* H and performs an orthogonal similarity transformation\n* designed to detect and deflate fully converged eigenvalues from\n* a trailing principal submatrix. On output H has been over-\n* written by a new Hessenberg matrix that is a perturbation of\n* an orthogonal similarity transformation of H. It is to be\n* hoped that the final version of H has many zero subdiagonal\n* entries.\n*\n* ******************************************************************\n\n* WANTT (input) LOGICAL\n* If .TRUE., then the Hessenberg matrix H is fully updated\n* so that the quasi-triangular Schur factor may be\n* computed (in cooperation with the calling subroutine).\n* If .FALSE., then only enough of H is updated to preserve\n* the eigenvalues.\n*\n* WANTZ (input) LOGICAL\n* If .TRUE., then the orthogonal matrix Z is updated so\n* so that the orthogonal Schur factor may be computed\n* (in cooperation with the calling subroutine).\n* If .FALSE., then Z is not referenced.\n*\n* N (input) INTEGER\n* The order of the matrix H and (if WANTZ is .TRUE.) the\n* order of the orthogonal matrix Z.\n*\n* KTOP (input) INTEGER\n* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.\n* KBOT and KTOP together determine an isolated block\n* along the diagonal of the Hessenberg matrix.\n*\n* KBOT (input) INTEGER\n* It is assumed without a check that either\n* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together\n* determine an isolated block along the diagonal of the\n* Hessenberg matrix.\n*\n* NW (input) INTEGER\n* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).\n*\n* H (input/output) REAL array, dimension (LDH,N)\n* On input the initial N-by-N section of H stores the\n* Hessenberg matrix undergoing aggressive early deflation.\n* On output H has been transformed by an orthogonal\n* similarity transformation, perturbed, and the returned\n* to Hessenberg form that (it is to be hoped) has some\n* zero subdiagonal entries.\n*\n* LDH (input) integer\n* Leading dimension of H just as declared in the calling\n* subroutine. N .LE. LDH\n*\n* ILOZ (input) INTEGER\n* IHIZ (input) INTEGER\n* Specify the rows of Z to which transformations must be\n* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.\n*\n* Z (input/output) REAL array, dimension (LDZ,N)\n* IF WANTZ is .TRUE., then on output, the orthogonal\n* similarity transformation mentioned above has been\n* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.\n* If WANTZ is .FALSE., then Z is unreferenced.\n*\n* LDZ (input) integer\n* The leading dimension of Z just as declared in the\n* calling subroutine. 1 .LE. LDZ.\n*\n* NS (output) integer\n* The number of unconverged (ie approximate) eigenvalues\n* returned in SR and SI that may be used as shifts by the\n* calling subroutine.\n*\n* ND (output) integer\n* The number of converged eigenvalues uncovered by this\n* subroutine.\n*\n* SR (output) REAL array, dimension KBOT\n* SI (output) REAL array, dimension KBOT\n* On output, the real and imaginary parts of approximate\n* eigenvalues that may be used for shifts are stored in\n* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and\n* SI(KBOT-ND-NS+1) through SI(KBOT-ND), respectively.\n* The real and imaginary parts of converged eigenvalues\n* are stored in SR(KBOT-ND+1) through SR(KBOT) and\n* SI(KBOT-ND+1) through SI(KBOT), respectively.\n*\n* V (workspace) REAL array, dimension (LDV,NW)\n* An NW-by-NW work array.\n*\n* LDV (input) integer scalar\n* The leading dimension of V just as declared in the\n* calling subroutine. NW .LE. LDV\n*\n* NH (input) integer scalar\n* The number of columns of T. NH.GE.NW.\n*\n* T (workspace) REAL array, dimension (LDT,NW)\n*\n* LDT (input) integer\n* The leading dimension of T just as declared in the\n* calling subroutine. NW .LE. LDT\n*\n* NV (input) integer\n* The number of rows of work array WV available for\n* workspace. NV.GE.NW.\n*\n* WV (workspace) REAL array, dimension (LDWV,NW)\n*\n* LDWV (input) integer\n* The leading dimension of W just as declared in the\n* calling subroutine. NW .LE. LDV\n*\n* WORK (workspace) REAL array, dimension LWORK.\n* On exit, WORK(1) is set to an estimate of the optimal value\n* of LWORK for the given values of N, NW, KTOP and KBOT.\n*\n* LWORK (input) integer\n* The dimension of the work array WORK. LWORK = 2*NW\n* suffices, but greater efficiency may result from larger\n* values of LWORK.\n*\n* If LWORK = -1, then a workspace query is assumed; SLAQR2\n* only estimates the optimal workspace size for the given\n* values of N, NW, KTOP and KBOT. The estimate is returned\n* in WORK(1). No error message related to LWORK is issued\n* by XERBLA. Neither H nor Z are accessed.\n*\n\n* ================================================================\n* Based on contributions by\n* Karen Braman and Ralph Byers, Department of Mathematics,\n* University of Kansas, USA\n*\n* ================================================================\n\n");
62
+ return Qnil;
63
+ }
64
+ if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
65
+ printf("%s\n", "USAGE:\n ns, nd, sr, si, h, z = NumRu::Lapack.slaqr2( wantt, wantz, ktop, kbot, nw, h, iloz, ihiz, z, nh, nv, [:lwork => lwork, :usage => usage, :help => help])\n");
66
+ return Qnil;
67
+ }
68
+ } else
69
+ rblapack_options = Qnil;
70
+ if (argc != 11 && argc != 12)
71
+ rb_raise(rb_eArgError,"wrong number of arguments (%d for 11)", argc);
72
+ rblapack_wantt = argv[0];
73
+ rblapack_wantz = argv[1];
74
+ rblapack_ktop = argv[2];
75
+ rblapack_kbot = argv[3];
76
+ rblapack_nw = argv[4];
77
+ rblapack_h = argv[5];
78
+ rblapack_iloz = argv[6];
79
+ rblapack_ihiz = argv[7];
80
+ rblapack_z = argv[8];
81
+ rblapack_nh = argv[9];
82
+ rblapack_nv = argv[10];
83
+ if (argc == 12) {
84
+ rblapack_lwork = argv[11];
85
+ } else if (rblapack_options != Qnil) {
86
+ rblapack_lwork = rb_hash_aref(rblapack_options, ID2SYM(rb_intern("lwork")));
87
+ } else {
88
+ rblapack_lwork = Qnil;
89
+ }
90
+
91
+ wantt = (rblapack_wantt == Qtrue);
92
+ ktop = NUM2INT(rblapack_ktop);
93
+ nw = NUM2INT(rblapack_nw);
94
+ iloz = NUM2INT(rblapack_iloz);
95
+ if (!NA_IsNArray(rblapack_z))
96
+ rb_raise(rb_eArgError, "z (9th argument) must be NArray");
97
+ if (NA_RANK(rblapack_z) != 2)
98
+ rb_raise(rb_eArgError, "rank of z (9th argument) must be %d", 2);
99
+ ldz = NA_SHAPE0(rblapack_z);
100
+ n = NA_SHAPE1(rblapack_z);
101
+ if (NA_TYPE(rblapack_z) != NA_SFLOAT)
102
+ rblapack_z = na_change_type(rblapack_z, NA_SFLOAT);
103
+ z = NA_PTR_TYPE(rblapack_z, real*);
104
+ nv = NUM2INT(rblapack_nv);
105
+ ldwv = nw;
106
+ ldv = nw;
107
+ wantz = (rblapack_wantz == Qtrue);
108
+ if (!NA_IsNArray(rblapack_h))
109
+ rb_raise(rb_eArgError, "h (6th argument) must be NArray");
110
+ if (NA_RANK(rblapack_h) != 2)
111
+ rb_raise(rb_eArgError, "rank of h (6th argument) must be %d", 2);
112
+ ldh = NA_SHAPE0(rblapack_h);
113
+ if (NA_SHAPE1(rblapack_h) != n)
114
+ rb_raise(rb_eRuntimeError, "shape 1 of h must be the same as shape 1 of z");
115
+ if (NA_TYPE(rblapack_h) != NA_SFLOAT)
116
+ rblapack_h = na_change_type(rblapack_h, NA_SFLOAT);
117
+ h = NA_PTR_TYPE(rblapack_h, real*);
118
+ nh = NUM2INT(rblapack_nh);
119
+ ldt = nw;
120
+ kbot = NUM2INT(rblapack_kbot);
121
+ if (rblapack_lwork == Qnil)
122
+ lwork = 2*nw;
123
+ else {
124
+ lwork = NUM2INT(rblapack_lwork);
125
+ }
126
+ ihiz = NUM2INT(rblapack_ihiz);
127
+ {
128
+ na_shape_t shape[1];
129
+ shape[0] = MAX(1,kbot);
130
+ rblapack_sr = na_make_object(NA_SFLOAT, 1, shape, cNArray);
131
+ }
132
+ sr = NA_PTR_TYPE(rblapack_sr, real*);
133
+ {
134
+ na_shape_t shape[1];
135
+ shape[0] = MAX(1,kbot);
136
+ rblapack_si = na_make_object(NA_SFLOAT, 1, shape, cNArray);
137
+ }
138
+ si = NA_PTR_TYPE(rblapack_si, real*);
139
+ {
140
+ na_shape_t shape[2];
141
+ shape[0] = ldh;
142
+ shape[1] = n;
143
+ rblapack_h_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
144
+ }
145
+ h_out__ = NA_PTR_TYPE(rblapack_h_out__, real*);
146
+ MEMCPY(h_out__, h, real, NA_TOTAL(rblapack_h));
147
+ rblapack_h = rblapack_h_out__;
148
+ h = h_out__;
149
+ {
150
+ na_shape_t shape[2];
151
+ shape[0] = ldz;
152
+ shape[1] = n;
153
+ rblapack_z_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
154
+ }
155
+ z_out__ = NA_PTR_TYPE(rblapack_z_out__, real*);
156
+ MEMCPY(z_out__, z, real, NA_TOTAL(rblapack_z));
157
+ rblapack_z = rblapack_z_out__;
158
+ z = z_out__;
159
+ v = ALLOC_N(real, (ldv)*(MAX(1,nw)));
160
+ t = ALLOC_N(real, (ldt)*(MAX(1,nw)));
161
+ wv = ALLOC_N(real, (ldwv)*(MAX(1,nw)));
162
+ work = ALLOC_N(real, (MAX(1,lwork)));
163
+
164
+ slaqr2_(&wantt, &wantz, &n, &ktop, &kbot, &nw, h, &ldh, &iloz, &ihiz, z, &ldz, &ns, &nd, sr, si, v, &ldv, &nh, t, &ldt, &nv, wv, &ldwv, work, &lwork);
165
+
166
+ free(v);
167
+ free(t);
168
+ free(wv);
169
+ free(work);
170
+ rblapack_ns = INT2NUM(ns);
171
+ rblapack_nd = INT2NUM(nd);
172
+ return rb_ary_new3(6, rblapack_ns, rblapack_nd, rblapack_sr, rblapack_si, rblapack_h, rblapack_z);
173
+ }
174
+
175
+ void
176
+ init_lapack_slaqr2(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, "slaqr2", rblapack_slaqr2, -1);
182
+ }
data/ext/slaqr3.c ADDED
@@ -0,0 +1,182 @@
1
+ #include "rb_lapack.h"
2
+
3
+ extern VOID slaqr3_(logical* wantt, logical* wantz, integer* n, integer* ktop, integer* kbot, integer* nw, real* h, integer* ldh, integer* iloz, integer* ihiz, real* z, integer* ldz, integer* ns, integer* nd, real* sr, real* si, real* v, integer* ldv, integer* nh, real* t, integer* ldt, integer* nv, real* wv, integer* ldwv, real* work, integer* lwork);
4
+
5
+
6
+ static VALUE
7
+ rblapack_slaqr3(int argc, VALUE *argv, VALUE self){
8
+ VALUE rblapack_wantt;
9
+ logical wantt;
10
+ VALUE rblapack_wantz;
11
+ logical wantz;
12
+ VALUE rblapack_ktop;
13
+ integer ktop;
14
+ VALUE rblapack_kbot;
15
+ integer kbot;
16
+ VALUE rblapack_nw;
17
+ integer nw;
18
+ VALUE rblapack_h;
19
+ real *h;
20
+ VALUE rblapack_iloz;
21
+ integer iloz;
22
+ VALUE rblapack_ihiz;
23
+ integer ihiz;
24
+ VALUE rblapack_z;
25
+ real *z;
26
+ VALUE rblapack_nh;
27
+ integer nh;
28
+ VALUE rblapack_nv;
29
+ integer nv;
30
+ VALUE rblapack_lwork;
31
+ integer lwork;
32
+ VALUE rblapack_ns;
33
+ integer ns;
34
+ VALUE rblapack_nd;
35
+ integer nd;
36
+ VALUE rblapack_sr;
37
+ real *sr;
38
+ VALUE rblapack_si;
39
+ real *si;
40
+ VALUE rblapack_h_out__;
41
+ real *h_out__;
42
+ VALUE rblapack_z_out__;
43
+ real *z_out__;
44
+ real *v;
45
+ real *t;
46
+ real *wv;
47
+ real *work;
48
+
49
+ integer ldh;
50
+ integer n;
51
+ integer ldz;
52
+ integer ldv;
53
+ integer ldt;
54
+ integer ldwv;
55
+
56
+ VALUE rblapack_options;
57
+ if (argc > 0 && TYPE(argv[argc-1]) == T_HASH) {
58
+ argc--;
59
+ rblapack_options = argv[argc];
60
+ if (rb_hash_aref(rblapack_options, sHelp) == Qtrue) {
61
+ printf("%s\n", "USAGE:\n ns, nd, sr, si, h, z = NumRu::Lapack.slaqr3( wantt, wantz, ktop, kbot, nw, h, iloz, ihiz, z, nh, nv, [:lwork => lwork, :usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE SLAQR3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ, IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, LDT, NV, WV, LDWV, WORK, LWORK )\n\n* Aggressive early deflation:\n*\n* This subroutine accepts as input an upper Hessenberg matrix\n* H and performs an orthogonal similarity transformation\n* designed to detect and deflate fully converged eigenvalues from\n* a trailing principal submatrix. On output H has been over-\n* written by a new Hessenberg matrix that is a perturbation of\n* an orthogonal similarity transformation of H. It is to be\n* hoped that the final version of H has many zero subdiagonal\n* entries.\n*\n* ******************************************************************\n\n* WANTT (input) LOGICAL\n* If .TRUE., then the Hessenberg matrix H is fully updated\n* so that the quasi-triangular Schur factor may be\n* computed (in cooperation with the calling subroutine).\n* If .FALSE., then only enough of H is updated to preserve\n* the eigenvalues.\n*\n* WANTZ (input) LOGICAL\n* If .TRUE., then the orthogonal matrix Z is updated so\n* so that the orthogonal Schur factor may be computed\n* (in cooperation with the calling subroutine).\n* If .FALSE., then Z is not referenced.\n*\n* N (input) INTEGER\n* The order of the matrix H and (if WANTZ is .TRUE.) the\n* order of the orthogonal matrix Z.\n*\n* KTOP (input) INTEGER\n* It is assumed that either KTOP = 1 or H(KTOP,KTOP-1)=0.\n* KBOT and KTOP together determine an isolated block\n* along the diagonal of the Hessenberg matrix.\n*\n* KBOT (input) INTEGER\n* It is assumed without a check that either\n* KBOT = N or H(KBOT+1,KBOT)=0. KBOT and KTOP together\n* determine an isolated block along the diagonal of the\n* Hessenberg matrix.\n*\n* NW (input) INTEGER\n* Deflation window size. 1 .LE. NW .LE. (KBOT-KTOP+1).\n*\n* H (input/output) REAL array, dimension (LDH,N)\n* On input the initial N-by-N section of H stores the\n* Hessenberg matrix undergoing aggressive early deflation.\n* On output H has been transformed by an orthogonal\n* similarity transformation, perturbed, and the returned\n* to Hessenberg form that (it is to be hoped) has some\n* zero subdiagonal entries.\n*\n* LDH (input) integer\n* Leading dimension of H just as declared in the calling\n* subroutine. N .LE. LDH\n*\n* ILOZ (input) INTEGER\n* IHIZ (input) INTEGER\n* Specify the rows of Z to which transformations must be\n* applied if WANTZ is .TRUE.. 1 .LE. ILOZ .LE. IHIZ .LE. N.\n*\n* Z (input/output) REAL array, dimension (LDZ,N)\n* IF WANTZ is .TRUE., then on output, the orthogonal\n* similarity transformation mentioned above has been\n* accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.\n* If WANTZ is .FALSE., then Z is unreferenced.\n*\n* LDZ (input) integer\n* The leading dimension of Z just as declared in the\n* calling subroutine. 1 .LE. LDZ.\n*\n* NS (output) integer\n* The number of unconverged (ie approximate) eigenvalues\n* returned in SR and SI that may be used as shifts by the\n* calling subroutine.\n*\n* ND (output) integer\n* The number of converged eigenvalues uncovered by this\n* subroutine.\n*\n* SR (output) REAL array, dimension KBOT\n* SI (output) REAL array, dimension KBOT\n* On output, the real and imaginary parts of approximate\n* eigenvalues that may be used for shifts are stored in\n* SR(KBOT-ND-NS+1) through SR(KBOT-ND) and\n* SI(KBOT-ND-NS+1) through SI(KBOT-ND), respectively.\n* The real and imaginary parts of converged eigenvalues\n* are stored in SR(KBOT-ND+1) through SR(KBOT) and\n* SI(KBOT-ND+1) through SI(KBOT), respectively.\n*\n* V (workspace) REAL array, dimension (LDV,NW)\n* An NW-by-NW work array.\n*\n* LDV (input) integer scalar\n* The leading dimension of V just as declared in the\n* calling subroutine. NW .LE. LDV\n*\n* NH (input) integer scalar\n* The number of columns of T. NH.GE.NW.\n*\n* T (workspace) REAL array, dimension (LDT,NW)\n*\n* LDT (input) integer\n* The leading dimension of T just as declared in the\n* calling subroutine. NW .LE. LDT\n*\n* NV (input) integer\n* The number of rows of work array WV available for\n* workspace. NV.GE.NW.\n*\n* WV (workspace) REAL array, dimension (LDWV,NW)\n*\n* LDWV (input) integer\n* The leading dimension of W just as declared in the\n* calling subroutine. NW .LE. LDV\n*\n* WORK (workspace) REAL array, dimension LWORK.\n* On exit, WORK(1) is set to an estimate of the optimal value\n* of LWORK for the given values of N, NW, KTOP and KBOT.\n*\n* LWORK (input) integer\n* The dimension of the work array WORK. LWORK = 2*NW\n* suffices, but greater efficiency may result from larger\n* values of LWORK.\n*\n* If LWORK = -1, then a workspace query is assumed; SLAQR3\n* only estimates the optimal workspace size for the given\n* values of N, NW, KTOP and KBOT. The estimate is returned\n* in WORK(1). No error message related to LWORK is issued\n* by XERBLA. Neither H nor Z are accessed.\n*\n\n* ================================================================\n* Based on contributions by\n* Karen Braman and Ralph Byers, Department of Mathematics,\n* University of Kansas, USA\n*\n* ================================================================\n\n");
62
+ return Qnil;
63
+ }
64
+ if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
65
+ printf("%s\n", "USAGE:\n ns, nd, sr, si, h, z = NumRu::Lapack.slaqr3( wantt, wantz, ktop, kbot, nw, h, iloz, ihiz, z, nh, nv, [:lwork => lwork, :usage => usage, :help => help])\n");
66
+ return Qnil;
67
+ }
68
+ } else
69
+ rblapack_options = Qnil;
70
+ if (argc != 11 && argc != 12)
71
+ rb_raise(rb_eArgError,"wrong number of arguments (%d for 11)", argc);
72
+ rblapack_wantt = argv[0];
73
+ rblapack_wantz = argv[1];
74
+ rblapack_ktop = argv[2];
75
+ rblapack_kbot = argv[3];
76
+ rblapack_nw = argv[4];
77
+ rblapack_h = argv[5];
78
+ rblapack_iloz = argv[6];
79
+ rblapack_ihiz = argv[7];
80
+ rblapack_z = argv[8];
81
+ rblapack_nh = argv[9];
82
+ rblapack_nv = argv[10];
83
+ if (argc == 12) {
84
+ rblapack_lwork = argv[11];
85
+ } else if (rblapack_options != Qnil) {
86
+ rblapack_lwork = rb_hash_aref(rblapack_options, ID2SYM(rb_intern("lwork")));
87
+ } else {
88
+ rblapack_lwork = Qnil;
89
+ }
90
+
91
+ wantt = (rblapack_wantt == Qtrue);
92
+ ktop = NUM2INT(rblapack_ktop);
93
+ nw = NUM2INT(rblapack_nw);
94
+ iloz = NUM2INT(rblapack_iloz);
95
+ if (!NA_IsNArray(rblapack_z))
96
+ rb_raise(rb_eArgError, "z (9th argument) must be NArray");
97
+ if (NA_RANK(rblapack_z) != 2)
98
+ rb_raise(rb_eArgError, "rank of z (9th argument) must be %d", 2);
99
+ ldz = NA_SHAPE0(rblapack_z);
100
+ n = NA_SHAPE1(rblapack_z);
101
+ if (NA_TYPE(rblapack_z) != NA_SFLOAT)
102
+ rblapack_z = na_change_type(rblapack_z, NA_SFLOAT);
103
+ z = NA_PTR_TYPE(rblapack_z, real*);
104
+ nv = NUM2INT(rblapack_nv);
105
+ ldwv = nw;
106
+ ldv = nw;
107
+ wantz = (rblapack_wantz == Qtrue);
108
+ if (!NA_IsNArray(rblapack_h))
109
+ rb_raise(rb_eArgError, "h (6th argument) must be NArray");
110
+ if (NA_RANK(rblapack_h) != 2)
111
+ rb_raise(rb_eArgError, "rank of h (6th argument) must be %d", 2);
112
+ ldh = NA_SHAPE0(rblapack_h);
113
+ if (NA_SHAPE1(rblapack_h) != n)
114
+ rb_raise(rb_eRuntimeError, "shape 1 of h must be the same as shape 1 of z");
115
+ if (NA_TYPE(rblapack_h) != NA_SFLOAT)
116
+ rblapack_h = na_change_type(rblapack_h, NA_SFLOAT);
117
+ h = NA_PTR_TYPE(rblapack_h, real*);
118
+ nh = NUM2INT(rblapack_nh);
119
+ ldt = nw;
120
+ kbot = NUM2INT(rblapack_kbot);
121
+ if (rblapack_lwork == Qnil)
122
+ lwork = 2*nw;
123
+ else {
124
+ lwork = NUM2INT(rblapack_lwork);
125
+ }
126
+ ihiz = NUM2INT(rblapack_ihiz);
127
+ {
128
+ na_shape_t shape[1];
129
+ shape[0] = MAX(1,kbot);
130
+ rblapack_sr = na_make_object(NA_SFLOAT, 1, shape, cNArray);
131
+ }
132
+ sr = NA_PTR_TYPE(rblapack_sr, real*);
133
+ {
134
+ na_shape_t shape[1];
135
+ shape[0] = MAX(1,kbot);
136
+ rblapack_si = na_make_object(NA_SFLOAT, 1, shape, cNArray);
137
+ }
138
+ si = NA_PTR_TYPE(rblapack_si, real*);
139
+ {
140
+ na_shape_t shape[2];
141
+ shape[0] = ldh;
142
+ shape[1] = n;
143
+ rblapack_h_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
144
+ }
145
+ h_out__ = NA_PTR_TYPE(rblapack_h_out__, real*);
146
+ MEMCPY(h_out__, h, real, NA_TOTAL(rblapack_h));
147
+ rblapack_h = rblapack_h_out__;
148
+ h = h_out__;
149
+ {
150
+ na_shape_t shape[2];
151
+ shape[0] = ldz;
152
+ shape[1] = n;
153
+ rblapack_z_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
154
+ }
155
+ z_out__ = NA_PTR_TYPE(rblapack_z_out__, real*);
156
+ MEMCPY(z_out__, z, real, NA_TOTAL(rblapack_z));
157
+ rblapack_z = rblapack_z_out__;
158
+ z = z_out__;
159
+ v = ALLOC_N(real, (ldv)*(MAX(1,nw)));
160
+ t = ALLOC_N(real, (ldt)*(MAX(1,nw)));
161
+ wv = ALLOC_N(real, (ldwv)*(MAX(1,nw)));
162
+ work = ALLOC_N(real, (MAX(1,lwork)));
163
+
164
+ slaqr3_(&wantt, &wantz, &n, &ktop, &kbot, &nw, h, &ldh, &iloz, &ihiz, z, &ldz, &ns, &nd, sr, si, v, &ldv, &nh, t, &ldt, &nv, wv, &ldwv, work, &lwork);
165
+
166
+ free(v);
167
+ free(t);
168
+ free(wv);
169
+ free(work);
170
+ rblapack_ns = INT2NUM(ns);
171
+ rblapack_nd = INT2NUM(nd);
172
+ return rb_ary_new3(6, rblapack_ns, rblapack_nd, rblapack_sr, rblapack_si, rblapack_h, rblapack_z);
173
+ }
174
+
175
+ void
176
+ init_lapack_slaqr3(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, "slaqr3", rblapack_slaqr3, -1);
182
+ }
data/ext/slaqr4.c ADDED
@@ -0,0 +1,153 @@
1
+ #include "rb_lapack.h"
2
+
3
+ extern VOID slaqr4_(logical* wantt, logical* wantz, integer* n, integer* ilo, integer* ihi, real* h, integer* ldh, real* wr, real* wi, integer* iloz, integer* ihiz, real* z, integer* ldz, real* work, integer* lwork, integer* info);
4
+
5
+
6
+ static VALUE
7
+ rblapack_slaqr4(int argc, VALUE *argv, VALUE self){
8
+ VALUE rblapack_wantt;
9
+ logical wantt;
10
+ VALUE rblapack_wantz;
11
+ logical wantz;
12
+ VALUE rblapack_ilo;
13
+ integer ilo;
14
+ VALUE rblapack_h;
15
+ real *h;
16
+ VALUE rblapack_iloz;
17
+ integer iloz;
18
+ VALUE rblapack_ihiz;
19
+ integer ihiz;
20
+ VALUE rblapack_z;
21
+ real *z;
22
+ VALUE rblapack_lwork;
23
+ integer lwork;
24
+ VALUE rblapack_wr;
25
+ real *wr;
26
+ VALUE rblapack_wi;
27
+ real *wi;
28
+ VALUE rblapack_work;
29
+ real *work;
30
+ VALUE rblapack_info;
31
+ integer info;
32
+ VALUE rblapack_h_out__;
33
+ real *h_out__;
34
+ VALUE rblapack_z_out__;
35
+ real *z_out__;
36
+
37
+ integer ldh;
38
+ integer n;
39
+ integer ldz;
40
+ integer ihi;
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 wr, wi, work, info, h, z = NumRu::Lapack.slaqr4( wantt, wantz, ilo, h, iloz, ihiz, z, [:lwork => lwork, :usage => usage, :help => help])\n\n\nFORTRAN MANUAL\n SUBROUTINE SLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ, IHIZ, Z, LDZ, WORK, LWORK, INFO )\n\n* Purpose\n* =======\n*\n* SLAQR4 computes the eigenvalues of a Hessenberg matrix H\n* and, optionally, the matrices T and Z from the Schur decomposition\n* H = Z T Z**T, where T is an upper quasi-triangular matrix (the\n* Schur form), and Z is the orthogonal matrix of Schur vectors.\n*\n* Optionally Z may be postmultiplied into an input orthogonal\n* matrix Q so that this routine can give the Schur factorization\n* of a matrix A which has been reduced to the Hessenberg form H\n* by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.\n*\n\n* Arguments\n* =========\n*\n* WANTT (input) LOGICAL\n* = .TRUE. : the full Schur form T is required;\n* = .FALSE.: only eigenvalues are required.\n*\n* WANTZ (input) LOGICAL\n* = .TRUE. : the matrix of Schur vectors Z is required;\n* = .FALSE.: Schur vectors are not required.\n*\n* N (input) INTEGER\n* The order of the matrix H. N .GE. 0.\n*\n* ILO (input) INTEGER\n* IHI (input) INTEGER\n* It is assumed that H is already upper triangular in rows\n* and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,\n* H(ILO,ILO-1) is zero. ILO and IHI are normally set by a\n* previous call to SGEBAL, and then passed to SGEHRD when the\n* matrix output by SGEBAL is reduced to Hessenberg form.\n* Otherwise, ILO and IHI should be set to 1 and N,\n* respectively. If N.GT.0, then 1.LE.ILO.LE.IHI.LE.N.\n* If N = 0, then ILO = 1 and IHI = 0.\n*\n* H (input/output) REAL array, dimension (LDH,N)\n* On entry, the upper Hessenberg matrix H.\n* On exit, if INFO = 0 and WANTT is .TRUE., then H contains\n* the upper quasi-triangular matrix T from the Schur\n* decomposition (the Schur form); 2-by-2 diagonal blocks\n* (corresponding to complex conjugate pairs of eigenvalues)\n* are returned in standard form, with H(i,i) = H(i+1,i+1)\n* and H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and WANTT is\n* .FALSE., then the contents of H are unspecified on exit.\n* (The output value of H when INFO.GT.0 is given under the\n* description of INFO below.)\n*\n* This subroutine may explicitly set H(i,j) = 0 for i.GT.j and\n* j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.\n*\n* LDH (input) INTEGER\n* The leading dimension of the array H. LDH .GE. max(1,N).\n*\n* WR (output) REAL array, dimension (IHI)\n* WI (output) REAL array, dimension (IHI)\n* The real and imaginary parts, respectively, of the computed\n* eigenvalues of H(ILO:IHI,ILO:IHI) are stored in WR(ILO:IHI)\n* and WI(ILO:IHI). If two eigenvalues are computed as a\n* complex conjugate pair, they are stored in consecutive\n* elements of WR and WI, say the i-th and (i+1)th, with\n* WI(i) .GT. 0 and WI(i+1) .LT. 0. If WANTT is .TRUE., then\n* the eigenvalues are stored in the same order as on the\n* diagonal of the Schur form returned in H, with\n* WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2 diagonal\n* block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and\n* WI(i+1) = -WI(i).\n*\n* ILOZ (input) INTEGER\n* IHIZ (input) INTEGER\n* Specify the rows of Z to which transformations must be\n* applied if WANTZ is .TRUE..\n* 1 .LE. ILOZ .LE. ILO; IHI .LE. IHIZ .LE. N.\n*\n* Z (input/output) REAL array, dimension (LDZ,IHI)\n* If WANTZ is .FALSE., then Z is not referenced.\n* If WANTZ is .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is\n* replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the\n* orthogonal Schur factor of H(ILO:IHI,ILO:IHI).\n* (The output value of Z when INFO.GT.0 is given under\n* the description of INFO below.)\n*\n* LDZ (input) INTEGER\n* The leading dimension of the array Z. if WANTZ is .TRUE.\n* then LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.\n*\n* WORK (workspace/output) REAL array, dimension LWORK\n* On exit, if LWORK = -1, WORK(1) returns an estimate of\n* the optimal value for LWORK.\n*\n* LWORK (input) INTEGER\n* The dimension of the array WORK. LWORK .GE. max(1,N)\n* is sufficient, but LWORK typically as large as 6*N may\n* be required for optimal performance. A workspace query\n* to determine the optimal workspace size is recommended.\n*\n* If LWORK = -1, then SLAQR4 does a workspace query.\n* In this case, SLAQR4 checks the input parameters and\n* estimates the optimal workspace size for the given\n* values of N, ILO and IHI. The estimate is returned\n* in WORK(1). No error message related to LWORK is\n* issued by XERBLA. Neither H nor Z are accessed.\n*\n*\n* INFO (output) INTEGER\n* = 0: successful exit\n* .GT. 0: if INFO = i, SLAQR4 failed to compute all of\n* the eigenvalues. Elements 1:ilo-1 and i+1:n of WR\n* and WI contain those eigenvalues which have been\n* successfully computed. (Failures are rare.)\n*\n* If INFO .GT. 0 and WANT is .FALSE., then on exit,\n* the remaining unconverged eigenvalues are the eigen-\n* values of the upper Hessenberg matrix rows and\n* columns ILO through INFO of the final, output\n* value of H.\n*\n* If INFO .GT. 0 and WANTT is .TRUE., then on exit\n*\n* (*) (initial value of H)*U = U*(final value of H)\n*\n* where U is an orthogonal matrix. The final\n* value of H is upper Hessenberg and quasi-triangular\n* in rows and columns INFO+1 through IHI.\n*\n* If INFO .GT. 0 and WANTZ is .TRUE., then on exit\n*\n* (final value of Z(ILO:IHI,ILOZ:IHIZ)\n* = (initial value of Z(ILO:IHI,ILOZ:IHIZ)*U\n*\n* where U is the orthogonal matrix in (*) (regard-\n* less of the value of WANTT.)\n*\n* If INFO .GT. 0 and WANTZ is .FALSE., then Z is not\n* accessed.\n*\n\n* ================================================================\n* Based on contributions by\n* Karen Braman and Ralph Byers, Department of Mathematics,\n* University of Kansas, USA\n*\n* ================================================================\n* References:\n* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR\n* Algorithm Part I: Maintaining Well Focused Shifts, and Level 3\n* Performance, SIAM Journal of Matrix Analysis, volume 23, pages\n* 929--947, 2002.\n*\n* K. Braman, R. Byers and R. Mathias, The Multi-Shift QR\n* Algorithm Part II: Aggressive Early Deflation, SIAM Journal\n* of Matrix Analysis, volume 23, pages 948--973, 2002.\n*\n* ================================================================\n\n");
48
+ return Qnil;
49
+ }
50
+ if (rb_hash_aref(rblapack_options, sUsage) == Qtrue) {
51
+ printf("%s\n", "USAGE:\n wr, wi, work, info, h, z = NumRu::Lapack.slaqr4( wantt, wantz, ilo, h, iloz, ihiz, z, [:lwork => lwork, :usage => usage, :help => help])\n");
52
+ return Qnil;
53
+ }
54
+ } else
55
+ rblapack_options = Qnil;
56
+ if (argc != 7 && argc != 8)
57
+ rb_raise(rb_eArgError,"wrong number of arguments (%d for 7)", argc);
58
+ rblapack_wantt = argv[0];
59
+ rblapack_wantz = argv[1];
60
+ rblapack_ilo = argv[2];
61
+ rblapack_h = argv[3];
62
+ rblapack_iloz = argv[4];
63
+ rblapack_ihiz = argv[5];
64
+ rblapack_z = argv[6];
65
+ if (argc == 8) {
66
+ rblapack_lwork = argv[7];
67
+ } else if (rblapack_options != Qnil) {
68
+ rblapack_lwork = rb_hash_aref(rblapack_options, ID2SYM(rb_intern("lwork")));
69
+ } else {
70
+ rblapack_lwork = Qnil;
71
+ }
72
+
73
+ wantt = (rblapack_wantt == Qtrue);
74
+ ilo = NUM2INT(rblapack_ilo);
75
+ iloz = NUM2INT(rblapack_iloz);
76
+ if (!NA_IsNArray(rblapack_z))
77
+ rb_raise(rb_eArgError, "z (7th argument) must be NArray");
78
+ if (NA_RANK(rblapack_z) != 2)
79
+ rb_raise(rb_eArgError, "rank of z (7th argument) must be %d", 2);
80
+ ldz = NA_SHAPE0(rblapack_z);
81
+ ihi = NA_SHAPE1(rblapack_z);
82
+ if (NA_TYPE(rblapack_z) != NA_SFLOAT)
83
+ rblapack_z = na_change_type(rblapack_z, NA_SFLOAT);
84
+ z = NA_PTR_TYPE(rblapack_z, real*);
85
+ wantz = (rblapack_wantz == Qtrue);
86
+ ihiz = NUM2INT(rblapack_ihiz);
87
+ if (!NA_IsNArray(rblapack_h))
88
+ rb_raise(rb_eArgError, "h (4th argument) must be NArray");
89
+ if (NA_RANK(rblapack_h) != 2)
90
+ rb_raise(rb_eArgError, "rank of h (4th argument) must be %d", 2);
91
+ ldh = NA_SHAPE0(rblapack_h);
92
+ n = NA_SHAPE1(rblapack_h);
93
+ if (NA_TYPE(rblapack_h) != NA_SFLOAT)
94
+ rblapack_h = na_change_type(rblapack_h, NA_SFLOAT);
95
+ h = NA_PTR_TYPE(rblapack_h, real*);
96
+ if (rblapack_lwork == Qnil)
97
+ lwork = n;
98
+ else {
99
+ lwork = NUM2INT(rblapack_lwork);
100
+ }
101
+ {
102
+ na_shape_t shape[1];
103
+ shape[0] = ihi;
104
+ rblapack_wr = na_make_object(NA_SFLOAT, 1, shape, cNArray);
105
+ }
106
+ wr = NA_PTR_TYPE(rblapack_wr, real*);
107
+ {
108
+ na_shape_t shape[1];
109
+ shape[0] = ihi;
110
+ rblapack_wi = na_make_object(NA_SFLOAT, 1, shape, cNArray);
111
+ }
112
+ wi = NA_PTR_TYPE(rblapack_wi, real*);
113
+ {
114
+ na_shape_t shape[1];
115
+ shape[0] = MAX(1,lwork);
116
+ rblapack_work = na_make_object(NA_SFLOAT, 1, shape, cNArray);
117
+ }
118
+ work = NA_PTR_TYPE(rblapack_work, real*);
119
+ {
120
+ na_shape_t shape[2];
121
+ shape[0] = ldh;
122
+ shape[1] = n;
123
+ rblapack_h_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
124
+ }
125
+ h_out__ = NA_PTR_TYPE(rblapack_h_out__, real*);
126
+ MEMCPY(h_out__, h, real, NA_TOTAL(rblapack_h));
127
+ rblapack_h = rblapack_h_out__;
128
+ h = h_out__;
129
+ {
130
+ na_shape_t shape[2];
131
+ shape[0] = ldz;
132
+ shape[1] = ihi;
133
+ rblapack_z_out__ = na_make_object(NA_SFLOAT, 2, shape, cNArray);
134
+ }
135
+ z_out__ = NA_PTR_TYPE(rblapack_z_out__, real*);
136
+ MEMCPY(z_out__, z, real, NA_TOTAL(rblapack_z));
137
+ rblapack_z = rblapack_z_out__;
138
+ z = z_out__;
139
+
140
+ slaqr4_(&wantt, &wantz, &n, &ilo, &ihi, h, &ldh, wr, wi, &iloz, &ihiz, z, &ldz, work, &lwork, &info);
141
+
142
+ rblapack_info = INT2NUM(info);
143
+ return rb_ary_new3(6, rblapack_wr, rblapack_wi, rblapack_work, rblapack_info, rblapack_h, rblapack_z);
144
+ }
145
+
146
+ void
147
+ init_lapack_slaqr4(VALUE mLapack, VALUE sH, VALUE sU, VALUE zero){
148
+ sHelp = sH;
149
+ sUsage = sU;
150
+ rblapack_ZERO = zero;
151
+
152
+ rb_define_module_function(mLapack, "slaqr4", rblapack_slaqr4, -1);
153
+ }