ruby-lapack 1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3419) hide show
  1. data/COPYING +56 -0
  2. data/GPL +340 -0
  3. data/README.rdoc +61 -0
  4. data/Rakefile +115 -0
  5. data/dev/common.rb +9 -0
  6. data/dev/defs/cbbcsd +297 -0
  7. data/dev/defs/cbdsqr +196 -0
  8. data/dev/defs/cgbbrd +174 -0
  9. data/dev/defs/cgbcon +114 -0
  10. data/dev/defs/cgbequ +121 -0
  11. data/dev/defs/cgbequb +128 -0
  12. data/dev/defs/cgbrfs +182 -0
  13. data/dev/defs/cgbrfsx +418 -0
  14. data/dev/defs/cgbsv +134 -0
  15. data/dev/defs/cgbsvx +356 -0
  16. data/dev/defs/cgbsvxx +539 -0
  17. data/dev/defs/cgbtf2 +110 -0
  18. data/dev/defs/cgbtrf +109 -0
  19. data/dev/defs/cgbtrs +106 -0
  20. data/dev/defs/cgebak +95 -0
  21. data/dev/defs/cgebal +125 -0
  22. data/dev/defs/cgebd2 +162 -0
  23. data/dev/defs/cgebrd +178 -0
  24. data/dev/defs/cgecon +90 -0
  25. data/dev/defs/cgeequ +107 -0
  26. data/dev/defs/cgeequb +114 -0
  27. data/dev/defs/cgees +169 -0
  28. data/dev/defs/cgeesx +209 -0
  29. data/dev/defs/cgeev +154 -0
  30. data/dev/defs/cgeevx +263 -0
  31. data/dev/defs/cgegs +204 -0
  32. data/dev/defs/cgegv +261 -0
  33. data/dev/defs/cgehd2 +115 -0
  34. data/dev/defs/cgehrd +136 -0
  35. data/dev/defs/cgelq2 +89 -0
  36. data/dev/defs/cgelqf +113 -0
  37. data/dev/defs/cgels +157 -0
  38. data/dev/defs/cgelsd +211 -0
  39. data/dev/defs/cgelss +156 -0
  40. data/dev/defs/cgelsx +155 -0
  41. data/dev/defs/cgelsy +188 -0
  42. data/dev/defs/cgeql2 +91 -0
  43. data/dev/defs/cgeqlf +116 -0
  44. data/dev/defs/cgeqp3 +127 -0
  45. data/dev/defs/cgeqpf +118 -0
  46. data/dev/defs/cgeqr2 +89 -0
  47. data/dev/defs/cgeqr2p +89 -0
  48. data/dev/defs/cgeqrf +114 -0
  49. data/dev/defs/cgeqrfp +114 -0
  50. data/dev/defs/cgerfs +164 -0
  51. data/dev/defs/cgerfsx +394 -0
  52. data/dev/defs/cgerq2 +91 -0
  53. data/dev/defs/cgerqf +116 -0
  54. data/dev/defs/cgesc2 +87 -0
  55. data/dev/defs/cgesdd +203 -0
  56. data/dev/defs/cgesv +97 -0
  57. data/dev/defs/cgesvd +195 -0
  58. data/dev/defs/cgesvx +333 -0
  59. data/dev/defs/cgesvxx +519 -0
  60. data/dev/defs/cgetc2 +82 -0
  61. data/dev/defs/cgetf2 +76 -0
  62. data/dev/defs/cgetrf +76 -0
  63. data/dev/defs/cgetri +86 -0
  64. data/dev/defs/cgetrs +91 -0
  65. data/dev/defs/cggbak +119 -0
  66. data/dev/defs/cggbal +144 -0
  67. data/dev/defs/cgges +247 -0
  68. data/dev/defs/cggesx +311 -0
  69. data/dev/defs/cggev +197 -0
  70. data/dev/defs/cggevx +353 -0
  71. data/dev/defs/cggglm +160 -0
  72. data/dev/defs/cgghrd +171 -0
  73. data/dev/defs/cgglse +157 -0
  74. data/dev/defs/cggqrf +195 -0
  75. data/dev/defs/cggrqf +194 -0
  76. data/dev/defs/cggsvd +324 -0
  77. data/dev/defs/cggsvp +240 -0
  78. data/dev/defs/cgtcon +112 -0
  79. data/dev/defs/cgtrfs +193 -0
  80. data/dev/defs/cgtsv +97 -0
  81. data/dev/defs/cgtsvx +275 -0
  82. data/dev/defs/cgttrf +97 -0
  83. data/dev/defs/cgttrs +119 -0
  84. data/dev/defs/cgtts2 +108 -0
  85. data/dev/defs/chbev +124 -0
  86. data/dev/defs/chbevd +194 -0
  87. data/dev/defs/chbevx +234 -0
  88. data/dev/defs/chbgst +137 -0
  89. data/dev/defs/chbgv +163 -0
  90. data/dev/defs/chbgvd +231 -0
  91. data/dev/defs/chbgvx +265 -0
  92. data/dev/defs/chbtrd +132 -0
  93. data/dev/defs/checon +91 -0
  94. data/dev/defs/cheequb +87 -0
  95. data/dev/defs/cheev +111 -0
  96. data/dev/defs/cheevd +178 -0
  97. data/dev/defs/cheevr +325 -0
  98. data/dev/defs/cheevx +225 -0
  99. data/dev/defs/chegs2 +96 -0
  100. data/dev/defs/chegst +96 -0
  101. data/dev/defs/chegv +155 -0
  102. data/dev/defs/chegvd +222 -0
  103. data/dev/defs/chegvx +270 -0
  104. data/dev/defs/cherfs +170 -0
  105. data/dev/defs/cherfsx +380 -0
  106. data/dev/defs/chesv +147 -0
  107. data/dev/defs/chesvx +261 -0
  108. data/dev/defs/chesvxx +481 -0
  109. data/dev/defs/chetd2 +143 -0
  110. data/dev/defs/chetf2 +141 -0
  111. data/dev/defs/chetrd +162 -0
  112. data/dev/defs/chetrf +151 -0
  113. data/dev/defs/chetri +83 -0
  114. data/dev/defs/chetrs +90 -0
  115. data/dev/defs/chetrs2 +97 -0
  116. data/dev/defs/chfrk +138 -0
  117. data/dev/defs/chgeqz +258 -0
  118. data/dev/defs/chla_transtype +32 -0
  119. data/dev/defs/chpcon +85 -0
  120. data/dev/defs/chpev +110 -0
  121. data/dev/defs/chpevd +179 -0
  122. data/dev/defs/chpevx +204 -0
  123. data/dev/defs/chpgst +80 -0
  124. data/dev/defs/chpgv +145 -0
  125. data/dev/defs/chpgvd +221 -0
  126. data/dev/defs/chpgvx +247 -0
  127. data/dev/defs/chprfs +156 -0
  128. data/dev/defs/chpsv +134 -0
  129. data/dev/defs/chpsvx +248 -0
  130. data/dev/defs/chptrd +118 -0
  131. data/dev/defs/chptrf +120 -0
  132. data/dev/defs/chptri +77 -0
  133. data/dev/defs/chptrs +84 -0
  134. data/dev/defs/chsein +217 -0
  135. data/dev/defs/chseqr +263 -0
  136. data/dev/defs/cla_gbamv +154 -0
  137. data/dev/defs/cla_gbrcond_c +146 -0
  138. data/dev/defs/cla_gbrcond_x +140 -0
  139. data/dev/defs/cla_gbrfsx_extended +391 -0
  140. data/dev/defs/cla_gbrpvgrw +94 -0
  141. data/dev/defs/cla_geamv +142 -0
  142. data/dev/defs/cla_gercond_c +128 -0
  143. data/dev/defs/cla_gercond_x +122 -0
  144. data/dev/defs/cla_gerfsx_extended +376 -0
  145. data/dev/defs/cla_heamv +142 -0
  146. data/dev/defs/cla_hercond_c +125 -0
  147. data/dev/defs/cla_hercond_x +119 -0
  148. data/dev/defs/cla_herfsx_extended +375 -0
  149. data/dev/defs/cla_herpvgrw +105 -0
  150. data/dev/defs/cla_lin_berr +79 -0
  151. data/dev/defs/cla_porcond_c +116 -0
  152. data/dev/defs/cla_porcond_x +110 -0
  153. data/dev/defs/cla_porfsx_extended +366 -0
  154. data/dev/defs/cla_porpvgrw +85 -0
  155. data/dev/defs/cla_rpvgrw +76 -0
  156. data/dev/defs/cla_syamv +142 -0
  157. data/dev/defs/cla_syrcond_c +125 -0
  158. data/dev/defs/cla_syrcond_x +119 -0
  159. data/dev/defs/cla_syrfsx_extended +375 -0
  160. data/dev/defs/cla_syrpvgrw +105 -0
  161. data/dev/defs/cla_wwaddw +53 -0
  162. data/dev/defs/clabrd +187 -0
  163. data/dev/defs/clacgv +44 -0
  164. data/dev/defs/clacn2 +91 -0
  165. data/dev/defs/clacon +75 -0
  166. data/dev/defs/clacp2 +78 -0
  167. data/dev/defs/clacpy +78 -0
  168. data/dev/defs/clacrm +88 -0
  169. data/dev/defs/clacrt +73 -0
  170. data/dev/defs/cladiv +37 -0
  171. data/dev/defs/claed0 +121 -0
  172. data/dev/defs/claed7 +237 -0
  173. data/dev/defs/claed8 +211 -0
  174. data/dev/defs/claein +117 -0
  175. data/dev/defs/claesy +81 -0
  176. data/dev/defs/claev2 +83 -0
  177. data/dev/defs/clag2z +73 -0
  178. data/dev/defs/clags2 +116 -0
  179. data/dev/defs/clagtm +115 -0
  180. data/dev/defs/clahef +127 -0
  181. data/dev/defs/clahqr +159 -0
  182. data/dev/defs/clahr2 +153 -0
  183. data/dev/defs/clahrd +141 -0
  184. data/dev/defs/claic1 +101 -0
  185. data/dev/defs/clals0 +251 -0
  186. data/dev/defs/clalsa +267 -0
  187. data/dev/defs/clalsd +160 -0
  188. data/dev/defs/clangb +92 -0
  189. data/dev/defs/clange +84 -0
  190. data/dev/defs/clangt +77 -0
  191. data/dev/defs/clanhb +99 -0
  192. data/dev/defs/clanhe +93 -0
  193. data/dev/defs/clanhf +211 -0
  194. data/dev/defs/clanhp +85 -0
  195. data/dev/defs/clanhs +78 -0
  196. data/dev/defs/clanht +69 -0
  197. data/dev/defs/clansb +97 -0
  198. data/dev/defs/clansp +83 -0
  199. data/dev/defs/clansy +92 -0
  200. data/dev/defs/clantb +108 -0
  201. data/dev/defs/clantp +93 -0
  202. data/dev/defs/clantr +109 -0
  203. data/dev/defs/clapll +67 -0
  204. data/dev/defs/clapmr +73 -0
  205. data/dev/defs/clapmt +73 -0
  206. data/dev/defs/claqgb +124 -0
  207. data/dev/defs/claqge +107 -0
  208. data/dev/defs/claqhb +105 -0
  209. data/dev/defs/claqhe +98 -0
  210. data/dev/defs/claqhp +89 -0
  211. data/dev/defs/claqp2 +115 -0
  212. data/dev/defs/claqps +146 -0
  213. data/dev/defs/claqr0 +203 -0
  214. data/dev/defs/claqr1 +66 -0
  215. data/dev/defs/claqr2 +243 -0
  216. data/dev/defs/claqr3 +238 -0
  217. data/dev/defs/claqr4 +203 -0
  218. data/dev/defs/claqr5 +221 -0
  219. data/dev/defs/claqsb +105 -0
  220. data/dev/defs/claqsp +89 -0
  221. data/dev/defs/claqsy +98 -0
  222. data/dev/defs/clar1v +199 -0
  223. data/dev/defs/clar2v +88 -0
  224. data/dev/defs/clarcm +88 -0
  225. data/dev/defs/clarf +97 -0
  226. data/dev/defs/clarfb +139 -0
  227. data/dev/defs/clarfg +71 -0
  228. data/dev/defs/clarfgp +69 -0
  229. data/dev/defs/clarft +133 -0
  230. data/dev/defs/clarfx +88 -0
  231. data/dev/defs/clargv +88 -0
  232. data/dev/defs/clarnv +63 -0
  233. data/dev/defs/clarrv +259 -0
  234. data/dev/defs/clarscl2 +61 -0
  235. data/dev/defs/clartg +66 -0
  236. data/dev/defs/clartv +82 -0
  237. data/dev/defs/clarz +111 -0
  238. data/dev/defs/clarzb +150 -0
  239. data/dev/defs/clarzt +151 -0
  240. data/dev/defs/clascl +102 -0
  241. data/dev/defs/clascl2 +61 -0
  242. data/dev/defs/claset +77 -0
  243. data/dev/defs/clasr +169 -0
  244. data/dev/defs/classq +71 -0
  245. data/dev/defs/claswp +81 -0
  246. data/dev/defs/clasyf +127 -0
  247. data/dev/defs/clatbs +206 -0
  248. data/dev/defs/clatdf +133 -0
  249. data/dev/defs/clatps +193 -0
  250. data/dev/defs/clatrd +168 -0
  251. data/dev/defs/clatrs +202 -0
  252. data/dev/defs/clatrz +106 -0
  253. data/dev/defs/clatzm +124 -0
  254. data/dev/defs/clauu2 +68 -0
  255. data/dev/defs/clauum +68 -0
  256. data/dev/defs/cpbcon +99 -0
  257. data/dev/defs/cpbequ +96 -0
  258. data/dev/defs/cpbrfs +166 -0
  259. data/dev/defs/cpbstf +116 -0
  260. data/dev/defs/cpbsv +136 -0
  261. data/dev/defs/cpbsvx +314 -0
  262. data/dev/defs/cpbtf2 +105 -0
  263. data/dev/defs/cpbtrf +103 -0
  264. data/dev/defs/cpbtrs +98 -0
  265. data/dev/defs/cpftrf +183 -0
  266. data/dev/defs/cpftri +175 -0
  267. data/dev/defs/cpftrs +185 -0
  268. data/dev/defs/cpocon +87 -0
  269. data/dev/defs/cpoequ +80 -0
  270. data/dev/defs/cpoequb +80 -0
  271. data/dev/defs/cporfs +160 -0
  272. data/dev/defs/cporfsx +371 -0
  273. data/dev/defs/cposv +105 -0
  274. data/dev/defs/cposvx +281 -0
  275. data/dev/defs/cposvxx +471 -0
  276. data/dev/defs/cpotf2 +75 -0
  277. data/dev/defs/cpotrf +73 -0
  278. data/dev/defs/cpotri +67 -0
  279. data/dev/defs/cpotrs +79 -0
  280. data/dev/defs/cppcon +85 -0
  281. data/dev/defs/cppequ +82 -0
  282. data/dev/defs/cpprfs +146 -0
  283. data/dev/defs/cppsv +115 -0
  284. data/dev/defs/cppsvx +283 -0
  285. data/dev/defs/cpptrf +81 -0
  286. data/dev/defs/cpptri +58 -0
  287. data/dev/defs/cpptrs +84 -0
  288. data/dev/defs/cpstf2 +108 -0
  289. data/dev/defs/cpstrf +108 -0
  290. data/dev/defs/cptcon +84 -0
  291. data/dev/defs/cpteqr +116 -0
  292. data/dev/defs/cptrfs +161 -0
  293. data/dev/defs/cptsv +89 -0
  294. data/dev/defs/cptsvx +210 -0
  295. data/dev/defs/cpttrf +59 -0
  296. data/dev/defs/cpttrs +98 -0
  297. data/dev/defs/cptts2 +89 -0
  298. data/dev/defs/crot +72 -0
  299. data/dev/defs/cspcon +85 -0
  300. data/dev/defs/cspmv +121 -0
  301. data/dev/defs/cspr +98 -0
  302. data/dev/defs/csprfs +156 -0
  303. data/dev/defs/cspsv +134 -0
  304. data/dev/defs/cspsvx +248 -0
  305. data/dev/defs/csptrf +121 -0
  306. data/dev/defs/csptri +77 -0
  307. data/dev/defs/csptrs +84 -0
  308. data/dev/defs/csrscl +49 -0
  309. data/dev/defs/cstedc +191 -0
  310. data/dev/defs/cstegr +233 -0
  311. data/dev/defs/cstein +159 -0
  312. data/dev/defs/cstemr +302 -0
  313. data/dev/defs/csteqr +103 -0
  314. data/dev/defs/csycon +91 -0
  315. data/dev/defs/csyconv +90 -0
  316. data/dev/defs/csyequb +104 -0
  317. data/dev/defs/csymv +126 -0
  318. data/dev/defs/csyr +102 -0
  319. data/dev/defs/csyrfs +170 -0
  320. data/dev/defs/csyrfsx +380 -0
  321. data/dev/defs/csysv +149 -0
  322. data/dev/defs/csysvx +261 -0
  323. data/dev/defs/csysvxx +485 -0
  324. data/dev/defs/csyswapr +70 -0
  325. data/dev/defs/csytf2 +140 -0
  326. data/dev/defs/csytrf +156 -0
  327. data/dev/defs/csytri +83 -0
  328. data/dev/defs/csytri2 +110 -0
  329. data/dev/defs/csytri2x +90 -0
  330. data/dev/defs/csytrs +90 -0
  331. data/dev/defs/csytrs2 +97 -0
  332. data/dev/defs/ctbcon +109 -0
  333. data/dev/defs/ctbrfs +164 -0
  334. data/dev/defs/ctbtrs +113 -0
  335. data/dev/defs/ctfsm +259 -0
  336. data/dev/defs/ctftri +183 -0
  337. data/dev/defs/ctfttp +172 -0
  338. data/dev/defs/ctfttr +182 -0
  339. data/dev/defs/ctgevc +194 -0
  340. data/dev/defs/ctgex2 +158 -0
  341. data/dev/defs/ctgexc +176 -0
  342. data/dev/defs/ctgsen +406 -0
  343. data/dev/defs/ctgsja +344 -0
  344. data/dev/defs/ctgsna +282 -0
  345. data/dev/defs/ctgsy2 +235 -0
  346. data/dev/defs/ctgsyl +273 -0
  347. data/dev/defs/ctpcon +95 -0
  348. data/dev/defs/ctprfs +150 -0
  349. data/dev/defs/ctptri +79 -0
  350. data/dev/defs/ctptrs +98 -0
  351. data/dev/defs/ctpttf +172 -0
  352. data/dev/defs/ctpttr +73 -0
  353. data/dev/defs/ctrcon +103 -0
  354. data/dev/defs/ctrevc +188 -0
  355. data/dev/defs/ctrexc +99 -0
  356. data/dev/defs/ctrrfs +158 -0
  357. data/dev/defs/ctrsen +234 -0
  358. data/dev/defs/ctrsna +223 -0
  359. data/dev/defs/ctrsyl +126 -0
  360. data/dev/defs/ctrti2 +76 -0
  361. data/dev/defs/ctrtri +75 -0
  362. data/dev/defs/ctrtrs +107 -0
  363. data/dev/defs/ctrttf +181 -0
  364. data/dev/defs/ctrttp +72 -0
  365. data/dev/defs/ctzrqf +104 -0
  366. data/dev/defs/ctzrzf +128 -0
  367. data/dev/defs/cunbdb +270 -0
  368. data/dev/defs/cuncsd +283 -0
  369. data/dev/defs/cung2l +85 -0
  370. data/dev/defs/cung2r +85 -0
  371. data/dev/defs/cungbr +129 -0
  372. data/dev/defs/cunghr +97 -0
  373. data/dev/defs/cungl2 +84 -0
  374. data/dev/defs/cunglq +100 -0
  375. data/dev/defs/cungql +101 -0
  376. data/dev/defs/cungqr +101 -0
  377. data/dev/defs/cungr2 +85 -0
  378. data/dev/defs/cungrq +101 -0
  379. data/dev/defs/cungtr +95 -0
  380. data/dev/defs/cunm2l +130 -0
  381. data/dev/defs/cunm2r +130 -0
  382. data/dev/defs/cunmbr +179 -0
  383. data/dev/defs/cunmhr +157 -0
  384. data/dev/defs/cunml2 +130 -0
  385. data/dev/defs/cunmlq +143 -0
  386. data/dev/defs/cunmql +143 -0
  387. data/dev/defs/cunmqr +143 -0
  388. data/dev/defs/cunmr2 +130 -0
  389. data/dev/defs/cunmr3 +152 -0
  390. data/dev/defs/cunmrq +143 -0
  391. data/dev/defs/cunmrz +157 -0
  392. data/dev/defs/cunmtr +152 -0
  393. data/dev/defs/cupgtr +87 -0
  394. data/dev/defs/cupmtr +120 -0
  395. data/dev/defs/dbbcsd +297 -0
  396. data/dev/defs/dbdsdc +194 -0
  397. data/dev/defs/dbdsqr +203 -0
  398. data/dev/defs/ddisna +84 -0
  399. data/dev/defs/dgbbrd +167 -0
  400. data/dev/defs/dgbcon +114 -0
  401. data/dev/defs/dgbequ +121 -0
  402. data/dev/defs/dgbequb +128 -0
  403. data/dev/defs/dgbrfs +182 -0
  404. data/dev/defs/dgbrfsx +418 -0
  405. data/dev/defs/dgbsv +134 -0
  406. data/dev/defs/dgbsvx +353 -0
  407. data/dev/defs/dgbsvxx +536 -0
  408. data/dev/defs/dgbtf2 +110 -0
  409. data/dev/defs/dgbtrf +109 -0
  410. data/dev/defs/dgbtrs +106 -0
  411. data/dev/defs/dgebak +95 -0
  412. data/dev/defs/dgebal +125 -0
  413. data/dev/defs/dgebd2 +162 -0
  414. data/dev/defs/dgebrd +178 -0
  415. data/dev/defs/dgecon +90 -0
  416. data/dev/defs/dgeequ +107 -0
  417. data/dev/defs/dgeequb +114 -0
  418. data/dev/defs/dgees +188 -0
  419. data/dev/defs/dgeesx +251 -0
  420. data/dev/defs/dgeev +166 -0
  421. data/dev/defs/dgeevx +282 -0
  422. data/dev/defs/dgegs +207 -0
  423. data/dev/defs/dgegv +286 -0
  424. data/dev/defs/dgehd2 +115 -0
  425. data/dev/defs/dgehrd +136 -0
  426. data/dev/defs/dgejsv +862 -0
  427. data/dev/defs/dgelq2 +89 -0
  428. data/dev/defs/dgelqf +113 -0
  429. data/dev/defs/dgels +158 -0
  430. data/dev/defs/dgelsd +193 -0
  431. data/dev/defs/dgelss +149 -0
  432. data/dev/defs/dgelsx +148 -0
  433. data/dev/defs/dgelsy +181 -0
  434. data/dev/defs/dgeql2 +91 -0
  435. data/dev/defs/dgeqlf +116 -0
  436. data/dev/defs/dgeqp3 +120 -0
  437. data/dev/defs/dgeqpf +111 -0
  438. data/dev/defs/dgeqr2 +89 -0
  439. data/dev/defs/dgeqr2p +89 -0
  440. data/dev/defs/dgeqrf +114 -0
  441. data/dev/defs/dgeqrfp +114 -0
  442. data/dev/defs/dgerfs +164 -0
  443. data/dev/defs/dgerfsx +394 -0
  444. data/dev/defs/dgerq2 +91 -0
  445. data/dev/defs/dgerqf +116 -0
  446. data/dev/defs/dgesc2 +86 -0
  447. data/dev/defs/dgesdd +197 -0
  448. data/dev/defs/dgesv +97 -0
  449. data/dev/defs/dgesvd +188 -0
  450. data/dev/defs/dgesvj +308 -0
  451. data/dev/defs/dgesvx +333 -0
  452. data/dev/defs/dgesvxx +516 -0
  453. data/dev/defs/dgetc2 +82 -0
  454. data/dev/defs/dgetf2 +76 -0
  455. data/dev/defs/dgetrf +76 -0
  456. data/dev/defs/dgetri +86 -0
  457. data/dev/defs/dgetrs +91 -0
  458. data/dev/defs/dggbak +119 -0
  459. data/dev/defs/dggbal +145 -0
  460. data/dev/defs/dgges +261 -0
  461. data/dev/defs/dggesx +342 -0
  462. data/dev/defs/dggev +206 -0
  463. data/dev/defs/dggevx +371 -0
  464. data/dev/defs/dggglm +160 -0
  465. data/dev/defs/dgghrd +174 -0
  466. data/dev/defs/dgglse +157 -0
  467. data/dev/defs/dggqrf +195 -0
  468. data/dev/defs/dggrqf +194 -0
  469. data/dev/defs/dggsvd +319 -0
  470. data/dev/defs/dggsvp +233 -0
  471. data/dev/defs/dgsvj0 +200 -0
  472. data/dev/defs/dgsvj1 +220 -0
  473. data/dev/defs/dgtcon +119 -0
  474. data/dev/defs/dgtrfs +193 -0
  475. data/dev/defs/dgtsv +100 -0
  476. data/dev/defs/dgtsvx +275 -0
  477. data/dev/defs/dgttrf +97 -0
  478. data/dev/defs/dgttrs +119 -0
  479. data/dev/defs/dgtts2 +106 -0
  480. data/dev/defs/dhgeqz +282 -0
  481. data/dev/defs/dhsein +234 -0
  482. data/dev/defs/dhseqr +279 -0
  483. data/dev/defs/disnan +29 -0
  484. data/dev/defs/dla_gbamv +152 -0
  485. data/dev/defs/dla_gbrcond +152 -0
  486. data/dev/defs/dla_gbrfsx_extended +393 -0
  487. data/dev/defs/dla_gbrpvgrw +90 -0
  488. data/dev/defs/dla_geamv +142 -0
  489. data/dev/defs/dla_gercond +134 -0
  490. data/dev/defs/dla_gerfsx_extended +379 -0
  491. data/dev/defs/dla_lin_berr +78 -0
  492. data/dev/defs/dla_porcond +122 -0
  493. data/dev/defs/dla_porfsx_extended +366 -0
  494. data/dev/defs/dla_porpvgrw +81 -0
  495. data/dev/defs/dla_rpvgrw +72 -0
  496. data/dev/defs/dla_syamv +142 -0
  497. data/dev/defs/dla_syrcond +131 -0
  498. data/dev/defs/dla_syrfsx_extended +375 -0
  499. data/dev/defs/dla_syrpvgrw +101 -0
  500. data/dev/defs/dla_wwaddw +53 -0
  501. data/dev/defs/dlabad +43 -0
  502. data/dev/defs/dlabrd +186 -0
  503. data/dev/defs/dlacn2 +96 -0
  504. data/dev/defs/dlacon +80 -0
  505. data/dev/defs/dlacpy +78 -0
  506. data/dev/defs/dladiv +57 -0
  507. data/dev/defs/dlae2 +66 -0
  508. data/dev/defs/dlaebz +292 -0
  509. data/dev/defs/dlaed0 +147 -0
  510. data/dev/defs/dlaed1 +141 -0
  511. data/dev/defs/dlaed2 +194 -0
  512. data/dev/defs/dlaed3 +167 -0
  513. data/dev/defs/dlaed4 +113 -0
  514. data/dev/defs/dlaed5 +78 -0
  515. data/dev/defs/dlaed6 +101 -0
  516. data/dev/defs/dlaed7 +241 -0
  517. data/dev/defs/dlaed8 +227 -0
  518. data/dev/defs/dlaed9 +137 -0
  519. data/dev/defs/dlaeda +147 -0
  520. data/dev/defs/dlaein +141 -0
  521. data/dev/defs/dlaev2 +83 -0
  522. data/dev/defs/dlaexc +107 -0
  523. data/dev/defs/dlag2 +123 -0
  524. data/dev/defs/dlag2s +81 -0
  525. data/dev/defs/dlags2 +108 -0
  526. data/dev/defs/dlagtf +128 -0
  527. data/dev/defs/dlagtm +115 -0
  528. data/dev/defs/dlagts +135 -0
  529. data/dev/defs/dlagv2 +128 -0
  530. data/dev/defs/dlahqr +172 -0
  531. data/dev/defs/dlahr2 +153 -0
  532. data/dev/defs/dlahrd +141 -0
  533. data/dev/defs/dlaic1 +101 -0
  534. data/dev/defs/dlaln2 +187 -0
  535. data/dev/defs/dlals0 +250 -0
  536. data/dev/defs/dlalsa +268 -0
  537. data/dev/defs/dlalsd +152 -0
  538. data/dev/defs/dlamrg +66 -0
  539. data/dev/defs/dlaneg +87 -0
  540. data/dev/defs/dlangb +93 -0
  541. data/dev/defs/dlange +84 -0
  542. data/dev/defs/dlangt +77 -0
  543. data/dev/defs/dlanhs +78 -0
  544. data/dev/defs/dlansb +97 -0
  545. data/dev/defs/dlansf +178 -0
  546. data/dev/defs/dlansp +83 -0
  547. data/dev/defs/dlanst +69 -0
  548. data/dev/defs/dlansy +92 -0
  549. data/dev/defs/dlantb +108 -0
  550. data/dev/defs/dlantp +93 -0
  551. data/dev/defs/dlantr +109 -0
  552. data/dev/defs/dlanv2 +84 -0
  553. data/dev/defs/dlapll +69 -0
  554. data/dev/defs/dlapmr +73 -0
  555. data/dev/defs/dlapmt +73 -0
  556. data/dev/defs/dlapy2 +30 -0
  557. data/dev/defs/dlapy3 +34 -0
  558. data/dev/defs/dlaqgb +124 -0
  559. data/dev/defs/dlaqge +107 -0
  560. data/dev/defs/dlaqp2 +115 -0
  561. data/dev/defs/dlaqps +146 -0
  562. data/dev/defs/dlaqr0 +225 -0
  563. data/dev/defs/dlaqr1 +79 -0
  564. data/dev/defs/dlaqr2 +252 -0
  565. data/dev/defs/dlaqr3 +247 -0
  566. data/dev/defs/dlaqr4 +225 -0
  567. data/dev/defs/dlaqr5 +230 -0
  568. data/dev/defs/dlaqsb +105 -0
  569. data/dev/defs/dlaqsp +89 -0
  570. data/dev/defs/dlaqsy +98 -0
  571. data/dev/defs/dlaqtr +134 -0
  572. data/dev/defs/dlar1v +199 -0
  573. data/dev/defs/dlar2v +86 -0
  574. data/dev/defs/dlarf +93 -0
  575. data/dev/defs/dlarfb +139 -0
  576. data/dev/defs/dlarfg +71 -0
  577. data/dev/defs/dlarfgp +69 -0
  578. data/dev/defs/dlarft +133 -0
  579. data/dev/defs/dlarfx +89 -0
  580. data/dev/defs/dlargv +74 -0
  581. data/dev/defs/dlarnv +61 -0
  582. data/dev/defs/dlarra +106 -0
  583. data/dev/defs/dlarrb +167 -0
  584. data/dev/defs/dlarrc +99 -0
  585. data/dev/defs/dlarrd +290 -0
  586. data/dev/defs/dlarre +265 -0
  587. data/dev/defs/dlarrf +168 -0
  588. data/dev/defs/dlarrj +138 -0
  589. data/dev/defs/dlarrk +108 -0
  590. data/dev/defs/dlarrr +62 -0
  591. data/dev/defs/dlarrv +259 -0
  592. data/dev/defs/dlarscl2 +61 -0
  593. data/dev/defs/dlartg +64 -0
  594. data/dev/defs/dlartgp +62 -0
  595. data/dev/defs/dlartgs +57 -0
  596. data/dev/defs/dlartv +82 -0
  597. data/dev/defs/dlaruv +59 -0
  598. data/dev/defs/dlarz +109 -0
  599. data/dev/defs/dlarzb +150 -0
  600. data/dev/defs/dlarzt +151 -0
  601. data/dev/defs/dlas2 +71 -0
  602. data/dev/defs/dlascl +102 -0
  603. data/dev/defs/dlascl2 +61 -0
  604. data/dev/defs/dlasd0 +133 -0
  605. data/dev/defs/dlasd1 +180 -0
  606. data/dev/defs/dlasd2 +254 -0
  607. data/dev/defs/dlasd3 +213 -0
  608. data/dev/defs/dlasd4 +123 -0
  609. data/dev/defs/dlasd5 +88 -0
  610. data/dev/defs/dlasd6 +300 -0
  611. data/dev/defs/dlasd7 +264 -0
  612. data/dev/defs/dlasd8 +144 -0
  613. data/dev/defs/dlasda +276 -0
  614. data/dev/defs/dlasdq +187 -0
  615. data/dev/defs/dlasdt +76 -0
  616. data/dev/defs/dlaset +81 -0
  617. data/dev/defs/dlasq1 +75 -0
  618. data/dev/defs/dlasq2 +73 -0
  619. data/dev/defs/dlasq3 +141 -0
  620. data/dev/defs/dlasq4 +107 -0
  621. data/dev/defs/dlasq5 +100 -0
  622. data/dev/defs/dlasq6 +90 -0
  623. data/dev/defs/dlasr +169 -0
  624. data/dev/defs/dlasrt +53 -0
  625. data/dev/defs/dlassq +68 -0
  626. data/dev/defs/dlasv2 +100 -0
  627. data/dev/defs/dlaswp +81 -0
  628. data/dev/defs/dlasy2 +145 -0
  629. data/dev/defs/dlasyf +126 -0
  630. data/dev/defs/dlat2s +83 -0
  631. data/dev/defs/dlatbs +206 -0
  632. data/dev/defs/dlatdf +131 -0
  633. data/dev/defs/dlatps +192 -0
  634. data/dev/defs/dlatrd +168 -0
  635. data/dev/defs/dlatrs +202 -0
  636. data/dev/defs/dlatrz +106 -0
  637. data/dev/defs/dlatzm +123 -0
  638. data/dev/defs/dlauu2 +68 -0
  639. data/dev/defs/dlauum +68 -0
  640. data/dev/defs/dopgtr +87 -0
  641. data/dev/defs/dopmtr +120 -0
  642. data/dev/defs/dorbdb +270 -0
  643. data/dev/defs/dorcsd +264 -0
  644. data/dev/defs/dorg2l +85 -0
  645. data/dev/defs/dorg2r +85 -0
  646. data/dev/defs/dorgbr +129 -0
  647. data/dev/defs/dorghr +97 -0
  648. data/dev/defs/dorgl2 +84 -0
  649. data/dev/defs/dorglq +100 -0
  650. data/dev/defs/dorgql +101 -0
  651. data/dev/defs/dorgqr +101 -0
  652. data/dev/defs/dorgr2 +85 -0
  653. data/dev/defs/dorgrq +101 -0
  654. data/dev/defs/dorgtr +95 -0
  655. data/dev/defs/dorm2l +130 -0
  656. data/dev/defs/dorm2r +130 -0
  657. data/dev/defs/dormbr +176 -0
  658. data/dev/defs/dormhr +157 -0
  659. data/dev/defs/dorml2 +130 -0
  660. data/dev/defs/dormlq +143 -0
  661. data/dev/defs/dormql +143 -0
  662. data/dev/defs/dormqr +143 -0
  663. data/dev/defs/dormr2 +130 -0
  664. data/dev/defs/dormr3 +152 -0
  665. data/dev/defs/dormrq +143 -0
  666. data/dev/defs/dormrz +157 -0
  667. data/dev/defs/dormtr +152 -0
  668. data/dev/defs/dpbcon +98 -0
  669. data/dev/defs/dpbequ +96 -0
  670. data/dev/defs/dpbrfs +166 -0
  671. data/dev/defs/dpbstf +115 -0
  672. data/dev/defs/dpbsv +136 -0
  673. data/dev/defs/dpbsvx +314 -0
  674. data/dev/defs/dpbtf2 +105 -0
  675. data/dev/defs/dpbtrf +103 -0
  676. data/dev/defs/dpbtrs +98 -0
  677. data/dev/defs/dpftrf +161 -0
  678. data/dev/defs/dpftri +154 -0
  679. data/dev/defs/dpftrs +164 -0
  680. data/dev/defs/dpocon +87 -0
  681. data/dev/defs/dpoequ +80 -0
  682. data/dev/defs/dpoequb +80 -0
  683. data/dev/defs/dporfs +160 -0
  684. data/dev/defs/dporfsx +370 -0
  685. data/dev/defs/dposv +105 -0
  686. data/dev/defs/dposvx +281 -0
  687. data/dev/defs/dposvxx +468 -0
  688. data/dev/defs/dpotf2 +75 -0
  689. data/dev/defs/dpotrf +73 -0
  690. data/dev/defs/dpotri +67 -0
  691. data/dev/defs/dpotrs +79 -0
  692. data/dev/defs/dppcon +85 -0
  693. data/dev/defs/dppequ +82 -0
  694. data/dev/defs/dpprfs +146 -0
  695. data/dev/defs/dppsv +115 -0
  696. data/dev/defs/dppsvx +283 -0
  697. data/dev/defs/dpptrf +81 -0
  698. data/dev/defs/dpptri +58 -0
  699. data/dev/defs/dpptrs +84 -0
  700. data/dev/defs/dpstf2 +108 -0
  701. data/dev/defs/dpstrf +108 -0
  702. data/dev/defs/dptcon +84 -0
  703. data/dev/defs/dpteqr +117 -0
  704. data/dev/defs/dptrfs +141 -0
  705. data/dev/defs/dptsv +89 -0
  706. data/dev/defs/dptsvx +203 -0
  707. data/dev/defs/dpttrf +59 -0
  708. data/dev/defs/dpttrs +88 -0
  709. data/dev/defs/dptts2 +77 -0
  710. data/dev/defs/drscl +49 -0
  711. data/dev/defs/dsbev +117 -0
  712. data/dev/defs/dsbevd +169 -0
  713. data/dev/defs/dsbevx +231 -0
  714. data/dev/defs/dsbgst +130 -0
  715. data/dev/defs/dsbgv +156 -0
  716. data/dev/defs/dsbgvd +206 -0
  717. data/dev/defs/dsbgvx +259 -0
  718. data/dev/defs/dsbtrd +132 -0
  719. data/dev/defs/dsfrk +134 -0
  720. data/dev/defs/dsgesv +170 -0
  721. data/dev/defs/dspcon +92 -0
  722. data/dev/defs/dspev +103 -0
  723. data/dev/defs/dspevd +155 -0
  724. data/dev/defs/dspevx +197 -0
  725. data/dev/defs/dspgst +80 -0
  726. data/dev/defs/dspgv +139 -0
  727. data/dev/defs/dspgvd +188 -0
  728. data/dev/defs/dspgvx +241 -0
  729. data/dev/defs/dsposv +173 -0
  730. data/dev/defs/dsprfs +156 -0
  731. data/dev/defs/dspsv +134 -0
  732. data/dev/defs/dspsvx +249 -0
  733. data/dev/defs/dsptrd +118 -0
  734. data/dev/defs/dsptrf +120 -0
  735. data/dev/defs/dsptri +77 -0
  736. data/dev/defs/dsptrs +84 -0
  737. data/dev/defs/dstebz +229 -0
  738. data/dev/defs/dstedc +165 -0
  739. data/dev/defs/dstegr +233 -0
  740. data/dev/defs/dstein +152 -0
  741. data/dev/defs/dstemr +285 -0
  742. data/dev/defs/dsteqr +103 -0
  743. data/dev/defs/dsterf +54 -0
  744. data/dev/defs/dstev +88 -0
  745. data/dev/defs/dstevd +138 -0
  746. data/dev/defs/dstevr +273 -0
  747. data/dev/defs/dstevx +193 -0
  748. data/dev/defs/dsycon +98 -0
  749. data/dev/defs/dsyconv +90 -0
  750. data/dev/defs/dsyequb +104 -0
  751. data/dev/defs/dsyev +104 -0
  752. data/dev/defs/dsyevd +157 -0
  753. data/dev/defs/dsyevr +300 -0
  754. data/dev/defs/dsyevx +218 -0
  755. data/dev/defs/dsygs2 +96 -0
  756. data/dev/defs/dsygst +96 -0
  757. data/dev/defs/dsygv +148 -0
  758. data/dev/defs/dsygvd +197 -0
  759. data/dev/defs/dsygvx +263 -0
  760. data/dev/defs/dsyrfs +170 -0
  761. data/dev/defs/dsyrfsx +380 -0
  762. data/dev/defs/dsysv +149 -0
  763. data/dev/defs/dsysvx +261 -0
  764. data/dev/defs/dsysvxx +481 -0
  765. data/dev/defs/dsyswapr +70 -0
  766. data/dev/defs/dsytd2 +142 -0
  767. data/dev/defs/dsytf2 +143 -0
  768. data/dev/defs/dsytrd +162 -0
  769. data/dev/defs/dsytrf +156 -0
  770. data/dev/defs/dsytri +83 -0
  771. data/dev/defs/dsytri2 +110 -0
  772. data/dev/defs/dsytri2x +90 -0
  773. data/dev/defs/dsytrs +90 -0
  774. data/dev/defs/dsytrs2 +97 -0
  775. data/dev/defs/dtbcon +109 -0
  776. data/dev/defs/dtbrfs +164 -0
  777. data/dev/defs/dtbtrs +113 -0
  778. data/dev/defs/dtfsm +243 -0
  779. data/dev/defs/dtftri +163 -0
  780. data/dev/defs/dtfttp +151 -0
  781. data/dev/defs/dtfttr +176 -0
  782. data/dev/defs/dtgevc +265 -0
  783. data/dev/defs/dtgex2 +191 -0
  784. data/dev/defs/dtgexc +190 -0
  785. data/dev/defs/dtgsen +422 -0
  786. data/dev/defs/dtgsja +343 -0
  787. data/dev/defs/dtgsna +354 -0
  788. data/dev/defs/dtgsy2 +252 -0
  789. data/dev/defs/dtgsyl +274 -0
  790. data/dev/defs/dtpcon +95 -0
  791. data/dev/defs/dtprfs +150 -0
  792. data/dev/defs/dtptri +79 -0
  793. data/dev/defs/dtptrs +98 -0
  794. data/dev/defs/dtpttf +151 -0
  795. data/dev/defs/dtpttr +73 -0
  796. data/dev/defs/dtrcon +103 -0
  797. data/dev/defs/dtrevc +191 -0
  798. data/dev/defs/dtrexc +113 -0
  799. data/dev/defs/dtrrfs +158 -0
  800. data/dev/defs/dtrsen +284 -0
  801. data/dev/defs/dtrsna +239 -0
  802. data/dev/defs/dtrsyl +133 -0
  803. data/dev/defs/dtrti2 +76 -0
  804. data/dev/defs/dtrtri +75 -0
  805. data/dev/defs/dtrtrs +107 -0
  806. data/dev/defs/dtrttf +171 -0
  807. data/dev/defs/dtrttp +72 -0
  808. data/dev/defs/dtzrqf +104 -0
  809. data/dev/defs/dtzrzf +128 -0
  810. data/dev/defs/dzsum1 +49 -0
  811. data/dev/defs/icmax1 +55 -0
  812. data/dev/defs/ieeeck +49 -0
  813. data/dev/defs/ilaclc +46 -0
  814. data/dev/defs/ilaclr +46 -0
  815. data/dev/defs/iladiag +30 -0
  816. data/dev/defs/iladlc +46 -0
  817. data/dev/defs/iladlr +46 -0
  818. data/dev/defs/ilaenv +133 -0
  819. data/dev/defs/ilaprec +33 -0
  820. data/dev/defs/ilaslc +46 -0
  821. data/dev/defs/ilaslr +46 -0
  822. data/dev/defs/ilatrans +32 -0
  823. data/dev/defs/ilauplo +30 -0
  824. data/dev/defs/ilaver +35 -0
  825. data/dev/defs/ilazlc +46 -0
  826. data/dev/defs/ilazlr +46 -0
  827. data/dev/defs/iparmq +177 -0
  828. data/dev/defs/izmax1 +55 -0
  829. data/dev/defs/lsamen +50 -0
  830. data/dev/defs/sbbcsd +297 -0
  831. data/dev/defs/sbdsdc +192 -0
  832. data/dev/defs/sbdsqr +203 -0
  833. data/dev/defs/scsum1 +49 -0
  834. data/dev/defs/sdisna +84 -0
  835. data/dev/defs/sgbbrd +167 -0
  836. data/dev/defs/sgbcon +114 -0
  837. data/dev/defs/sgbequ +121 -0
  838. data/dev/defs/sgbequb +128 -0
  839. data/dev/defs/sgbrfs +182 -0
  840. data/dev/defs/sgbrfsx +419 -0
  841. data/dev/defs/sgbsv +134 -0
  842. data/dev/defs/sgbsvx +356 -0
  843. data/dev/defs/sgbsvxx +539 -0
  844. data/dev/defs/sgbtf2 +110 -0
  845. data/dev/defs/sgbtrf +109 -0
  846. data/dev/defs/sgbtrs +106 -0
  847. data/dev/defs/sgebak +95 -0
  848. data/dev/defs/sgebal +125 -0
  849. data/dev/defs/sgebd2 +162 -0
  850. data/dev/defs/sgebrd +178 -0
  851. data/dev/defs/sgecon +90 -0
  852. data/dev/defs/sgeequ +107 -0
  853. data/dev/defs/sgeequb +114 -0
  854. data/dev/defs/sgees +188 -0
  855. data/dev/defs/sgeesx +251 -0
  856. data/dev/defs/sgeev +166 -0
  857. data/dev/defs/sgeevx +282 -0
  858. data/dev/defs/sgegs +207 -0
  859. data/dev/defs/sgegv +286 -0
  860. data/dev/defs/sgehd2 +115 -0
  861. data/dev/defs/sgehrd +136 -0
  862. data/dev/defs/sgejsv +860 -0
  863. data/dev/defs/sgelq2 +89 -0
  864. data/dev/defs/sgelqf +113 -0
  865. data/dev/defs/sgels +158 -0
  866. data/dev/defs/sgelsd +194 -0
  867. data/dev/defs/sgelss +149 -0
  868. data/dev/defs/sgelsx +148 -0
  869. data/dev/defs/sgelsy +181 -0
  870. data/dev/defs/sgeql2 +91 -0
  871. data/dev/defs/sgeqlf +116 -0
  872. data/dev/defs/sgeqp3 +120 -0
  873. data/dev/defs/sgeqpf +111 -0
  874. data/dev/defs/sgeqr2 +89 -0
  875. data/dev/defs/sgeqr2p +89 -0
  876. data/dev/defs/sgeqrf +114 -0
  877. data/dev/defs/sgeqrfp +114 -0
  878. data/dev/defs/sgerfs +164 -0
  879. data/dev/defs/sgerfsx +394 -0
  880. data/dev/defs/sgerq2 +91 -0
  881. data/dev/defs/sgerqf +116 -0
  882. data/dev/defs/sgesc2 +86 -0
  883. data/dev/defs/sgesdd +197 -0
  884. data/dev/defs/sgesv +97 -0
  885. data/dev/defs/sgesvd +188 -0
  886. data/dev/defs/sgesvj +304 -0
  887. data/dev/defs/sgesvx +333 -0
  888. data/dev/defs/sgesvxx +519 -0
  889. data/dev/defs/sgetc2 +82 -0
  890. data/dev/defs/sgetf2 +76 -0
  891. data/dev/defs/sgetrf +76 -0
  892. data/dev/defs/sgetri +86 -0
  893. data/dev/defs/sgetrs +91 -0
  894. data/dev/defs/sggbak +119 -0
  895. data/dev/defs/sggbal +144 -0
  896. data/dev/defs/sgges +261 -0
  897. data/dev/defs/sggesx +342 -0
  898. data/dev/defs/sggev +206 -0
  899. data/dev/defs/sggevx +371 -0
  900. data/dev/defs/sggglm +160 -0
  901. data/dev/defs/sgghrd +174 -0
  902. data/dev/defs/sgglse +157 -0
  903. data/dev/defs/sggqrf +195 -0
  904. data/dev/defs/sggrqf +194 -0
  905. data/dev/defs/sggsvd +319 -0
  906. data/dev/defs/sggsvp +233 -0
  907. data/dev/defs/sgsvj0 +200 -0
  908. data/dev/defs/sgsvj1 +220 -0
  909. data/dev/defs/sgtcon +119 -0
  910. data/dev/defs/sgtrfs +193 -0
  911. data/dev/defs/sgtsv +100 -0
  912. data/dev/defs/sgtsvx +275 -0
  913. data/dev/defs/sgttrf +97 -0
  914. data/dev/defs/sgttrs +119 -0
  915. data/dev/defs/sgtts2 +106 -0
  916. data/dev/defs/shgeqz +282 -0
  917. data/dev/defs/shsein +234 -0
  918. data/dev/defs/shseqr +279 -0
  919. data/dev/defs/sisnan +29 -0
  920. data/dev/defs/sla_gbamv +152 -0
  921. data/dev/defs/sla_gbrcond +152 -0
  922. data/dev/defs/sla_gbrfsx_extended +391 -0
  923. data/dev/defs/sla_gbrpvgrw +90 -0
  924. data/dev/defs/sla_geamv +142 -0
  925. data/dev/defs/sla_gercond +134 -0
  926. data/dev/defs/sla_gerfsx_extended +376 -0
  927. data/dev/defs/sla_lin_berr +78 -0
  928. data/dev/defs/sla_porcond +122 -0
  929. data/dev/defs/sla_porfsx_extended +363 -0
  930. data/dev/defs/sla_porpvgrw +81 -0
  931. data/dev/defs/sla_rpvgrw +72 -0
  932. data/dev/defs/sla_syamv +142 -0
  933. data/dev/defs/sla_syrcond +131 -0
  934. data/dev/defs/sla_syrfsx_extended +372 -0
  935. data/dev/defs/sla_syrpvgrw +101 -0
  936. data/dev/defs/sla_wwaddw +53 -0
  937. data/dev/defs/slabad +43 -0
  938. data/dev/defs/slabrd +186 -0
  939. data/dev/defs/slacn2 +96 -0
  940. data/dev/defs/slacon +80 -0
  941. data/dev/defs/slacpy +78 -0
  942. data/dev/defs/sladiv +57 -0
  943. data/dev/defs/slae2 +66 -0
  944. data/dev/defs/slaebz +292 -0
  945. data/dev/defs/slaed0 +147 -0
  946. data/dev/defs/slaed1 +141 -0
  947. data/dev/defs/slaed2 +194 -0
  948. data/dev/defs/slaed3 +167 -0
  949. data/dev/defs/slaed4 +113 -0
  950. data/dev/defs/slaed5 +78 -0
  951. data/dev/defs/slaed6 +101 -0
  952. data/dev/defs/slaed7 +241 -0
  953. data/dev/defs/slaed8 +227 -0
  954. data/dev/defs/slaed9 +137 -0
  955. data/dev/defs/slaeda +147 -0
  956. data/dev/defs/slaein +141 -0
  957. data/dev/defs/slaev2 +83 -0
  958. data/dev/defs/slaexc +107 -0
  959. data/dev/defs/slag2 +123 -0
  960. data/dev/defs/slag2d +74 -0
  961. data/dev/defs/slags2 +108 -0
  962. data/dev/defs/slagtf +128 -0
  963. data/dev/defs/slagtm +115 -0
  964. data/dev/defs/slagts +135 -0
  965. data/dev/defs/slagv2 +128 -0
  966. data/dev/defs/slahqr +172 -0
  967. data/dev/defs/slahr2 +153 -0
  968. data/dev/defs/slahrd +142 -0
  969. data/dev/defs/slaic1 +101 -0
  970. data/dev/defs/slaln2 +187 -0
  971. data/dev/defs/slals0 +250 -0
  972. data/dev/defs/slalsa +268 -0
  973. data/dev/defs/slalsd +150 -0
  974. data/dev/defs/slamrg +66 -0
  975. data/dev/defs/slaneg +87 -0
  976. data/dev/defs/slangb +93 -0
  977. data/dev/defs/slange +84 -0
  978. data/dev/defs/slangt +77 -0
  979. data/dev/defs/slanhs +78 -0
  980. data/dev/defs/slansb +97 -0
  981. data/dev/defs/slansf +179 -0
  982. data/dev/defs/slansp +83 -0
  983. data/dev/defs/slanst +69 -0
  984. data/dev/defs/slansy +92 -0
  985. data/dev/defs/slantb +108 -0
  986. data/dev/defs/slantp +93 -0
  987. data/dev/defs/slantr +109 -0
  988. data/dev/defs/slanv2 +84 -0
  989. data/dev/defs/slapll +69 -0
  990. data/dev/defs/slapmr +73 -0
  991. data/dev/defs/slapmt +73 -0
  992. data/dev/defs/slapy2 +30 -0
  993. data/dev/defs/slapy3 +34 -0
  994. data/dev/defs/slaqgb +124 -0
  995. data/dev/defs/slaqge +107 -0
  996. data/dev/defs/slaqp2 +115 -0
  997. data/dev/defs/slaqps +146 -0
  998. data/dev/defs/slaqr0 +225 -0
  999. data/dev/defs/slaqr1 +79 -0
  1000. data/dev/defs/slaqr2 +252 -0
  1001. data/dev/defs/slaqr3 +247 -0
  1002. data/dev/defs/slaqr4 +225 -0
  1003. data/dev/defs/slaqr5 +230 -0
  1004. data/dev/defs/slaqsb +105 -0
  1005. data/dev/defs/slaqsp +89 -0
  1006. data/dev/defs/slaqsy +98 -0
  1007. data/dev/defs/slaqtr +134 -0
  1008. data/dev/defs/slar1v +199 -0
  1009. data/dev/defs/slar2v +86 -0
  1010. data/dev/defs/slarf +93 -0
  1011. data/dev/defs/slarfb +139 -0
  1012. data/dev/defs/slarfg +71 -0
  1013. data/dev/defs/slarfgp +69 -0
  1014. data/dev/defs/slarft +133 -0
  1015. data/dev/defs/slarfx +89 -0
  1016. data/dev/defs/slargv +74 -0
  1017. data/dev/defs/slarnv +61 -0
  1018. data/dev/defs/slarra +106 -0
  1019. data/dev/defs/slarrb +167 -0
  1020. data/dev/defs/slarrc +99 -0
  1021. data/dev/defs/slarrd +290 -0
  1022. data/dev/defs/slarre +265 -0
  1023. data/dev/defs/slarrf +165 -0
  1024. data/dev/defs/slarrj +138 -0
  1025. data/dev/defs/slarrk +108 -0
  1026. data/dev/defs/slarrr +62 -0
  1027. data/dev/defs/slarrv +259 -0
  1028. data/dev/defs/slarscl2 +61 -0
  1029. data/dev/defs/slartg +64 -0
  1030. data/dev/defs/slartgp +62 -0
  1031. data/dev/defs/slartgs +57 -0
  1032. data/dev/defs/slartv +82 -0
  1033. data/dev/defs/slaruv +59 -0
  1034. data/dev/defs/slarz +109 -0
  1035. data/dev/defs/slarzb +150 -0
  1036. data/dev/defs/slarzt +151 -0
  1037. data/dev/defs/slas2 +71 -0
  1038. data/dev/defs/slascl +102 -0
  1039. data/dev/defs/slascl2 +61 -0
  1040. data/dev/defs/slasd0 +131 -0
  1041. data/dev/defs/slasd1 +179 -0
  1042. data/dev/defs/slasd2 +254 -0
  1043. data/dev/defs/slasd3 +213 -0
  1044. data/dev/defs/slasd4 +123 -0
  1045. data/dev/defs/slasd5 +88 -0
  1046. data/dev/defs/slasd6 +300 -0
  1047. data/dev/defs/slasd7 +264 -0
  1048. data/dev/defs/slasd8 +144 -0
  1049. data/dev/defs/slasda +275 -0
  1050. data/dev/defs/slasdq +187 -0
  1051. data/dev/defs/slasdt +76 -0
  1052. data/dev/defs/slaset +81 -0
  1053. data/dev/defs/slasq1 +75 -0
  1054. data/dev/defs/slasq2 +73 -0
  1055. data/dev/defs/slasq3 +141 -0
  1056. data/dev/defs/slasq4 +107 -0
  1057. data/dev/defs/slasq5 +100 -0
  1058. data/dev/defs/slasq6 +90 -0
  1059. data/dev/defs/slasr +169 -0
  1060. data/dev/defs/slasrt +53 -0
  1061. data/dev/defs/slassq +68 -0
  1062. data/dev/defs/slasv2 +100 -0
  1063. data/dev/defs/slaswp +81 -0
  1064. data/dev/defs/slasy2 +145 -0
  1065. data/dev/defs/slasyf +126 -0
  1066. data/dev/defs/slatbs +206 -0
  1067. data/dev/defs/slatdf +131 -0
  1068. data/dev/defs/slatps +192 -0
  1069. data/dev/defs/slatrd +168 -0
  1070. data/dev/defs/slatrs +202 -0
  1071. data/dev/defs/slatrz +106 -0
  1072. data/dev/defs/slatzm +123 -0
  1073. data/dev/defs/slauu2 +68 -0
  1074. data/dev/defs/slauum +68 -0
  1075. data/dev/defs/sopgtr +87 -0
  1076. data/dev/defs/sopmtr +120 -0
  1077. data/dev/defs/sorbdb +270 -0
  1078. data/dev/defs/sorcsd +264 -0
  1079. data/dev/defs/sorg2l +85 -0
  1080. data/dev/defs/sorg2r +85 -0
  1081. data/dev/defs/sorgbr +129 -0
  1082. data/dev/defs/sorghr +97 -0
  1083. data/dev/defs/sorgl2 +84 -0
  1084. data/dev/defs/sorglq +100 -0
  1085. data/dev/defs/sorgql +101 -0
  1086. data/dev/defs/sorgqr +101 -0
  1087. data/dev/defs/sorgr2 +85 -0
  1088. data/dev/defs/sorgrq +101 -0
  1089. data/dev/defs/sorgtr +95 -0
  1090. data/dev/defs/sorm2l +130 -0
  1091. data/dev/defs/sorm2r +130 -0
  1092. data/dev/defs/sormbr +176 -0
  1093. data/dev/defs/sormhr +157 -0
  1094. data/dev/defs/sorml2 +130 -0
  1095. data/dev/defs/sormlq +143 -0
  1096. data/dev/defs/sormql +143 -0
  1097. data/dev/defs/sormqr +143 -0
  1098. data/dev/defs/sormr2 +130 -0
  1099. data/dev/defs/sormr3 +152 -0
  1100. data/dev/defs/sormrq +143 -0
  1101. data/dev/defs/sormrz +157 -0
  1102. data/dev/defs/sormtr +152 -0
  1103. data/dev/defs/spbcon +98 -0
  1104. data/dev/defs/spbequ +96 -0
  1105. data/dev/defs/spbrfs +166 -0
  1106. data/dev/defs/spbstf +115 -0
  1107. data/dev/defs/spbsv +136 -0
  1108. data/dev/defs/spbsvx +314 -0
  1109. data/dev/defs/spbtf2 +105 -0
  1110. data/dev/defs/spbtrf +103 -0
  1111. data/dev/defs/spbtrs +98 -0
  1112. data/dev/defs/spftrf +161 -0
  1113. data/dev/defs/spftri +154 -0
  1114. data/dev/defs/spftrs +164 -0
  1115. data/dev/defs/spocon +87 -0
  1116. data/dev/defs/spoequ +80 -0
  1117. data/dev/defs/spoequb +80 -0
  1118. data/dev/defs/sporfs +160 -0
  1119. data/dev/defs/sporfsx +370 -0
  1120. data/dev/defs/sposv +105 -0
  1121. data/dev/defs/sposvx +281 -0
  1122. data/dev/defs/sposvxx +471 -0
  1123. data/dev/defs/spotf2 +75 -0
  1124. data/dev/defs/spotrf +73 -0
  1125. data/dev/defs/spotri +67 -0
  1126. data/dev/defs/spotrs +79 -0
  1127. data/dev/defs/sppcon +85 -0
  1128. data/dev/defs/sppequ +82 -0
  1129. data/dev/defs/spprfs +146 -0
  1130. data/dev/defs/sppsv +115 -0
  1131. data/dev/defs/sppsvx +283 -0
  1132. data/dev/defs/spptrf +81 -0
  1133. data/dev/defs/spptri +58 -0
  1134. data/dev/defs/spptrs +84 -0
  1135. data/dev/defs/spstf2 +108 -0
  1136. data/dev/defs/spstrf +108 -0
  1137. data/dev/defs/sptcon +84 -0
  1138. data/dev/defs/spteqr +117 -0
  1139. data/dev/defs/sptrfs +141 -0
  1140. data/dev/defs/sptsv +89 -0
  1141. data/dev/defs/sptsvx +203 -0
  1142. data/dev/defs/spttrf +59 -0
  1143. data/dev/defs/spttrs +88 -0
  1144. data/dev/defs/sptts2 +77 -0
  1145. data/dev/defs/srscl +49 -0
  1146. data/dev/defs/ssbev +117 -0
  1147. data/dev/defs/ssbevd +169 -0
  1148. data/dev/defs/ssbevx +231 -0
  1149. data/dev/defs/ssbgst +130 -0
  1150. data/dev/defs/ssbgv +156 -0
  1151. data/dev/defs/ssbgvd +206 -0
  1152. data/dev/defs/ssbgvx +259 -0
  1153. data/dev/defs/ssbtrd +132 -0
  1154. data/dev/defs/ssfrk +134 -0
  1155. data/dev/defs/sspcon +92 -0
  1156. data/dev/defs/sspev +103 -0
  1157. data/dev/defs/sspevd +154 -0
  1158. data/dev/defs/sspevx +197 -0
  1159. data/dev/defs/sspgst +80 -0
  1160. data/dev/defs/sspgv +139 -0
  1161. data/dev/defs/sspgvd +188 -0
  1162. data/dev/defs/sspgvx +241 -0
  1163. data/dev/defs/ssprfs +156 -0
  1164. data/dev/defs/sspsv +134 -0
  1165. data/dev/defs/sspsvx +249 -0
  1166. data/dev/defs/ssptrd +118 -0
  1167. data/dev/defs/ssptrf +120 -0
  1168. data/dev/defs/ssptri +77 -0
  1169. data/dev/defs/ssptrs +84 -0
  1170. data/dev/defs/sstebz +229 -0
  1171. data/dev/defs/sstedc +164 -0
  1172. data/dev/defs/sstegr +233 -0
  1173. data/dev/defs/sstein +152 -0
  1174. data/dev/defs/sstemr +285 -0
  1175. data/dev/defs/ssteqr +103 -0
  1176. data/dev/defs/ssterf +54 -0
  1177. data/dev/defs/sstev +88 -0
  1178. data/dev/defs/sstevd +138 -0
  1179. data/dev/defs/sstevr +275 -0
  1180. data/dev/defs/sstevx +193 -0
  1181. data/dev/defs/ssycon +98 -0
  1182. data/dev/defs/ssyconv +90 -0
  1183. data/dev/defs/ssyequb +104 -0
  1184. data/dev/defs/ssyev +104 -0
  1185. data/dev/defs/ssyevd +157 -0
  1186. data/dev/defs/ssyevr +302 -0
  1187. data/dev/defs/ssyevx +218 -0
  1188. data/dev/defs/ssygs2 +96 -0
  1189. data/dev/defs/ssygst +96 -0
  1190. data/dev/defs/ssygv +148 -0
  1191. data/dev/defs/ssygvd +197 -0
  1192. data/dev/defs/ssygvx +263 -0
  1193. data/dev/defs/ssyrfs +170 -0
  1194. data/dev/defs/ssyrfsx +380 -0
  1195. data/dev/defs/ssysv +149 -0
  1196. data/dev/defs/ssysvx +261 -0
  1197. data/dev/defs/ssysvxx +484 -0
  1198. data/dev/defs/ssyswapr +70 -0
  1199. data/dev/defs/ssytd2 +142 -0
  1200. data/dev/defs/ssytf2 +143 -0
  1201. data/dev/defs/ssytrd +162 -0
  1202. data/dev/defs/ssytrf +156 -0
  1203. data/dev/defs/ssytri +83 -0
  1204. data/dev/defs/ssytri2 +110 -0
  1205. data/dev/defs/ssytri2x +90 -0
  1206. data/dev/defs/ssytrs +90 -0
  1207. data/dev/defs/ssytrs2 +97 -0
  1208. data/dev/defs/stbcon +109 -0
  1209. data/dev/defs/stbrfs +164 -0
  1210. data/dev/defs/stbtrs +113 -0
  1211. data/dev/defs/stfsm +243 -0
  1212. data/dev/defs/stftri +163 -0
  1213. data/dev/defs/stfttp +151 -0
  1214. data/dev/defs/stfttr +174 -0
  1215. data/dev/defs/stgevc +265 -0
  1216. data/dev/defs/stgex2 +191 -0
  1217. data/dev/defs/stgexc +190 -0
  1218. data/dev/defs/stgsen +421 -0
  1219. data/dev/defs/stgsja +343 -0
  1220. data/dev/defs/stgsna +354 -0
  1221. data/dev/defs/stgsy2 +252 -0
  1222. data/dev/defs/stgsyl +274 -0
  1223. data/dev/defs/stpcon +95 -0
  1224. data/dev/defs/stprfs +150 -0
  1225. data/dev/defs/stptri +79 -0
  1226. data/dev/defs/stptrs +98 -0
  1227. data/dev/defs/stpttf +151 -0
  1228. data/dev/defs/stpttr +73 -0
  1229. data/dev/defs/strcon +103 -0
  1230. data/dev/defs/strevc +191 -0
  1231. data/dev/defs/strexc +113 -0
  1232. data/dev/defs/strrfs +158 -0
  1233. data/dev/defs/strsen +284 -0
  1234. data/dev/defs/strsna +239 -0
  1235. data/dev/defs/strsyl +133 -0
  1236. data/dev/defs/strti2 +76 -0
  1237. data/dev/defs/strtri +75 -0
  1238. data/dev/defs/strtrs +107 -0
  1239. data/dev/defs/strttf +171 -0
  1240. data/dev/defs/strttp +72 -0
  1241. data/dev/defs/stzrqf +104 -0
  1242. data/dev/defs/stzrzf +128 -0
  1243. data/dev/defs/xerbla +40 -0
  1244. data/dev/defs/xerbla_array +65 -0
  1245. data/dev/defs/zbbcsd +297 -0
  1246. data/dev/defs/zbdsqr +196 -0
  1247. data/dev/defs/zcgesv +176 -0
  1248. data/dev/defs/zcposv +182 -0
  1249. data/dev/defs/zdrscl +49 -0
  1250. data/dev/defs/zgbbrd +174 -0
  1251. data/dev/defs/zgbcon +114 -0
  1252. data/dev/defs/zgbequ +121 -0
  1253. data/dev/defs/zgbequb +128 -0
  1254. data/dev/defs/zgbrfs +182 -0
  1255. data/dev/defs/zgbrfsx +418 -0
  1256. data/dev/defs/zgbsv +134 -0
  1257. data/dev/defs/zgbsvx +356 -0
  1258. data/dev/defs/zgbsvxx +536 -0
  1259. data/dev/defs/zgbtf2 +110 -0
  1260. data/dev/defs/zgbtrf +109 -0
  1261. data/dev/defs/zgbtrs +106 -0
  1262. data/dev/defs/zgebak +95 -0
  1263. data/dev/defs/zgebal +125 -0
  1264. data/dev/defs/zgebd2 +162 -0
  1265. data/dev/defs/zgebrd +178 -0
  1266. data/dev/defs/zgecon +90 -0
  1267. data/dev/defs/zgeequ +107 -0
  1268. data/dev/defs/zgeequb +114 -0
  1269. data/dev/defs/zgees +170 -0
  1270. data/dev/defs/zgeesx +209 -0
  1271. data/dev/defs/zgeev +154 -0
  1272. data/dev/defs/zgeevx +263 -0
  1273. data/dev/defs/zgegs +205 -0
  1274. data/dev/defs/zgegv +261 -0
  1275. data/dev/defs/zgehd2 +115 -0
  1276. data/dev/defs/zgehrd +136 -0
  1277. data/dev/defs/zgelq2 +89 -0
  1278. data/dev/defs/zgelqf +113 -0
  1279. data/dev/defs/zgels +157 -0
  1280. data/dev/defs/zgelsd +211 -0
  1281. data/dev/defs/zgelss +156 -0
  1282. data/dev/defs/zgelsx +155 -0
  1283. data/dev/defs/zgelsy +188 -0
  1284. data/dev/defs/zgeql2 +91 -0
  1285. data/dev/defs/zgeqlf +116 -0
  1286. data/dev/defs/zgeqp3 +127 -0
  1287. data/dev/defs/zgeqpf +118 -0
  1288. data/dev/defs/zgeqr2 +89 -0
  1289. data/dev/defs/zgeqr2p +89 -0
  1290. data/dev/defs/zgeqrf +114 -0
  1291. data/dev/defs/zgeqrfp +114 -0
  1292. data/dev/defs/zgerfs +164 -0
  1293. data/dev/defs/zgerfsx +394 -0
  1294. data/dev/defs/zgerq2 +91 -0
  1295. data/dev/defs/zgerqf +116 -0
  1296. data/dev/defs/zgesc2 +87 -0
  1297. data/dev/defs/zgesdd +203 -0
  1298. data/dev/defs/zgesv +97 -0
  1299. data/dev/defs/zgesvd +195 -0
  1300. data/dev/defs/zgesvx +333 -0
  1301. data/dev/defs/zgesvxx +516 -0
  1302. data/dev/defs/zgetc2 +82 -0
  1303. data/dev/defs/zgetf2 +76 -0
  1304. data/dev/defs/zgetrf +76 -0
  1305. data/dev/defs/zgetri +86 -0
  1306. data/dev/defs/zgetrs +91 -0
  1307. data/dev/defs/zggbak +119 -0
  1308. data/dev/defs/zggbal +144 -0
  1309. data/dev/defs/zgges +247 -0
  1310. data/dev/defs/zggesx +311 -0
  1311. data/dev/defs/zggev +197 -0
  1312. data/dev/defs/zggevx +353 -0
  1313. data/dev/defs/zggglm +160 -0
  1314. data/dev/defs/zgghrd +171 -0
  1315. data/dev/defs/zgglse +157 -0
  1316. data/dev/defs/zggqrf +195 -0
  1317. data/dev/defs/zggrqf +194 -0
  1318. data/dev/defs/zggsvd +324 -0
  1319. data/dev/defs/zggsvp +240 -0
  1320. data/dev/defs/zgtcon +112 -0
  1321. data/dev/defs/zgtrfs +193 -0
  1322. data/dev/defs/zgtsv +97 -0
  1323. data/dev/defs/zgtsvx +275 -0
  1324. data/dev/defs/zgttrf +97 -0
  1325. data/dev/defs/zgttrs +119 -0
  1326. data/dev/defs/zgtts2 +108 -0
  1327. data/dev/defs/zhbev +124 -0
  1328. data/dev/defs/zhbevd +194 -0
  1329. data/dev/defs/zhbevx +234 -0
  1330. data/dev/defs/zhbgst +137 -0
  1331. data/dev/defs/zhbgv +163 -0
  1332. data/dev/defs/zhbgvd +231 -0
  1333. data/dev/defs/zhbgvx +265 -0
  1334. data/dev/defs/zhbtrd +132 -0
  1335. data/dev/defs/zhecon +91 -0
  1336. data/dev/defs/zheequb +87 -0
  1337. data/dev/defs/zheev +111 -0
  1338. data/dev/defs/zheevd +178 -0
  1339. data/dev/defs/zheevr +325 -0
  1340. data/dev/defs/zheevx +225 -0
  1341. data/dev/defs/zhegs2 +96 -0
  1342. data/dev/defs/zhegst +96 -0
  1343. data/dev/defs/zhegv +155 -0
  1344. data/dev/defs/zhegvd +222 -0
  1345. data/dev/defs/zhegvx +270 -0
  1346. data/dev/defs/zherfs +170 -0
  1347. data/dev/defs/zherfsx +380 -0
  1348. data/dev/defs/zhesv +147 -0
  1349. data/dev/defs/zhesvx +261 -0
  1350. data/dev/defs/zhesvxx +478 -0
  1351. data/dev/defs/zhetd2 +143 -0
  1352. data/dev/defs/zhetf2 +141 -0
  1353. data/dev/defs/zhetrd +162 -0
  1354. data/dev/defs/zhetrf +151 -0
  1355. data/dev/defs/zhetri +83 -0
  1356. data/dev/defs/zhetrs +90 -0
  1357. data/dev/defs/zhetrs2 +97 -0
  1358. data/dev/defs/zhfrk +138 -0
  1359. data/dev/defs/zhgeqz +258 -0
  1360. data/dev/defs/zhpcon +85 -0
  1361. data/dev/defs/zhpev +110 -0
  1362. data/dev/defs/zhpevd +180 -0
  1363. data/dev/defs/zhpevx +204 -0
  1364. data/dev/defs/zhpgst +80 -0
  1365. data/dev/defs/zhpgv +145 -0
  1366. data/dev/defs/zhpgvd +221 -0
  1367. data/dev/defs/zhpgvx +247 -0
  1368. data/dev/defs/zhprfs +156 -0
  1369. data/dev/defs/zhpsv +134 -0
  1370. data/dev/defs/zhpsvx +248 -0
  1371. data/dev/defs/zhptrd +118 -0
  1372. data/dev/defs/zhptrf +120 -0
  1373. data/dev/defs/zhptri +77 -0
  1374. data/dev/defs/zhptrs +84 -0
  1375. data/dev/defs/zhsein +217 -0
  1376. data/dev/defs/zhseqr +263 -0
  1377. data/dev/defs/zla_gbamv +154 -0
  1378. data/dev/defs/zla_gbrcond_c +146 -0
  1379. data/dev/defs/zla_gbrcond_x +140 -0
  1380. data/dev/defs/zla_gbrfsx_extended +391 -0
  1381. data/dev/defs/zla_gbrpvgrw +94 -0
  1382. data/dev/defs/zla_geamv +142 -0
  1383. data/dev/defs/zla_gercond_c +128 -0
  1384. data/dev/defs/zla_gercond_x +122 -0
  1385. data/dev/defs/zla_gerfsx_extended +378 -0
  1386. data/dev/defs/zla_heamv +142 -0
  1387. data/dev/defs/zla_hercond_c +125 -0
  1388. data/dev/defs/zla_hercond_x +119 -0
  1389. data/dev/defs/zla_herfsx_extended +375 -0
  1390. data/dev/defs/zla_herpvgrw +105 -0
  1391. data/dev/defs/zla_lin_berr +79 -0
  1392. data/dev/defs/zla_porcond_c +116 -0
  1393. data/dev/defs/zla_porcond_x +110 -0
  1394. data/dev/defs/zla_porfsx_extended +366 -0
  1395. data/dev/defs/zla_porpvgrw +85 -0
  1396. data/dev/defs/zla_rpvgrw +76 -0
  1397. data/dev/defs/zla_syamv +142 -0
  1398. data/dev/defs/zla_syrcond_c +125 -0
  1399. data/dev/defs/zla_syrcond_x +119 -0
  1400. data/dev/defs/zla_syrfsx_extended +375 -0
  1401. data/dev/defs/zla_syrpvgrw +105 -0
  1402. data/dev/defs/zla_wwaddw +53 -0
  1403. data/dev/defs/zlabrd +187 -0
  1404. data/dev/defs/zlacgv +44 -0
  1405. data/dev/defs/zlacn2 +91 -0
  1406. data/dev/defs/zlacon +75 -0
  1407. data/dev/defs/zlacp2 +78 -0
  1408. data/dev/defs/zlacpy +78 -0
  1409. data/dev/defs/zlacrm +88 -0
  1410. data/dev/defs/zlacrt +73 -0
  1411. data/dev/defs/zladiv +37 -0
  1412. data/dev/defs/zlaed0 +121 -0
  1413. data/dev/defs/zlaed7 +237 -0
  1414. data/dev/defs/zlaed8 +211 -0
  1415. data/dev/defs/zlaein +117 -0
  1416. data/dev/defs/zlaesy +81 -0
  1417. data/dev/defs/zlaev2 +83 -0
  1418. data/dev/defs/zlag2c +82 -0
  1419. data/dev/defs/zlags2 +116 -0
  1420. data/dev/defs/zlagtm +115 -0
  1421. data/dev/defs/zlahef +127 -0
  1422. data/dev/defs/zlahqr +159 -0
  1423. data/dev/defs/zlahr2 +153 -0
  1424. data/dev/defs/zlahrd +141 -0
  1425. data/dev/defs/zlaic1 +101 -0
  1426. data/dev/defs/zlals0 +251 -0
  1427. data/dev/defs/zlalsa +267 -0
  1428. data/dev/defs/zlalsd +160 -0
  1429. data/dev/defs/zlangb +92 -0
  1430. data/dev/defs/zlange +84 -0
  1431. data/dev/defs/zlangt +77 -0
  1432. data/dev/defs/zlanhb +99 -0
  1433. data/dev/defs/zlanhe +93 -0
  1434. data/dev/defs/zlanhf +211 -0
  1435. data/dev/defs/zlanhp +85 -0
  1436. data/dev/defs/zlanhs +78 -0
  1437. data/dev/defs/zlanht +69 -0
  1438. data/dev/defs/zlansb +97 -0
  1439. data/dev/defs/zlansp +83 -0
  1440. data/dev/defs/zlansy +92 -0
  1441. data/dev/defs/zlantb +108 -0
  1442. data/dev/defs/zlantp +93 -0
  1443. data/dev/defs/zlantr +109 -0
  1444. data/dev/defs/zlapll +67 -0
  1445. data/dev/defs/zlapmr +73 -0
  1446. data/dev/defs/zlapmt +73 -0
  1447. data/dev/defs/zlaqgb +124 -0
  1448. data/dev/defs/zlaqge +107 -0
  1449. data/dev/defs/zlaqhb +105 -0
  1450. data/dev/defs/zlaqhe +98 -0
  1451. data/dev/defs/zlaqhp +89 -0
  1452. data/dev/defs/zlaqp2 +115 -0
  1453. data/dev/defs/zlaqps +141 -0
  1454. data/dev/defs/zlaqr0 +203 -0
  1455. data/dev/defs/zlaqr1 +66 -0
  1456. data/dev/defs/zlaqr2 +243 -0
  1457. data/dev/defs/zlaqr3 +238 -0
  1458. data/dev/defs/zlaqr4 +203 -0
  1459. data/dev/defs/zlaqr5 +221 -0
  1460. data/dev/defs/zlaqsb +105 -0
  1461. data/dev/defs/zlaqsp +89 -0
  1462. data/dev/defs/zlaqsy +98 -0
  1463. data/dev/defs/zlar1v +199 -0
  1464. data/dev/defs/zlar2v +88 -0
  1465. data/dev/defs/zlarcm +88 -0
  1466. data/dev/defs/zlarf +97 -0
  1467. data/dev/defs/zlarfb +139 -0
  1468. data/dev/defs/zlarfg +71 -0
  1469. data/dev/defs/zlarfgp +69 -0
  1470. data/dev/defs/zlarft +133 -0
  1471. data/dev/defs/zlarfx +88 -0
  1472. data/dev/defs/zlargv +88 -0
  1473. data/dev/defs/zlarnv +63 -0
  1474. data/dev/defs/zlarrv +259 -0
  1475. data/dev/defs/zlarscl2 +61 -0
  1476. data/dev/defs/zlartg +66 -0
  1477. data/dev/defs/zlartv +82 -0
  1478. data/dev/defs/zlarz +111 -0
  1479. data/dev/defs/zlarzb +150 -0
  1480. data/dev/defs/zlarzt +151 -0
  1481. data/dev/defs/zlascl +102 -0
  1482. data/dev/defs/zlascl2 +61 -0
  1483. data/dev/defs/zlaset +77 -0
  1484. data/dev/defs/zlasr +169 -0
  1485. data/dev/defs/zlassq +71 -0
  1486. data/dev/defs/zlaswp +81 -0
  1487. data/dev/defs/zlasyf +127 -0
  1488. data/dev/defs/zlat2c +85 -0
  1489. data/dev/defs/zlatbs +206 -0
  1490. data/dev/defs/zlatdf +133 -0
  1491. data/dev/defs/zlatps +193 -0
  1492. data/dev/defs/zlatrd +168 -0
  1493. data/dev/defs/zlatrs +202 -0
  1494. data/dev/defs/zlatrz +106 -0
  1495. data/dev/defs/zlatzm +124 -0
  1496. data/dev/defs/zlauu2 +68 -0
  1497. data/dev/defs/zlauum +68 -0
  1498. data/dev/defs/zpbcon +99 -0
  1499. data/dev/defs/zpbequ +96 -0
  1500. data/dev/defs/zpbrfs +166 -0
  1501. data/dev/defs/zpbstf +116 -0
  1502. data/dev/defs/zpbsv +136 -0
  1503. data/dev/defs/zpbsvx +314 -0
  1504. data/dev/defs/zpbtf2 +105 -0
  1505. data/dev/defs/zpbtrf +103 -0
  1506. data/dev/defs/zpbtrs +98 -0
  1507. data/dev/defs/zpftrf +182 -0
  1508. data/dev/defs/zpftri +175 -0
  1509. data/dev/defs/zpftrs +185 -0
  1510. data/dev/defs/zpocon +87 -0
  1511. data/dev/defs/zpoequ +80 -0
  1512. data/dev/defs/zpoequb +80 -0
  1513. data/dev/defs/zporfs +160 -0
  1514. data/dev/defs/zporfsx +370 -0
  1515. data/dev/defs/zposv +105 -0
  1516. data/dev/defs/zposvx +281 -0
  1517. data/dev/defs/zposvxx +468 -0
  1518. data/dev/defs/zpotf2 +75 -0
  1519. data/dev/defs/zpotrf +73 -0
  1520. data/dev/defs/zpotri +67 -0
  1521. data/dev/defs/zpotrs +79 -0
  1522. data/dev/defs/zppcon +85 -0
  1523. data/dev/defs/zppequ +82 -0
  1524. data/dev/defs/zpprfs +146 -0
  1525. data/dev/defs/zppsv +115 -0
  1526. data/dev/defs/zppsvx +283 -0
  1527. data/dev/defs/zpptrf +81 -0
  1528. data/dev/defs/zpptri +58 -0
  1529. data/dev/defs/zpptrs +84 -0
  1530. data/dev/defs/zpstf2 +108 -0
  1531. data/dev/defs/zpstrf +108 -0
  1532. data/dev/defs/zptcon +84 -0
  1533. data/dev/defs/zpteqr +116 -0
  1534. data/dev/defs/zptrfs +161 -0
  1535. data/dev/defs/zptsv +89 -0
  1536. data/dev/defs/zptsvx +210 -0
  1537. data/dev/defs/zpttrf +59 -0
  1538. data/dev/defs/zpttrs +98 -0
  1539. data/dev/defs/zptts2 +89 -0
  1540. data/dev/defs/zrot +72 -0
  1541. data/dev/defs/zspcon +85 -0
  1542. data/dev/defs/zspmv +119 -0
  1543. data/dev/defs/zspr +98 -0
  1544. data/dev/defs/zsprfs +156 -0
  1545. data/dev/defs/zspsv +134 -0
  1546. data/dev/defs/zspsvx +248 -0
  1547. data/dev/defs/zsptrf +121 -0
  1548. data/dev/defs/zsptri +77 -0
  1549. data/dev/defs/zsptrs +84 -0
  1550. data/dev/defs/zstedc +192 -0
  1551. data/dev/defs/zstegr +233 -0
  1552. data/dev/defs/zstein +159 -0
  1553. data/dev/defs/zstemr +302 -0
  1554. data/dev/defs/zsteqr +103 -0
  1555. data/dev/defs/zsycon +91 -0
  1556. data/dev/defs/zsyconv +90 -0
  1557. data/dev/defs/zsyequb +104 -0
  1558. data/dev/defs/zsymv +126 -0
  1559. data/dev/defs/zsyr +102 -0
  1560. data/dev/defs/zsyrfs +170 -0
  1561. data/dev/defs/zsyrfsx +380 -0
  1562. data/dev/defs/zsysv +149 -0
  1563. data/dev/defs/zsysvx +261 -0
  1564. data/dev/defs/zsysvxx +482 -0
  1565. data/dev/defs/zsyswapr +70 -0
  1566. data/dev/defs/zsytf2 +140 -0
  1567. data/dev/defs/zsytrf +156 -0
  1568. data/dev/defs/zsytri +83 -0
  1569. data/dev/defs/zsytri2 +111 -0
  1570. data/dev/defs/zsytri2x +90 -0
  1571. data/dev/defs/zsytrs +90 -0
  1572. data/dev/defs/zsytrs2 +97 -0
  1573. data/dev/defs/ztbcon +109 -0
  1574. data/dev/defs/ztbrfs +164 -0
  1575. data/dev/defs/ztbtrs +113 -0
  1576. data/dev/defs/ztfsm +259 -0
  1577. data/dev/defs/ztftri +183 -0
  1578. data/dev/defs/ztfttp +172 -0
  1579. data/dev/defs/ztfttr +182 -0
  1580. data/dev/defs/ztgevc +194 -0
  1581. data/dev/defs/ztgex2 +158 -0
  1582. data/dev/defs/ztgexc +176 -0
  1583. data/dev/defs/ztgsen +406 -0
  1584. data/dev/defs/ztgsja +344 -0
  1585. data/dev/defs/ztgsna +282 -0
  1586. data/dev/defs/ztgsy2 +235 -0
  1587. data/dev/defs/ztgsyl +273 -0
  1588. data/dev/defs/ztpcon +95 -0
  1589. data/dev/defs/ztprfs +150 -0
  1590. data/dev/defs/ztptri +79 -0
  1591. data/dev/defs/ztptrs +98 -0
  1592. data/dev/defs/ztpttf +172 -0
  1593. data/dev/defs/ztpttr +73 -0
  1594. data/dev/defs/ztrcon +103 -0
  1595. data/dev/defs/ztrevc +188 -0
  1596. data/dev/defs/ztrexc +99 -0
  1597. data/dev/defs/ztrrfs +158 -0
  1598. data/dev/defs/ztrsen +234 -0
  1599. data/dev/defs/ztrsna +223 -0
  1600. data/dev/defs/ztrsyl +126 -0
  1601. data/dev/defs/ztrti2 +76 -0
  1602. data/dev/defs/ztrtri +75 -0
  1603. data/dev/defs/ztrtrs +107 -0
  1604. data/dev/defs/ztrttf +181 -0
  1605. data/dev/defs/ztrttp +72 -0
  1606. data/dev/defs/ztzrqf +104 -0
  1607. data/dev/defs/ztzrzf +128 -0
  1608. data/dev/defs/zunbdb +270 -0
  1609. data/dev/defs/zuncsd +283 -0
  1610. data/dev/defs/zung2l +85 -0
  1611. data/dev/defs/zung2r +85 -0
  1612. data/dev/defs/zungbr +129 -0
  1613. data/dev/defs/zunghr +97 -0
  1614. data/dev/defs/zungl2 +84 -0
  1615. data/dev/defs/zunglq +100 -0
  1616. data/dev/defs/zungql +101 -0
  1617. data/dev/defs/zungqr +101 -0
  1618. data/dev/defs/zungr2 +85 -0
  1619. data/dev/defs/zungrq +101 -0
  1620. data/dev/defs/zungtr +95 -0
  1621. data/dev/defs/zunm2l +130 -0
  1622. data/dev/defs/zunm2r +130 -0
  1623. data/dev/defs/zunmbr +177 -0
  1624. data/dev/defs/zunmhr +157 -0
  1625. data/dev/defs/zunml2 +130 -0
  1626. data/dev/defs/zunmlq +143 -0
  1627. data/dev/defs/zunmql +143 -0
  1628. data/dev/defs/zunmqr +143 -0
  1629. data/dev/defs/zunmr2 +130 -0
  1630. data/dev/defs/zunmr3 +152 -0
  1631. data/dev/defs/zunmrq +143 -0
  1632. data/dev/defs/zunmrz +157 -0
  1633. data/dev/defs/zunmtr +152 -0
  1634. data/dev/defs/zupgtr +87 -0
  1635. data/dev/defs/zupmtr +120 -0
  1636. data/dev/make_csrc.rb +857 -0
  1637. data/dev/mkdoc.rb +265 -0
  1638. data/dev/parse.rb +1972 -0
  1639. data/doc/bd.html +16 -0
  1640. data/doc/c.html +36 -0
  1641. data/doc/cbd.html +161 -0
  1642. data/doc/cgb.html +1865 -0
  1643. data/doc/cge.html +5261 -0
  1644. data/doc/cgg.html +2027 -0
  1645. data/doc/cgt.html +711 -0
  1646. data/doc/chb.html +1031 -0
  1647. data/doc/che.html +3165 -0
  1648. data/doc/chg.html +201 -0
  1649. data/doc/chp.html +1696 -0
  1650. data/doc/chs.html +386 -0
  1651. data/doc/cpb.html +994 -0
  1652. data/doc/cpo.html +1520 -0
  1653. data/doc/cpp.html +770 -0
  1654. data/doc/cpt.html +706 -0
  1655. data/doc/csp.html +905 -0
  1656. data/doc/cst.html +742 -0
  1657. data/doc/csy.html +2194 -0
  1658. data/doc/ctb.html +284 -0
  1659. data/doc/ctg.html +1544 -0
  1660. data/doc/ctp.html +553 -0
  1661. data/doc/ctr.html +1281 -0
  1662. data/doc/ctz.html +211 -0
  1663. data/doc/cun.html +2553 -0
  1664. data/doc/cup.html +166 -0
  1665. data/doc/d.html +35 -0
  1666. data/doc/dbd.html +304 -0
  1667. data/doc/ddi.html +87 -0
  1668. data/doc/dgb.html +1857 -0
  1669. data/doc/dge.html +7267 -0
  1670. data/doc/dgg.html +2102 -0
  1671. data/doc/dgt.html +713 -0
  1672. data/doc/dhg.html +225 -0
  1673. data/doc/dhs.html +414 -0
  1674. data/doc/di.html +14 -0
  1675. data/doc/dop.html +166 -0
  1676. data/doc/dor.html +2540 -0
  1677. data/doc/dpb.html +992 -0
  1678. data/doc/dpo.html +1517 -0
  1679. data/doc/dpp.html +770 -0
  1680. data/doc/dpt.html +675 -0
  1681. data/doc/dsb.html +995 -0
  1682. data/doc/dsp.html +1777 -0
  1683. data/doc/dst.html +1422 -0
  1684. data/doc/dsy.html +3433 -0
  1685. data/doc/dtb.html +284 -0
  1686. data/doc/dtg.html +1730 -0
  1687. data/doc/dtp.html +532 -0
  1688. data/doc/dtr.html +1346 -0
  1689. data/doc/dtz.html +211 -0
  1690. data/doc/gb.html +16 -0
  1691. data/doc/ge.html +16 -0
  1692. data/doc/gg.html +16 -0
  1693. data/doc/gt.html +16 -0
  1694. data/doc/hb.html +14 -0
  1695. data/doc/he.html +14 -0
  1696. data/doc/hg.html +16 -0
  1697. data/doc/hp.html +14 -0
  1698. data/doc/hs.html +16 -0
  1699. data/doc/index.html +53 -0
  1700. data/doc/op.html +14 -0
  1701. data/doc/or.html +14 -0
  1702. data/doc/others.html +1142 -0
  1703. data/doc/pb.html +16 -0
  1704. data/doc/po.html +16 -0
  1705. data/doc/pp.html +16 -0
  1706. data/doc/pt.html +16 -0
  1707. data/doc/s.html +35 -0
  1708. data/doc/sb.html +14 -0
  1709. data/doc/sbd.html +303 -0
  1710. data/doc/sdi.html +87 -0
  1711. data/doc/sgb.html +1863 -0
  1712. data/doc/sge.html +7263 -0
  1713. data/doc/sgg.html +2102 -0
  1714. data/doc/sgt.html +713 -0
  1715. data/doc/shg.html +225 -0
  1716. data/doc/shs.html +414 -0
  1717. data/doc/sop.html +166 -0
  1718. data/doc/sor.html +2540 -0
  1719. data/doc/sp.html +16 -0
  1720. data/doc/spb.html +992 -0
  1721. data/doc/spo.html +1520 -0
  1722. data/doc/spp.html +770 -0
  1723. data/doc/spt.html +675 -0
  1724. data/doc/ssb.html +995 -0
  1725. data/doc/ssp.html +1647 -0
  1726. data/doc/sst.html +1423 -0
  1727. data/doc/ssy.html +3438 -0
  1728. data/doc/st.html +16 -0
  1729. data/doc/stb.html +284 -0
  1730. data/doc/stg.html +1729 -0
  1731. data/doc/stp.html +532 -0
  1732. data/doc/str.html +1346 -0
  1733. data/doc/stz.html +211 -0
  1734. data/doc/sy.html +16 -0
  1735. data/doc/tb.html +16 -0
  1736. data/doc/tg.html +16 -0
  1737. data/doc/tp.html +16 -0
  1738. data/doc/tr.html +16 -0
  1739. data/doc/tz.html +16 -0
  1740. data/doc/un.html +14 -0
  1741. data/doc/up.html +14 -0
  1742. data/doc/z.html +36 -0
  1743. data/doc/zbd.html +161 -0
  1744. data/doc/zgb.html +1862 -0
  1745. data/doc/zge.html +5258 -0
  1746. data/doc/zgg.html +2027 -0
  1747. data/doc/zgt.html +711 -0
  1748. data/doc/zhb.html +1031 -0
  1749. data/doc/zhe.html +3162 -0
  1750. data/doc/zhg.html +201 -0
  1751. data/doc/zhp.html +1697 -0
  1752. data/doc/zhs.html +386 -0
  1753. data/doc/zpb.html +994 -0
  1754. data/doc/zpo.html +1517 -0
  1755. data/doc/zpp.html +770 -0
  1756. data/doc/zpt.html +706 -0
  1757. data/doc/zsp.html +905 -0
  1758. data/doc/zst.html +743 -0
  1759. data/doc/zsy.html +2191 -0
  1760. data/doc/ztb.html +284 -0
  1761. data/doc/ztg.html +1544 -0
  1762. data/doc/ztp.html +553 -0
  1763. data/doc/ztr.html +1281 -0
  1764. data/doc/ztz.html +211 -0
  1765. data/doc/zun.html +2553 -0
  1766. data/doc/zup.html +166 -0
  1767. data/ext/cbbcsd.c +279 -0
  1768. data/ext/cbdsqr.c +178 -0
  1769. data/ext/cgbbrd.c +153 -0
  1770. data/ext/cgbcon.c +94 -0
  1771. data/ext/cgbequ.c +94 -0
  1772. data/ext/cgbequb.c +92 -0
  1773. data/ext/cgbrfs.c +157 -0
  1774. data/ext/cgbrfsx.c +245 -0
  1775. data/ext/cgbsv.c +111 -0
  1776. data/ext/cgbsvx.c +282 -0
  1777. data/ext/cgbsvxx.c +285 -0
  1778. data/ext/cgbtf2.c +89 -0
  1779. data/ext/cgbtrf.c +89 -0
  1780. data/ext/cgbtrs.c +107 -0
  1781. data/ext/cgebak.c +97 -0
  1782. data/ext/cgebal.c +87 -0
  1783. data/ext/cgebd2.c +108 -0
  1784. data/ext/cgebrd.c +123 -0
  1785. data/ext/cgecon.c +74 -0
  1786. data/ext/cgeequ.c +84 -0
  1787. data/ext/cgeequb.c +84 -0
  1788. data/ext/cgees.c +138 -0
  1789. data/ext/cgeesx.c +148 -0
  1790. data/ext/cgeev.c +128 -0
  1791. data/ext/cgeevx.c +169 -0
  1792. data/ext/cgegs.c +162 -0
  1793. data/ext/cgegv.c +167 -0
  1794. data/ext/cgehd2.c +88 -0
  1795. data/ext/cgehrd.c +103 -0
  1796. data/ext/cgelq2.c +82 -0
  1797. data/ext/cgelqf.c +99 -0
  1798. data/ext/cgels.c +133 -0
  1799. data/ext/cgelsd.c +150 -0
  1800. data/ext/cgelss.c +147 -0
  1801. data/ext/cgelsx.c +135 -0
  1802. data/ext/cgelsy.c +162 -0
  1803. data/ext/cgeql2.c +84 -0
  1804. data/ext/cgeqlf.c +99 -0
  1805. data/ext/cgeqp3.c +125 -0
  1806. data/ext/cgeqpf.c +110 -0
  1807. data/ext/cgeqr2.c +84 -0
  1808. data/ext/cgeqr2p.c +84 -0
  1809. data/ext/cgeqrf.c +99 -0
  1810. data/ext/cgeqrfp.c +99 -0
  1811. data/ext/cgerfs.c +149 -0
  1812. data/ext/cgerfsx.c +215 -0
  1813. data/ext/cgerq2.c +82 -0
  1814. data/ext/cgerqf.c +99 -0
  1815. data/ext/cgesc2.c +104 -0
  1816. data/ext/cgesdd.c +131 -0
  1817. data/ext/cgesv.c +103 -0
  1818. data/ext/cgesvd.c +142 -0
  1819. data/ext/cgesvx.c +274 -0
  1820. data/ext/cgesvxx.c +277 -0
  1821. data/ext/cgetc2.c +85 -0
  1822. data/ext/cgetf2.c +81 -0
  1823. data/ext/cgetrf.c +81 -0
  1824. data/ext/cgetri.c +99 -0
  1825. data/ext/cgetrs.c +99 -0
  1826. data/ext/cggbak.c +109 -0
  1827. data/ext/cggbal.c +124 -0
  1828. data/ext/cgges.c +188 -0
  1829. data/ext/cggesx.c +226 -0
  1830. data/ext/cggev.c +167 -0
  1831. data/ext/cggevx.c +222 -0
  1832. data/ext/cggglm.c +152 -0
  1833. data/ext/cgghrd.c +163 -0
  1834. data/ext/cgglse.c +167 -0
  1835. data/ext/cggqrf.c +133 -0
  1836. data/ext/cggrqf.c +137 -0
  1837. data/ext/cggsvd.c +180 -0
  1838. data/ext/cggsvp.c +170 -0
  1839. data/ext/cgtcon.c +117 -0
  1840. data/ext/cgtrfs.c +205 -0
  1841. data/ext/cgtsv.c +138 -0
  1842. data/ext/cgtsvx.c +252 -0
  1843. data/ext/cgttrf.c +128 -0
  1844. data/ext/cgttrs.c +133 -0
  1845. data/ext/cgtts2.c +130 -0
  1846. data/ext/chbev.c +106 -0
  1847. data/ext/chbevd.c +154 -0
  1848. data/ext/chbevx.c +156 -0
  1849. data/ext/chbgst.c +116 -0
  1850. data/ext/chbgv.c +136 -0
  1851. data/ext/chbgvd.c +184 -0
  1852. data/ext/chbgvx.c +185 -0
  1853. data/ext/chbtrd.c +126 -0
  1854. data/ext/checon.c +83 -0
  1855. data/ext/cheequb.c +78 -0
  1856. data/ext/cheev.c +106 -0
  1857. data/ext/cheevd.c +139 -0
  1858. data/ext/cheevr.c +186 -0
  1859. data/ext/cheevx.c +156 -0
  1860. data/ext/chegs2.c +91 -0
  1861. data/ext/chegst.c +91 -0
  1862. data/ext/chegv.c +136 -0
  1863. data/ext/chegvd.c +169 -0
  1864. data/ext/chegvx.c +186 -0
  1865. data/ext/cherfs.c +149 -0
  1866. data/ext/cherfsx.c +214 -0
  1867. data/ext/chesv.c +119 -0
  1868. data/ext/chesvx.c +179 -0
  1869. data/ext/chesvxx.c +254 -0
  1870. data/ext/chetd2.c +97 -0
  1871. data/ext/chetf2.c +81 -0
  1872. data/ext/chetrd.c +109 -0
  1873. data/ext/chetrf.c +93 -0
  1874. data/ext/chetri.c +88 -0
  1875. data/ext/chetrs.c +99 -0
  1876. data/ext/chetrs2.c +102 -0
  1877. data/ext/chfrk.c +105 -0
  1878. data/ext/chgeqz.c +204 -0
  1879. data/ext/chla_transtype.c +47 -0
  1880. data/ext/chpcon.c +81 -0
  1881. data/ext/chpev.c +101 -0
  1882. data/ext/chpevd.c +149 -0
  1883. data/ext/chpevx.c +140 -0
  1884. data/ext/chpgst.c +90 -0
  1885. data/ext/chpgv.c +128 -0
  1886. data/ext/chpgvd.c +166 -0
  1887. data/ext/chpgvx.c +166 -0
  1888. data/ext/chprfs.c +145 -0
  1889. data/ext/chpsv.c +106 -0
  1890. data/ext/chpsvx.c +159 -0
  1891. data/ext/chptrd.c +96 -0
  1892. data/ext/chptrf.c +80 -0
  1893. data/ext/chptri.c +85 -0
  1894. data/ext/chptrs.c +97 -0
  1895. data/ext/chsein.c +181 -0
  1896. data/ext/chseqr.c +141 -0
  1897. data/ext/cla_gbamv.c +123 -0
  1898. data/ext/cla_gbrcond_c.c +138 -0
  1899. data/ext/cla_gbrcond_x.c +134 -0
  1900. data/ext/cla_gbrfsx_extended.c +291 -0
  1901. data/ext/cla_gbrpvgrw.c +83 -0
  1902. data/ext/cla_geamv.c +113 -0
  1903. data/ext/cla_gercond_c.c +130 -0
  1904. data/ext/cla_gercond_x.c +126 -0
  1905. data/ext/cla_gerfsx_extended.c +277 -0
  1906. data/ext/cla_heamv.c +112 -0
  1907. data/ext/cla_hercond_c.c +130 -0
  1908. data/ext/cla_hercond_x.c +126 -0
  1909. data/ext/cla_herfsx_extended.c +279 -0
  1910. data/ext/cla_herpvgrw.c +103 -0
  1911. data/ext/cla_lin_berr.c +80 -0
  1912. data/ext/cla_porcond_c.c +118 -0
  1913. data/ext/cla_porcond_x.c +114 -0
  1914. data/ext/cla_porfsx_extended.c +267 -0
  1915. data/ext/cla_porpvgrw.c +91 -0
  1916. data/ext/cla_rpvgrw.c +75 -0
  1917. data/ext/cla_syamv.c +111 -0
  1918. data/ext/cla_syrcond_c.c +130 -0
  1919. data/ext/cla_syrcond_x.c +126 -0
  1920. data/ext/cla_syrfsx_extended.c +279 -0
  1921. data/ext/cla_syrpvgrw.c +103 -0
  1922. data/ext/cla_wwaddw.c +98 -0
  1923. data/ext/clabrd.c +128 -0
  1924. data/ext/clacgv.c +71 -0
  1925. data/ext/clacn2.c +99 -0
  1926. data/ext/clacon.c +76 -0
  1927. data/ext/clacp2.c +73 -0
  1928. data/ext/clacpy.c +73 -0
  1929. data/ext/clacrm.c +86 -0
  1930. data/ext/clacrt.c +104 -0
  1931. data/ext/cladiv.c +53 -0
  1932. data/ext/claed0.c +130 -0
  1933. data/ext/claed7.c +243 -0
  1934. data/ext/claed8.c +194 -0
  1935. data/ext/claein.c +109 -0
  1936. data/ext/claesy.c +70 -0
  1937. data/ext/claev2.c +67 -0
  1938. data/ext/clag2z.c +72 -0
  1939. data/ext/clags2.c +88 -0
  1940. data/ext/clagtm.c +128 -0
  1941. data/ext/clahef.c +93 -0
  1942. data/ext/clahqr.c +131 -0
  1943. data/ext/clahr2.c +108 -0
  1944. data/ext/clahrd.c +108 -0
  1945. data/ext/claic1.c +86 -0
  1946. data/ext/clals0.c +197 -0
  1947. data/ext/clalsa.c +266 -0
  1948. data/ext/clalsd.c +141 -0
  1949. data/ext/clangb.c +72 -0
  1950. data/ext/clange.c +70 -0
  1951. data/ext/clangt.c +83 -0
  1952. data/ext/clanhb.c +74 -0
  1953. data/ext/clanhe.c +68 -0
  1954. data/ext/clanhf.c +76 -0
  1955. data/ext/clanhp.c +70 -0
  1956. data/ext/clanhs.c +66 -0
  1957. data/ext/clanht.c +71 -0
  1958. data/ext/clansb.c +74 -0
  1959. data/ext/clansp.c +70 -0
  1960. data/ext/clansy.c +68 -0
  1961. data/ext/clantb.c +76 -0
  1962. data/ext/clantp.c +76 -0
  1963. data/ext/clantr.c +78 -0
  1964. data/ext/clapll.c +101 -0
  1965. data/ext/clapmr.c +93 -0
  1966. data/ext/clapmt.c +97 -0
  1967. data/ext/claqgb.c +113 -0
  1968. data/ext/claqge.c +105 -0
  1969. data/ext/claqhb.c +93 -0
  1970. data/ext/claqhe.c +93 -0
  1971. data/ext/claqhp.c +90 -0
  1972. data/ext/claqp2.c +154 -0
  1973. data/ext/claqps.c +204 -0
  1974. data/ext/claqr0.c +141 -0
  1975. data/ext/claqr1.c +72 -0
  1976. data/ext/claqr2.c +170 -0
  1977. data/ext/claqr3.c +170 -0
  1978. data/ext/claqr4.c +141 -0
  1979. data/ext/claqr5.c +175 -0
  1980. data/ext/claqsb.c +97 -0
  1981. data/ext/claqsp.c +90 -0
  1982. data/ext/claqsy.c +93 -0
  1983. data/ext/clar1v.c +169 -0
  1984. data/ext/clar2v.c +145 -0
  1985. data/ext/clarcm.c +82 -0
  1986. data/ext/clarf.c +98 -0
  1987. data/ext/clarfb.c +119 -0
  1988. data/ext/clarfg.c +80 -0
  1989. data/ext/clarfgp.c +80 -0
  1990. data/ext/clarft.c +101 -0
  1991. data/ext/clarfx.c +90 -0
  1992. data/ext/clargv.c +110 -0
  1993. data/ext/clarnv.c +79 -0
  1994. data/ext/clarrv.c +267 -0
  1995. data/ext/clarscl2.c +78 -0
  1996. data/ext/clartg.c +59 -0
  1997. data/ext/clartv.c +126 -0
  1998. data/ext/clarz.c +102 -0
  1999. data/ext/clarzb.c +123 -0
  2000. data/ext/clarzt.c +101 -0
  2001. data/ext/clascl.c +93 -0
  2002. data/ext/clascl2.c +78 -0
  2003. data/ext/claset.c +84 -0
  2004. data/ext/clasr.c +106 -0
  2005. data/ext/classq.c +66 -0
  2006. data/ext/claswp.c +90 -0
  2007. data/ext/clasyf.c +93 -0
  2008. data/ext/clatbs.c +126 -0
  2009. data/ext/clatdf.c +115 -0
  2010. data/ext/clatps.c +120 -0
  2011. data/ext/clatrd.c +101 -0
  2012. data/ext/clatrs.c +122 -0
  2013. data/ext/clatrz.c +83 -0
  2014. data/ext/clatzm.c +128 -0
  2015. data/ext/clauu2.c +73 -0
  2016. data/ext/clauum.c +73 -0
  2017. data/ext/cpbcon.c +78 -0
  2018. data/ext/cpbequ.c +79 -0
  2019. data/ext/cpbrfs.c +141 -0
  2020. data/ext/cpbstf.c +77 -0
  2021. data/ext/cpbsv.c +103 -0
  2022. data/ext/cpbsvx.c +197 -0
  2023. data/ext/cpbtf2.c +77 -0
  2024. data/ext/cpbtrf.c +77 -0
  2025. data/ext/cpbtrs.c +91 -0
  2026. data/ext/cpftrf.c +78 -0
  2027. data/ext/cpftri.c +78 -0
  2028. data/ext/cpftrs.c +93 -0
  2029. data/ext/cpocon.c +74 -0
  2030. data/ext/cpoequ.c +71 -0
  2031. data/ext/cpoequb.c +71 -0
  2032. data/ext/cporfs.c +137 -0
  2033. data/ext/cporfsx.c +202 -0
  2034. data/ext/cposv.c +99 -0
  2035. data/ext/cposvx.c +193 -0
  2036. data/ext/cposvxx.c +231 -0
  2037. data/ext/cpotf2.c +73 -0
  2038. data/ext/cpotrf.c +73 -0
  2039. data/ext/cpotri.c +73 -0
  2040. data/ext/cpotrs.c +87 -0
  2041. data/ext/cppcon.c +74 -0
  2042. data/ext/cppequ.c +75 -0
  2043. data/ext/cpprfs.c +135 -0
  2044. data/ext/cppsv.c +100 -0
  2045. data/ext/cppsvx.c +187 -0
  2046. data/ext/cpptrf.c +74 -0
  2047. data/ext/cpptri.c +74 -0
  2048. data/ext/cpptrs.c +89 -0
  2049. data/ext/cpstf2.c +91 -0
  2050. data/ext/cpstrf.c +91 -0
  2051. data/ext/cptcon.c +77 -0
  2052. data/ext/cpteqr.c +122 -0
  2053. data/ext/cptrfs.c +157 -0
  2054. data/ext/cptsv.c +115 -0
  2055. data/ext/cptsvx.c +167 -0
  2056. data/ext/cpttrf.c +89 -0
  2057. data/ext/cpttrs.c +97 -0
  2058. data/ext/cptts2.c +94 -0
  2059. data/ext/crot.c +103 -0
  2060. data/ext/cspcon.c +81 -0
  2061. data/ext/cspmv.c +111 -0
  2062. data/ext/cspr.c +92 -0
  2063. data/ext/csprfs.c +145 -0
  2064. data/ext/cspsv.c +106 -0
  2065. data/ext/cspsvx.c +159 -0
  2066. data/ext/csptrf.c +80 -0
  2067. data/ext/csptri.c +85 -0
  2068. data/ext/csptrs.c +97 -0
  2069. data/ext/csrscl.c +75 -0
  2070. data/ext/cstedc.c +173 -0
  2071. data/ext/cstegr.c +184 -0
  2072. data/ext/cstein.c +130 -0
  2073. data/ext/cstemr.c +189 -0
  2074. data/ext/csteqr.c +122 -0
  2075. data/ext/csycon.c +83 -0
  2076. data/ext/csyconv.c +80 -0
  2077. data/ext/csyequb.c +78 -0
  2078. data/ext/csymv.c +111 -0
  2079. data/ext/csyr.c +91 -0
  2080. data/ext/csyrfs.c +149 -0
  2081. data/ext/csyrfsx.c +214 -0
  2082. data/ext/csysv.c +125 -0
  2083. data/ext/csysvx.c +179 -0
  2084. data/ext/csysvxx.c +254 -0
  2085. data/ext/csyswapr.c +78 -0
  2086. data/ext/csytf2.c +81 -0
  2087. data/ext/csytrf.c +93 -0
  2088. data/ext/csytri.c +88 -0
  2089. data/ext/csytri2.c +104 -0
  2090. data/ext/csytri2x.c +92 -0
  2091. data/ext/csytrs.c +99 -0
  2092. data/ext/csytrs2.c +102 -0
  2093. data/ext/ctbcon.c +82 -0
  2094. data/ext/ctbrfs.c +123 -0
  2095. data/ext/ctbtrs.c +99 -0
  2096. data/ext/ctfsm.c +107 -0
  2097. data/ext/ctftri.c +82 -0
  2098. data/ext/ctfttp.c +75 -0
  2099. data/ext/ctfttr.c +76 -0
  2100. data/ext/ctgevc.c +152 -0
  2101. data/ext/ctgex2.c +167 -0
  2102. data/ext/ctgexc.c +168 -0
  2103. data/ext/ctgsen.c +240 -0
  2104. data/ext/ctgsja.c +223 -0
  2105. data/ext/ctgsna.c +160 -0
  2106. data/ext/ctgsy2.c +172 -0
  2107. data/ext/ctgsyl.c +186 -0
  2108. data/ext/ctpcon.c +78 -0
  2109. data/ext/ctprfs.c +119 -0
  2110. data/ext/ctptri.c +78 -0
  2111. data/ext/ctptrs.c +97 -0
  2112. data/ext/ctpttf.c +75 -0
  2113. data/ext/ctpttr.c +72 -0
  2114. data/ext/ctrcon.c +78 -0
  2115. data/ext/ctrevc.c +150 -0
  2116. data/ext/ctrexc.c +107 -0
  2117. data/ext/ctrrfs.c +119 -0
  2118. data/ext/ctrsen.c +150 -0
  2119. data/ext/ctrsna.c +133 -0
  2120. data/ext/ctrsyl.c +112 -0
  2121. data/ext/ctrti2.c +77 -0
  2122. data/ext/ctrtri.c +77 -0
  2123. data/ext/ctrtrs.c +95 -0
  2124. data/ext/ctrttf.c +73 -0
  2125. data/ext/ctrttp.c +69 -0
  2126. data/ext/ctzrqf.c +79 -0
  2127. data/ext/ctzrzf.c +97 -0
  2128. data/ext/cunbdb.c +228 -0
  2129. data/ext/cuncsd.c +200 -0
  2130. data/ext/cung2l.c +88 -0
  2131. data/ext/cung2r.c +88 -0
  2132. data/ext/cungbr.c +111 -0
  2133. data/ext/cunghr.c +107 -0
  2134. data/ext/cungl2.c +86 -0
  2135. data/ext/cunglq.c +103 -0
  2136. data/ext/cungql.c +103 -0
  2137. data/ext/cungqr.c +103 -0
  2138. data/ext/cungr2.c +86 -0
  2139. data/ext/cungrq.c +103 -0
  2140. data/ext/cungtr.c +103 -0
  2141. data/ext/cunm2l.c +110 -0
  2142. data/ext/cunm2r.c +110 -0
  2143. data/ext/cunmbr.c +135 -0
  2144. data/ext/cunmhr.c +129 -0
  2145. data/ext/cunml2.c +106 -0
  2146. data/ext/cunmlq.c +121 -0
  2147. data/ext/cunmql.c +125 -0
  2148. data/ext/cunmqr.c +125 -0
  2149. data/ext/cunmr2.c +106 -0
  2150. data/ext/cunmr3.c +110 -0
  2151. data/ext/cunmrq.c +121 -0
  2152. data/ext/cunmrz.c +125 -0
  2153. data/ext/cunmtr.c +125 -0
  2154. data/ext/cupgtr.c +87 -0
  2155. data/ext/cupmtr.c +112 -0
  2156. data/ext/dbbcsd.c +283 -0
  2157. data/ext/dbdsdc.c +147 -0
  2158. data/ext/dbdsqr.c +178 -0
  2159. data/ext/ddisna.c +71 -0
  2160. data/ext/dgbbrd.c +150 -0
  2161. data/ext/dgbcon.c +94 -0
  2162. data/ext/dgbequ.c +94 -0
  2163. data/ext/dgbequb.c +92 -0
  2164. data/ext/dgbrfs.c +157 -0
  2165. data/ext/dgbrfsx.c +245 -0
  2166. data/ext/dgbsv.c +111 -0
  2167. data/ext/dgbsvx.c +282 -0
  2168. data/ext/dgbsvxx.c +285 -0
  2169. data/ext/dgbtf2.c +89 -0
  2170. data/ext/dgbtrf.c +89 -0
  2171. data/ext/dgbtrs.c +107 -0
  2172. data/ext/dgebak.c +97 -0
  2173. data/ext/dgebal.c +87 -0
  2174. data/ext/dgebd2.c +108 -0
  2175. data/ext/dgebrd.c +123 -0
  2176. data/ext/dgecon.c +74 -0
  2177. data/ext/dgeequ.c +84 -0
  2178. data/ext/dgeequb.c +84 -0
  2179. data/ext/dgees.c +144 -0
  2180. data/ext/dgeesx.c +166 -0
  2181. data/ext/dgeev.c +133 -0
  2182. data/ext/dgeevx.c +177 -0
  2183. data/ext/dgegs.c +167 -0
  2184. data/ext/dgegv.c +167 -0
  2185. data/ext/dgehd2.c +88 -0
  2186. data/ext/dgehrd.c +103 -0
  2187. data/ext/dgejsv.c +155 -0
  2188. data/ext/dgelq2.c +82 -0
  2189. data/ext/dgelqf.c +99 -0
  2190. data/ext/dgels.c +133 -0
  2191. data/ext/dgelsd.c +145 -0
  2192. data/ext/dgelss.c +144 -0
  2193. data/ext/dgelsx.c +132 -0
  2194. data/ext/dgelsy.c +159 -0
  2195. data/ext/dgeql2.c +84 -0
  2196. data/ext/dgeqlf.c +99 -0
  2197. data/ext/dgeqp3.c +122 -0
  2198. data/ext/dgeqpf.c +107 -0
  2199. data/ext/dgeqr2.c +84 -0
  2200. data/ext/dgeqr2p.c +84 -0
  2201. data/ext/dgeqrf.c +99 -0
  2202. data/ext/dgeqrfp.c +99 -0
  2203. data/ext/dgerfs.c +149 -0
  2204. data/ext/dgerfsx.c +215 -0
  2205. data/ext/dgerq2.c +82 -0
  2206. data/ext/dgerqf.c +99 -0
  2207. data/ext/dgesc2.c +104 -0
  2208. data/ext/dgesdd.c +128 -0
  2209. data/ext/dgesv.c +103 -0
  2210. data/ext/dgesvd.c +139 -0
  2211. data/ext/dgesvj.c +152 -0
  2212. data/ext/dgesvx.c +274 -0
  2213. data/ext/dgesvxx.c +277 -0
  2214. data/ext/dgetc2.c +85 -0
  2215. data/ext/dgetf2.c +81 -0
  2216. data/ext/dgetrf.c +81 -0
  2217. data/ext/dgetri.c +99 -0
  2218. data/ext/dgetrs.c +99 -0
  2219. data/ext/dggbak.c +109 -0
  2220. data/ext/dggbal.c +124 -0
  2221. data/ext/dgges.c +194 -0
  2222. data/ext/dggesx.c +227 -0
  2223. data/ext/dggev.c +167 -0
  2224. data/ext/dggevx.c +225 -0
  2225. data/ext/dggglm.c +152 -0
  2226. data/ext/dgghrd.c +163 -0
  2227. data/ext/dgglse.c +167 -0
  2228. data/ext/dggqrf.c +133 -0
  2229. data/ext/dggrqf.c +137 -0
  2230. data/ext/dggsvd.c +177 -0
  2231. data/ext/dggsvp.c +167 -0
  2232. data/ext/dgsvj0.c +178 -0
  2233. data/ext/dgsvj1.c +182 -0
  2234. data/ext/dgtcon.c +120 -0
  2235. data/ext/dgtrfs.c +205 -0
  2236. data/ext/dgtsv.c +138 -0
  2237. data/ext/dgtsvx.c +252 -0
  2238. data/ext/dgttrf.c +128 -0
  2239. data/ext/dgttrs.c +133 -0
  2240. data/ext/dgtts2.c +130 -0
  2241. data/ext/dhgeqz.c +209 -0
  2242. data/ext/dhsein.c +201 -0
  2243. data/ext/dhseqr.c +149 -0
  2244. data/ext/disnan.c +47 -0
  2245. data/ext/dla_gbamv.c +125 -0
  2246. data/ext/dla_gbrcond.c +138 -0
  2247. data/ext/dla_gbrfsx_extended.c +289 -0
  2248. data/ext/dla_gbrpvgrw.c +83 -0
  2249. data/ext/dla_geamv.c +115 -0
  2250. data/ext/dla_gercond.c +130 -0
  2251. data/ext/dla_gerfsx_extended.c +277 -0
  2252. data/ext/dla_lin_berr.c +80 -0
  2253. data/ext/dla_porcond.c +118 -0
  2254. data/ext/dla_porfsx_extended.c +267 -0
  2255. data/ext/dla_porpvgrw.c +91 -0
  2256. data/ext/dla_rpvgrw.c +75 -0
  2257. data/ext/dla_syamv.c +109 -0
  2258. data/ext/dla_syrcond.c +130 -0
  2259. data/ext/dla_syrfsx_extended.c +279 -0
  2260. data/ext/dla_syrpvgrw.c +103 -0
  2261. data/ext/dla_wwaddw.c +98 -0
  2262. data/ext/dlabad.c +50 -0
  2263. data/ext/dlabrd.c +128 -0
  2264. data/ext/dlacn2.c +102 -0
  2265. data/ext/dlacon.c +79 -0
  2266. data/ext/dlacpy.c +73 -0
  2267. data/ext/dladiv.c +62 -0
  2268. data/ext/dlae2.c +58 -0
  2269. data/ext/dlaebz.c +214 -0
  2270. data/ext/dlaed0.c +123 -0
  2271. data/ext/dlaed1.c +129 -0
  2272. data/ext/dlaed2.c +185 -0
  2273. data/ext/dlaed3.c +157 -0
  2274. data/ext/dlaed4.c +86 -0
  2275. data/ext/dlaed5.c +83 -0
  2276. data/ext/dlaed6.c +86 -0
  2277. data/ext/dlaed7.c +244 -0
  2278. data/ext/dlaed8.c +202 -0
  2279. data/ext/dlaed9.c +107 -0
  2280. data/ext/dlaeda.c +156 -0
  2281. data/ext/dlaein.c +139 -0
  2282. data/ext/dlaev2.c +64 -0
  2283. data/ext/dlaexc.c +114 -0
  2284. data/ext/dlag2.c +87 -0
  2285. data/ext/dlag2s.c +72 -0
  2286. data/ext/dlags2.c +86 -0
  2287. data/ext/dlagtf.c +136 -0
  2288. data/ext/dlagtm.c +128 -0
  2289. data/ext/dlagts.c +135 -0
  2290. data/ext/dlagv2.c +128 -0
  2291. data/ext/dlahqr.c +139 -0
  2292. data/ext/dlahr2.c +108 -0
  2293. data/ext/dlahrd.c +108 -0
  2294. data/ext/dlaic1.c +85 -0
  2295. data/ext/dlaln2.c +116 -0
  2296. data/ext/dlals0.c +197 -0
  2297. data/ext/dlalsa.c +266 -0
  2298. data/ext/dlalsd.c +138 -0
  2299. data/ext/dlamrg.c +76 -0
  2300. data/ext/dlaneg.c +79 -0
  2301. data/ext/dlangb.c +74 -0
  2302. data/ext/dlange.c +70 -0
  2303. data/ext/dlangt.c +83 -0
  2304. data/ext/dlanhs.c +66 -0
  2305. data/ext/dlansb.c +74 -0
  2306. data/ext/dlansf.c +76 -0
  2307. data/ext/dlansp.c +72 -0
  2308. data/ext/dlanst.c +71 -0
  2309. data/ext/dlansy.c +70 -0
  2310. data/ext/dlantb.c +78 -0
  2311. data/ext/dlantp.c +76 -0
  2312. data/ext/dlantr.c +78 -0
  2313. data/ext/dlanv2.c +78 -0
  2314. data/ext/dlapll.c +101 -0
  2315. data/ext/dlapmr.c +93 -0
  2316. data/ext/dlapmt.c +97 -0
  2317. data/ext/dlapy2.c +51 -0
  2318. data/ext/dlapy3.c +55 -0
  2319. data/ext/dlaqgb.c +113 -0
  2320. data/ext/dlaqge.c +105 -0
  2321. data/ext/dlaqp2.c +154 -0
  2322. data/ext/dlaqps.c +204 -0
  2323. data/ext/dlaqr0.c +149 -0
  2324. data/ext/dlaqr1.c +78 -0
  2325. data/ext/dlaqr2.c +178 -0
  2326. data/ext/dlaqr3.c +178 -0
  2327. data/ext/dlaqr4.c +149 -0
  2328. data/ext/dlaqr5.c +196 -0
  2329. data/ext/dlaqsb.c +97 -0
  2330. data/ext/dlaqsp.c +90 -0
  2331. data/ext/dlaqsy.c +93 -0
  2332. data/ext/dlaqtr.c +110 -0
  2333. data/ext/dlar1v.c +169 -0
  2334. data/ext/dlar2v.c +145 -0
  2335. data/ext/dlarf.c +97 -0
  2336. data/ext/dlarfb.c +119 -0
  2337. data/ext/dlarfg.c +79 -0
  2338. data/ext/dlarfgp.c +79 -0
  2339. data/ext/dlarft.c +101 -0
  2340. data/ext/dlarfx.c +89 -0
  2341. data/ext/dlargv.c +110 -0
  2342. data/ext/dlarnv.c +79 -0
  2343. data/ext/dlarra.c +120 -0
  2344. data/ext/dlarrb.c +174 -0
  2345. data/ext/dlarrc.c +92 -0
  2346. data/ext/dlarrd.c +186 -0
  2347. data/ext/dlarre.c +217 -0
  2348. data/ext/dlarrf.c +172 -0
  2349. data/ext/dlarrj.c +143 -0
  2350. data/ext/dlarrk.c +93 -0
  2351. data/ext/dlarrr.c +78 -0
  2352. data/ext/dlarrv.c +267 -0
  2353. data/ext/dlarscl2.c +78 -0
  2354. data/ext/dlartg.c +57 -0
  2355. data/ext/dlartgp.c +57 -0
  2356. data/ext/dlartgs.c +58 -0
  2357. data/ext/dlartv.c +126 -0
  2358. data/ext/dlaruv.c +75 -0
  2359. data/ext/dlarz.c +101 -0
  2360. data/ext/dlarzb.c +123 -0
  2361. data/ext/dlarzt.c +101 -0
  2362. data/ext/dlas2.c +58 -0
  2363. data/ext/dlascl.c +93 -0
  2364. data/ext/dlascl2.c +78 -0
  2365. data/ext/dlasd0.c +116 -0
  2366. data/ext/dlasd1.c +158 -0
  2367. data/ext/dlasd2.c +224 -0
  2368. data/ext/dlasd3.c +198 -0
  2369. data/ext/dlasd4.c +89 -0
  2370. data/ext/dlasd5.c +86 -0
  2371. data/ext/dlasd6.c +232 -0
  2372. data/ext/dlasd7.c +221 -0
  2373. data/ext/dlasd8.c +169 -0
  2374. data/ext/dlasda.c +217 -0
  2375. data/ext/dlasdq.c +182 -0
  2376. data/ext/dlasdt.c +78 -0
  2377. data/ext/dlaset.c +82 -0
  2378. data/ext/dlasq1.c +92 -0
  2379. data/ext/dlasq2.c +70 -0
  2380. data/ext/dlasq3.c +134 -0
  2381. data/ext/dlasq4.c +103 -0
  2382. data/ext/dlasq5.c +90 -0
  2383. data/ext/dlasq6.c +82 -0
  2384. data/ext/dlasr.c +106 -0
  2385. data/ext/dlasrt.c +70 -0
  2386. data/ext/dlassq.c +66 -0
  2387. data/ext/dlasv2.c +70 -0
  2388. data/ext/dlaswp.c +90 -0
  2389. data/ext/dlasy2.c +122 -0
  2390. data/ext/dlasyf.c +93 -0
  2391. data/ext/dlat2s.c +72 -0
  2392. data/ext/dlatbs.c +126 -0
  2393. data/ext/dlatdf.c +115 -0
  2394. data/ext/dlatps.c +120 -0
  2395. data/ext/dlatrd.c +101 -0
  2396. data/ext/dlatrs.c +122 -0
  2397. data/ext/dlatrz.c +83 -0
  2398. data/ext/dlatzm.c +127 -0
  2399. data/ext/dlauu2.c +73 -0
  2400. data/ext/dlauum.c +73 -0
  2401. data/ext/dopgtr.c +87 -0
  2402. data/ext/dopmtr.c +112 -0
  2403. data/ext/dorbdb.c +228 -0
  2404. data/ext/dorcsd.c +193 -0
  2405. data/ext/dorg2l.c +88 -0
  2406. data/ext/dorg2r.c +88 -0
  2407. data/ext/dorgbr.c +111 -0
  2408. data/ext/dorghr.c +107 -0
  2409. data/ext/dorgl2.c +86 -0
  2410. data/ext/dorglq.c +103 -0
  2411. data/ext/dorgql.c +103 -0
  2412. data/ext/dorgqr.c +103 -0
  2413. data/ext/dorgr2.c +86 -0
  2414. data/ext/dorgrq.c +103 -0
  2415. data/ext/dorgtr.c +103 -0
  2416. data/ext/dorm2l.c +110 -0
  2417. data/ext/dorm2r.c +110 -0
  2418. data/ext/dormbr.c +135 -0
  2419. data/ext/dormhr.c +129 -0
  2420. data/ext/dorml2.c +106 -0
  2421. data/ext/dormlq.c +121 -0
  2422. data/ext/dormql.c +125 -0
  2423. data/ext/dormqr.c +125 -0
  2424. data/ext/dormr2.c +106 -0
  2425. data/ext/dormr3.c +110 -0
  2426. data/ext/dormrq.c +121 -0
  2427. data/ext/dormrz.c +125 -0
  2428. data/ext/dormtr.c +125 -0
  2429. data/ext/dpbcon.c +78 -0
  2430. data/ext/dpbequ.c +79 -0
  2431. data/ext/dpbrfs.c +141 -0
  2432. data/ext/dpbstf.c +77 -0
  2433. data/ext/dpbsv.c +103 -0
  2434. data/ext/dpbsvx.c +197 -0
  2435. data/ext/dpbtf2.c +77 -0
  2436. data/ext/dpbtrf.c +77 -0
  2437. data/ext/dpbtrs.c +91 -0
  2438. data/ext/dpftrf.c +78 -0
  2439. data/ext/dpftri.c +78 -0
  2440. data/ext/dpftrs.c +93 -0
  2441. data/ext/dpocon.c +74 -0
  2442. data/ext/dpoequ.c +71 -0
  2443. data/ext/dpoequb.c +71 -0
  2444. data/ext/dporfs.c +137 -0
  2445. data/ext/dporfsx.c +202 -0
  2446. data/ext/dposv.c +99 -0
  2447. data/ext/dposvx.c +193 -0
  2448. data/ext/dposvxx.c +231 -0
  2449. data/ext/dpotf2.c +73 -0
  2450. data/ext/dpotrf.c +73 -0
  2451. data/ext/dpotri.c +73 -0
  2452. data/ext/dpotrs.c +87 -0
  2453. data/ext/dppcon.c +74 -0
  2454. data/ext/dppequ.c +75 -0
  2455. data/ext/dpprfs.c +135 -0
  2456. data/ext/dppsv.c +100 -0
  2457. data/ext/dppsvx.c +187 -0
  2458. data/ext/dpptrf.c +74 -0
  2459. data/ext/dpptri.c +74 -0
  2460. data/ext/dpptrs.c +89 -0
  2461. data/ext/dpstf2.c +91 -0
  2462. data/ext/dpstrf.c +91 -0
  2463. data/ext/dptcon.c +77 -0
  2464. data/ext/dpteqr.c +122 -0
  2465. data/ext/dptrfs.c +150 -0
  2466. data/ext/dptsv.c +115 -0
  2467. data/ext/dptsvx.c +164 -0
  2468. data/ext/dpttrf.c +89 -0
  2469. data/ext/dpttrs.c +93 -0
  2470. data/ext/dptts2.c +90 -0
  2471. data/ext/drscl.c +75 -0
  2472. data/ext/dsbev.c +103 -0
  2473. data/ext/dsbevd.c +136 -0
  2474. data/ext/dsbevx.c +153 -0
  2475. data/ext/dsbgst.c +113 -0
  2476. data/ext/dsbgv.c +133 -0
  2477. data/ext/dsbgvd.c +166 -0
  2478. data/ext/dsbgvx.c +193 -0
  2479. data/ext/dsbtrd.c +126 -0
  2480. data/ext/dsfrk.c +105 -0
  2481. data/ext/dsgesv.c +111 -0
  2482. data/ext/dspcon.c +84 -0
  2483. data/ext/dspev.c +98 -0
  2484. data/ext/dspevd.c +131 -0
  2485. data/ext/dspevx.c +137 -0
  2486. data/ext/dspgst.c +90 -0
  2487. data/ext/dspgv.c +125 -0
  2488. data/ext/dspgvd.c +158 -0
  2489. data/ext/dspgvx.c +164 -0
  2490. data/ext/dsposv.c +107 -0
  2491. data/ext/dsprfs.c +145 -0
  2492. data/ext/dspsv.c +106 -0
  2493. data/ext/dspsvx.c +159 -0
  2494. data/ext/dsptrd.c +96 -0
  2495. data/ext/dsptrf.c +80 -0
  2496. data/ext/dsptri.c +85 -0
  2497. data/ext/dsptrs.c +97 -0
  2498. data/ext/dstebz.c +131 -0
  2499. data/ext/dstedc.c +155 -0
  2500. data/ext/dstegr.c +184 -0
  2501. data/ext/dstein.c +130 -0
  2502. data/ext/dstemr.c +189 -0
  2503. data/ext/dsteqr.c +122 -0
  2504. data/ext/dsterf.c +89 -0
  2505. data/ext/dstev.c +107 -0
  2506. data/ext/dstevd.c +140 -0
  2507. data/ext/dstevr.c +184 -0
  2508. data/ext/dstevx.c +154 -0
  2509. data/ext/dsycon.c +86 -0
  2510. data/ext/dsyconv.c +80 -0
  2511. data/ext/dsyequb.c +78 -0
  2512. data/ext/dsyev.c +103 -0
  2513. data/ext/dsyevd.c +121 -0
  2514. data/ext/dsyevr.c +168 -0
  2515. data/ext/dsyevx.c +153 -0
  2516. data/ext/dsygs2.c +91 -0
  2517. data/ext/dsygst.c +91 -0
  2518. data/ext/dsygv.c +133 -0
  2519. data/ext/dsygvd.c +151 -0
  2520. data/ext/dsygvx.c +183 -0
  2521. data/ext/dsyrfs.c +149 -0
  2522. data/ext/dsyrfsx.c +214 -0
  2523. data/ext/dsysv.c +125 -0
  2524. data/ext/dsysvx.c +179 -0
  2525. data/ext/dsysvxx.c +254 -0
  2526. data/ext/dsyswapr.c +78 -0
  2527. data/ext/dsytd2.c +97 -0
  2528. data/ext/dsytf2.c +81 -0
  2529. data/ext/dsytrd.c +109 -0
  2530. data/ext/dsytrf.c +93 -0
  2531. data/ext/dsytri.c +88 -0
  2532. data/ext/dsytri2.c +104 -0
  2533. data/ext/dsytri2x.c +92 -0
  2534. data/ext/dsytrs.c +99 -0
  2535. data/ext/dsytrs2.c +102 -0
  2536. data/ext/dtbcon.c +82 -0
  2537. data/ext/dtbrfs.c +123 -0
  2538. data/ext/dtbtrs.c +99 -0
  2539. data/ext/dtfsm.c +106 -0
  2540. data/ext/dtftri.c +82 -0
  2541. data/ext/dtfttp.c +75 -0
  2542. data/ext/dtfttr.c +76 -0
  2543. data/ext/dtgevc.c +149 -0
  2544. data/ext/dtgex2.c +176 -0
  2545. data/ext/dtgexc.c +183 -0
  2546. data/ext/dtgsen.c +248 -0
  2547. data/ext/dtgsja.c +223 -0
  2548. data/ext/dtgsna.c +160 -0
  2549. data/ext/dtgsy2.c +178 -0
  2550. data/ext/dtgsyl.c +186 -0
  2551. data/ext/dtpcon.c +78 -0
  2552. data/ext/dtprfs.c +119 -0
  2553. data/ext/dtptri.c +78 -0
  2554. data/ext/dtptrs.c +97 -0
  2555. data/ext/dtpttf.c +75 -0
  2556. data/ext/dtpttr.c +72 -0
  2557. data/ext/dtrcon.c +78 -0
  2558. data/ext/dtrevc.c +146 -0
  2559. data/ext/dtrexc.c +112 -0
  2560. data/ext/dtrrfs.c +119 -0
  2561. data/ext/dtrsen.c +165 -0
  2562. data/ext/dtrsna.c +133 -0
  2563. data/ext/dtrsyl.c +112 -0
  2564. data/ext/dtrti2.c +77 -0
  2565. data/ext/dtrtri.c +77 -0
  2566. data/ext/dtrtrs.c +95 -0
  2567. data/ext/dtrttf.c +73 -0
  2568. data/ext/dtrttp.c +69 -0
  2569. data/ext/dtzrqf.c +79 -0
  2570. data/ext/dtzrzf.c +97 -0
  2571. data/ext/dzsum1.c +59 -0
  2572. data/ext/extconf.rb +136 -0
  2573. data/ext/f2c_minimal.h +36 -0
  2574. data/ext/icmax1.c +59 -0
  2575. data/ext/ieeeck.c +55 -0
  2576. data/ext/ilaclc.c +61 -0
  2577. data/ext/ilaclr.c +61 -0
  2578. data/ext/iladiag.c +47 -0
  2579. data/ext/iladlc.c +61 -0
  2580. data/ext/iladlr.c +61 -0
  2581. data/ext/ilaenv.c +71 -0
  2582. data/ext/ilaprec.c +47 -0
  2583. data/ext/ilaslc.c +61 -0
  2584. data/ext/ilaslr.c +61 -0
  2585. data/ext/ilatrans.c +47 -0
  2586. data/ext/ilauplo.c +47 -0
  2587. data/ext/ilaver.c +49 -0
  2588. data/ext/ilazlc.c +61 -0
  2589. data/ext/ilazlr.c +61 -0
  2590. data/ext/iparmq.c +71 -0
  2591. data/ext/izmax1.c +59 -0
  2592. data/ext/lsamen.c +55 -0
  2593. data/ext/rb_lapack.c +3279 -0
  2594. data/ext/rb_lapack.h +18 -0
  2595. data/ext/sbbcsd.c +283 -0
  2596. data/ext/sbdsdc.c +153 -0
  2597. data/ext/sbdsqr.c +178 -0
  2598. data/ext/scsum1.c +59 -0
  2599. data/ext/sdisna.c +71 -0
  2600. data/ext/sgbbrd.c +150 -0
  2601. data/ext/sgbcon.c +94 -0
  2602. data/ext/sgbequ.c +94 -0
  2603. data/ext/sgbequb.c +92 -0
  2604. data/ext/sgbrfs.c +157 -0
  2605. data/ext/sgbrfsx.c +245 -0
  2606. data/ext/sgbsv.c +111 -0
  2607. data/ext/sgbsvx.c +282 -0
  2608. data/ext/sgbsvxx.c +285 -0
  2609. data/ext/sgbtf2.c +89 -0
  2610. data/ext/sgbtrf.c +89 -0
  2611. data/ext/sgbtrs.c +107 -0
  2612. data/ext/sgebak.c +97 -0
  2613. data/ext/sgebal.c +87 -0
  2614. data/ext/sgebd2.c +108 -0
  2615. data/ext/sgebrd.c +123 -0
  2616. data/ext/sgecon.c +74 -0
  2617. data/ext/sgeequ.c +84 -0
  2618. data/ext/sgeequb.c +84 -0
  2619. data/ext/sgees.c +144 -0
  2620. data/ext/sgeesx.c +166 -0
  2621. data/ext/sgeev.c +133 -0
  2622. data/ext/sgeevx.c +177 -0
  2623. data/ext/sgegs.c +167 -0
  2624. data/ext/sgegv.c +167 -0
  2625. data/ext/sgehd2.c +88 -0
  2626. data/ext/sgehrd.c +103 -0
  2627. data/ext/sgejsv.c +155 -0
  2628. data/ext/sgelq2.c +82 -0
  2629. data/ext/sgelqf.c +99 -0
  2630. data/ext/sgels.c +133 -0
  2631. data/ext/sgelsd.c +145 -0
  2632. data/ext/sgelss.c +144 -0
  2633. data/ext/sgelsx.c +132 -0
  2634. data/ext/sgelsy.c +159 -0
  2635. data/ext/sgeql2.c +84 -0
  2636. data/ext/sgeqlf.c +99 -0
  2637. data/ext/sgeqp3.c +122 -0
  2638. data/ext/sgeqpf.c +107 -0
  2639. data/ext/sgeqr2.c +84 -0
  2640. data/ext/sgeqr2p.c +84 -0
  2641. data/ext/sgeqrf.c +99 -0
  2642. data/ext/sgeqrfp.c +99 -0
  2643. data/ext/sgerfs.c +149 -0
  2644. data/ext/sgerfsx.c +215 -0
  2645. data/ext/sgerq2.c +82 -0
  2646. data/ext/sgerqf.c +99 -0
  2647. data/ext/sgesc2.c +104 -0
  2648. data/ext/sgesdd.c +128 -0
  2649. data/ext/sgesv.c +103 -0
  2650. data/ext/sgesvd.c +139 -0
  2651. data/ext/sgesvj.c +152 -0
  2652. data/ext/sgesvx.c +274 -0
  2653. data/ext/sgesvxx.c +277 -0
  2654. data/ext/sgetc2.c +85 -0
  2655. data/ext/sgetf2.c +81 -0
  2656. data/ext/sgetrf.c +81 -0
  2657. data/ext/sgetri.c +99 -0
  2658. data/ext/sgetrs.c +99 -0
  2659. data/ext/sggbak.c +109 -0
  2660. data/ext/sggbal.c +124 -0
  2661. data/ext/sgges.c +194 -0
  2662. data/ext/sggesx.c +227 -0
  2663. data/ext/sggev.c +167 -0
  2664. data/ext/sggevx.c +225 -0
  2665. data/ext/sggglm.c +152 -0
  2666. data/ext/sgghrd.c +163 -0
  2667. data/ext/sgglse.c +167 -0
  2668. data/ext/sggqrf.c +133 -0
  2669. data/ext/sggrqf.c +137 -0
  2670. data/ext/sggsvd.c +177 -0
  2671. data/ext/sggsvp.c +167 -0
  2672. data/ext/sgsvj0.c +178 -0
  2673. data/ext/sgsvj1.c +182 -0
  2674. data/ext/sgtcon.c +120 -0
  2675. data/ext/sgtrfs.c +205 -0
  2676. data/ext/sgtsv.c +138 -0
  2677. data/ext/sgtsvx.c +252 -0
  2678. data/ext/sgttrf.c +128 -0
  2679. data/ext/sgttrs.c +133 -0
  2680. data/ext/sgtts2.c +130 -0
  2681. data/ext/shgeqz.c +209 -0
  2682. data/ext/shsein.c +201 -0
  2683. data/ext/shseqr.c +149 -0
  2684. data/ext/sisnan.c +47 -0
  2685. data/ext/sla_gbamv.c +125 -0
  2686. data/ext/sla_gbrcond.c +138 -0
  2687. data/ext/sla_gbrfsx_extended.c +287 -0
  2688. data/ext/sla_gbrpvgrw.c +83 -0
  2689. data/ext/sla_geamv.c +115 -0
  2690. data/ext/sla_gercond.c +130 -0
  2691. data/ext/sla_gerfsx_extended.c +279 -0
  2692. data/ext/sla_lin_berr.c +80 -0
  2693. data/ext/sla_porcond.c +118 -0
  2694. data/ext/sla_porfsx_extended.c +267 -0
  2695. data/ext/sla_porpvgrw.c +91 -0
  2696. data/ext/sla_rpvgrw.c +75 -0
  2697. data/ext/sla_syamv.c +112 -0
  2698. data/ext/sla_syrcond.c +130 -0
  2699. data/ext/sla_syrfsx_extended.c +279 -0
  2700. data/ext/sla_syrpvgrw.c +103 -0
  2701. data/ext/sla_wwaddw.c +98 -0
  2702. data/ext/slabad.c +50 -0
  2703. data/ext/slabrd.c +128 -0
  2704. data/ext/slacn2.c +102 -0
  2705. data/ext/slacon.c +79 -0
  2706. data/ext/slacpy.c +73 -0
  2707. data/ext/sladiv.c +62 -0
  2708. data/ext/slae2.c +58 -0
  2709. data/ext/slaebz.c +214 -0
  2710. data/ext/slaed0.c +123 -0
  2711. data/ext/slaed1.c +129 -0
  2712. data/ext/slaed2.c +185 -0
  2713. data/ext/slaed3.c +157 -0
  2714. data/ext/slaed4.c +86 -0
  2715. data/ext/slaed5.c +83 -0
  2716. data/ext/slaed6.c +86 -0
  2717. data/ext/slaed7.c +244 -0
  2718. data/ext/slaed8.c +202 -0
  2719. data/ext/slaed9.c +107 -0
  2720. data/ext/slaeda.c +156 -0
  2721. data/ext/slaein.c +139 -0
  2722. data/ext/slaev2.c +64 -0
  2723. data/ext/slaexc.c +114 -0
  2724. data/ext/slag2.c +87 -0
  2725. data/ext/slag2d.c +72 -0
  2726. data/ext/slags2.c +86 -0
  2727. data/ext/slagtf.c +136 -0
  2728. data/ext/slagtm.c +128 -0
  2729. data/ext/slagts.c +135 -0
  2730. data/ext/slagv2.c +128 -0
  2731. data/ext/slahqr.c +139 -0
  2732. data/ext/slahr2.c +108 -0
  2733. data/ext/slahrd.c +110 -0
  2734. data/ext/slaic1.c +85 -0
  2735. data/ext/slaln2.c +116 -0
  2736. data/ext/slals0.c +197 -0
  2737. data/ext/slalsa.c +266 -0
  2738. data/ext/slalsd.c +138 -0
  2739. data/ext/slamrg.c +76 -0
  2740. data/ext/slaneg.c +79 -0
  2741. data/ext/slangb.c +74 -0
  2742. data/ext/slange.c +70 -0
  2743. data/ext/slangt.c +83 -0
  2744. data/ext/slanhs.c +66 -0
  2745. data/ext/slansb.c +74 -0
  2746. data/ext/slansf.c +74 -0
  2747. data/ext/slansp.c +72 -0
  2748. data/ext/slanst.c +71 -0
  2749. data/ext/slansy.c +70 -0
  2750. data/ext/slantb.c +78 -0
  2751. data/ext/slantp.c +76 -0
  2752. data/ext/slantr.c +78 -0
  2753. data/ext/slanv2.c +78 -0
  2754. data/ext/slapll.c +101 -0
  2755. data/ext/slapmr.c +93 -0
  2756. data/ext/slapmt.c +97 -0
  2757. data/ext/slapy2.c +51 -0
  2758. data/ext/slapy3.c +55 -0
  2759. data/ext/slaqgb.c +113 -0
  2760. data/ext/slaqge.c +105 -0
  2761. data/ext/slaqp2.c +154 -0
  2762. data/ext/slaqps.c +204 -0
  2763. data/ext/slaqr0.c +149 -0
  2764. data/ext/slaqr1.c +78 -0
  2765. data/ext/slaqr2.c +178 -0
  2766. data/ext/slaqr3.c +178 -0
  2767. data/ext/slaqr4.c +149 -0
  2768. data/ext/slaqr5.c +196 -0
  2769. data/ext/slaqsb.c +97 -0
  2770. data/ext/slaqsp.c +90 -0
  2771. data/ext/slaqsy.c +93 -0
  2772. data/ext/slaqtr.c +110 -0
  2773. data/ext/slar1v.c +169 -0
  2774. data/ext/slar2v.c +145 -0
  2775. data/ext/slarf.c +97 -0
  2776. data/ext/slarfb.c +119 -0
  2777. data/ext/slarfg.c +79 -0
  2778. data/ext/slarfgp.c +79 -0
  2779. data/ext/slarft.c +101 -0
  2780. data/ext/slarfx.c +89 -0
  2781. data/ext/slargv.c +110 -0
  2782. data/ext/slarnv.c +79 -0
  2783. data/ext/slarra.c +120 -0
  2784. data/ext/slarrb.c +174 -0
  2785. data/ext/slarrc.c +92 -0
  2786. data/ext/slarrd.c +186 -0
  2787. data/ext/slarre.c +217 -0
  2788. data/ext/slarrf.c +172 -0
  2789. data/ext/slarrj.c +143 -0
  2790. data/ext/slarrk.c +93 -0
  2791. data/ext/slarrr.c +78 -0
  2792. data/ext/slarrv.c +267 -0
  2793. data/ext/slarscl2.c +78 -0
  2794. data/ext/slartg.c +57 -0
  2795. data/ext/slartgp.c +57 -0
  2796. data/ext/slartgs.c +58 -0
  2797. data/ext/slartv.c +126 -0
  2798. data/ext/slaruv.c +75 -0
  2799. data/ext/slarz.c +101 -0
  2800. data/ext/slarzb.c +123 -0
  2801. data/ext/slarzt.c +101 -0
  2802. data/ext/slas2.c +58 -0
  2803. data/ext/slascl.c +93 -0
  2804. data/ext/slascl2.c +78 -0
  2805. data/ext/slasd0.c +116 -0
  2806. data/ext/slasd1.c +156 -0
  2807. data/ext/slasd2.c +224 -0
  2808. data/ext/slasd3.c +208 -0
  2809. data/ext/slasd4.c +89 -0
  2810. data/ext/slasd5.c +86 -0
  2811. data/ext/slasd6.c +232 -0
  2812. data/ext/slasd7.c +221 -0
  2813. data/ext/slasd8.c +169 -0
  2814. data/ext/slasda.c +217 -0
  2815. data/ext/slasdq.c +182 -0
  2816. data/ext/slasdt.c +78 -0
  2817. data/ext/slaset.c +82 -0
  2818. data/ext/slasq1.c +92 -0
  2819. data/ext/slasq2.c +70 -0
  2820. data/ext/slasq3.c +134 -0
  2821. data/ext/slasq4.c +103 -0
  2822. data/ext/slasq5.c +90 -0
  2823. data/ext/slasq6.c +82 -0
  2824. data/ext/slasr.c +106 -0
  2825. data/ext/slasrt.c +70 -0
  2826. data/ext/slassq.c +66 -0
  2827. data/ext/slasv2.c +70 -0
  2828. data/ext/slaswp.c +90 -0
  2829. data/ext/slasy2.c +122 -0
  2830. data/ext/slasyf.c +93 -0
  2831. data/ext/slatbs.c +126 -0
  2832. data/ext/slatdf.c +115 -0
  2833. data/ext/slatps.c +120 -0
  2834. data/ext/slatrd.c +101 -0
  2835. data/ext/slatrs.c +122 -0
  2836. data/ext/slatrz.c +83 -0
  2837. data/ext/slatzm.c +127 -0
  2838. data/ext/slauu2.c +73 -0
  2839. data/ext/slauum.c +73 -0
  2840. data/ext/sopgtr.c +87 -0
  2841. data/ext/sopmtr.c +112 -0
  2842. data/ext/sorbdb.c +228 -0
  2843. data/ext/sorcsd.c +193 -0
  2844. data/ext/sorg2l.c +88 -0
  2845. data/ext/sorg2r.c +88 -0
  2846. data/ext/sorgbr.c +111 -0
  2847. data/ext/sorghr.c +107 -0
  2848. data/ext/sorgl2.c +86 -0
  2849. data/ext/sorglq.c +103 -0
  2850. data/ext/sorgql.c +103 -0
  2851. data/ext/sorgqr.c +103 -0
  2852. data/ext/sorgr2.c +86 -0
  2853. data/ext/sorgrq.c +103 -0
  2854. data/ext/sorgtr.c +103 -0
  2855. data/ext/sorm2l.c +110 -0
  2856. data/ext/sorm2r.c +110 -0
  2857. data/ext/sormbr.c +135 -0
  2858. data/ext/sormhr.c +129 -0
  2859. data/ext/sorml2.c +106 -0
  2860. data/ext/sormlq.c +121 -0
  2861. data/ext/sormql.c +125 -0
  2862. data/ext/sormqr.c +125 -0
  2863. data/ext/sormr2.c +106 -0
  2864. data/ext/sormr3.c +110 -0
  2865. data/ext/sormrq.c +121 -0
  2866. data/ext/sormrz.c +125 -0
  2867. data/ext/sormtr.c +125 -0
  2868. data/ext/spbcon.c +78 -0
  2869. data/ext/spbequ.c +79 -0
  2870. data/ext/spbrfs.c +141 -0
  2871. data/ext/spbstf.c +77 -0
  2872. data/ext/spbsv.c +103 -0
  2873. data/ext/spbsvx.c +197 -0
  2874. data/ext/spbtf2.c +77 -0
  2875. data/ext/spbtrf.c +77 -0
  2876. data/ext/spbtrs.c +91 -0
  2877. data/ext/spftrf.c +78 -0
  2878. data/ext/spftri.c +78 -0
  2879. data/ext/spftrs.c +93 -0
  2880. data/ext/spocon.c +74 -0
  2881. data/ext/spoequ.c +71 -0
  2882. data/ext/spoequb.c +71 -0
  2883. data/ext/sporfs.c +137 -0
  2884. data/ext/sporfsx.c +202 -0
  2885. data/ext/sposv.c +99 -0
  2886. data/ext/sposvx.c +193 -0
  2887. data/ext/sposvxx.c +231 -0
  2888. data/ext/spotf2.c +73 -0
  2889. data/ext/spotrf.c +73 -0
  2890. data/ext/spotri.c +73 -0
  2891. data/ext/spotrs.c +87 -0
  2892. data/ext/sppcon.c +74 -0
  2893. data/ext/sppequ.c +75 -0
  2894. data/ext/spprfs.c +135 -0
  2895. data/ext/sppsv.c +100 -0
  2896. data/ext/sppsvx.c +187 -0
  2897. data/ext/spptrf.c +74 -0
  2898. data/ext/spptri.c +74 -0
  2899. data/ext/spptrs.c +89 -0
  2900. data/ext/spstf2.c +91 -0
  2901. data/ext/spstrf.c +91 -0
  2902. data/ext/sptcon.c +77 -0
  2903. data/ext/spteqr.c +122 -0
  2904. data/ext/sptrfs.c +150 -0
  2905. data/ext/sptsv.c +115 -0
  2906. data/ext/sptsvx.c +164 -0
  2907. data/ext/spttrf.c +89 -0
  2908. data/ext/spttrs.c +93 -0
  2909. data/ext/sptts2.c +90 -0
  2910. data/ext/srscl.c +75 -0
  2911. data/ext/ssbev.c +103 -0
  2912. data/ext/ssbevd.c +136 -0
  2913. data/ext/ssbevx.c +153 -0
  2914. data/ext/ssbgst.c +113 -0
  2915. data/ext/ssbgv.c +133 -0
  2916. data/ext/ssbgvd.c +166 -0
  2917. data/ext/ssbgvx.c +193 -0
  2918. data/ext/ssbtrd.c +126 -0
  2919. data/ext/ssfrk.c +105 -0
  2920. data/ext/sspcon.c +84 -0
  2921. data/ext/sspev.c +98 -0
  2922. data/ext/sspevd.c +131 -0
  2923. data/ext/sspevx.c +137 -0
  2924. data/ext/sspgst.c +90 -0
  2925. data/ext/sspgv.c +125 -0
  2926. data/ext/sspgvd.c +158 -0
  2927. data/ext/sspgvx.c +164 -0
  2928. data/ext/ssprfs.c +145 -0
  2929. data/ext/sspsv.c +106 -0
  2930. data/ext/sspsvx.c +159 -0
  2931. data/ext/ssptrd.c +96 -0
  2932. data/ext/ssptrf.c +80 -0
  2933. data/ext/ssptri.c +85 -0
  2934. data/ext/ssptrs.c +97 -0
  2935. data/ext/sstebz.c +131 -0
  2936. data/ext/sstedc.c +155 -0
  2937. data/ext/sstegr.c +184 -0
  2938. data/ext/sstein.c +130 -0
  2939. data/ext/sstemr.c +189 -0
  2940. data/ext/ssteqr.c +122 -0
  2941. data/ext/ssterf.c +89 -0
  2942. data/ext/sstev.c +107 -0
  2943. data/ext/sstevd.c +140 -0
  2944. data/ext/sstevr.c +184 -0
  2945. data/ext/sstevx.c +154 -0
  2946. data/ext/ssycon.c +86 -0
  2947. data/ext/ssyconv.c +80 -0
  2948. data/ext/ssyequb.c +78 -0
  2949. data/ext/ssyev.c +103 -0
  2950. data/ext/ssyevd.c +121 -0
  2951. data/ext/ssyevr.c +168 -0
  2952. data/ext/ssyevx.c +153 -0
  2953. data/ext/ssygs2.c +91 -0
  2954. data/ext/ssygst.c +91 -0
  2955. data/ext/ssygv.c +133 -0
  2956. data/ext/ssygvd.c +151 -0
  2957. data/ext/ssygvx.c +187 -0
  2958. data/ext/ssyrfs.c +149 -0
  2959. data/ext/ssyrfsx.c +214 -0
  2960. data/ext/ssysv.c +125 -0
  2961. data/ext/ssysvx.c +179 -0
  2962. data/ext/ssysvxx.c +254 -0
  2963. data/ext/ssyswapr.c +78 -0
  2964. data/ext/ssytd2.c +97 -0
  2965. data/ext/ssytf2.c +81 -0
  2966. data/ext/ssytrd.c +109 -0
  2967. data/ext/ssytrf.c +93 -0
  2968. data/ext/ssytri.c +88 -0
  2969. data/ext/ssytri2.c +123 -0
  2970. data/ext/ssytri2x.c +92 -0
  2971. data/ext/ssytrs.c +99 -0
  2972. data/ext/ssytrs2.c +102 -0
  2973. data/ext/stbcon.c +82 -0
  2974. data/ext/stbrfs.c +123 -0
  2975. data/ext/stbtrs.c +99 -0
  2976. data/ext/stfsm.c +108 -0
  2977. data/ext/stftri.c +82 -0
  2978. data/ext/stfttp.c +75 -0
  2979. data/ext/stfttr.c +76 -0
  2980. data/ext/stgevc.c +149 -0
  2981. data/ext/stgex2.c +180 -0
  2982. data/ext/stgexc.c +187 -0
  2983. data/ext/stgsen.c +248 -0
  2984. data/ext/stgsja.c +223 -0
  2985. data/ext/stgsna.c +160 -0
  2986. data/ext/stgsy2.c +178 -0
  2987. data/ext/stgsyl.c +186 -0
  2988. data/ext/stpcon.c +78 -0
  2989. data/ext/stprfs.c +119 -0
  2990. data/ext/stptri.c +78 -0
  2991. data/ext/stptrs.c +97 -0
  2992. data/ext/stpttf.c +75 -0
  2993. data/ext/stpttr.c +72 -0
  2994. data/ext/strcon.c +78 -0
  2995. data/ext/strevc.c +146 -0
  2996. data/ext/strexc.c +112 -0
  2997. data/ext/strrfs.c +119 -0
  2998. data/ext/strsen.c +165 -0
  2999. data/ext/strsna.c +133 -0
  3000. data/ext/strsyl.c +112 -0
  3001. data/ext/strti2.c +77 -0
  3002. data/ext/strtri.c +77 -0
  3003. data/ext/strtrs.c +95 -0
  3004. data/ext/strttf.c +73 -0
  3005. data/ext/strttp.c +69 -0
  3006. data/ext/stzrqf.c +79 -0
  3007. data/ext/stzrzf.c +97 -0
  3008. data/ext/xerbla.c +48 -0
  3009. data/ext/xerbla_array.c +49 -0
  3010. data/ext/zbbcsd.c +279 -0
  3011. data/ext/zbdsqr.c +178 -0
  3012. data/ext/zcgesv.c +114 -0
  3013. data/ext/zcposv.c +110 -0
  3014. data/ext/zdrscl.c +75 -0
  3015. data/ext/zgbbrd.c +153 -0
  3016. data/ext/zgbcon.c +94 -0
  3017. data/ext/zgbequ.c +94 -0
  3018. data/ext/zgbequb.c +92 -0
  3019. data/ext/zgbrfs.c +157 -0
  3020. data/ext/zgbrfsx.c +245 -0
  3021. data/ext/zgbsv.c +111 -0
  3022. data/ext/zgbsvx.c +282 -0
  3023. data/ext/zgbsvxx.c +285 -0
  3024. data/ext/zgbtf2.c +89 -0
  3025. data/ext/zgbtrf.c +89 -0
  3026. data/ext/zgbtrs.c +107 -0
  3027. data/ext/zgebak.c +97 -0
  3028. data/ext/zgebal.c +87 -0
  3029. data/ext/zgebd2.c +108 -0
  3030. data/ext/zgebrd.c +123 -0
  3031. data/ext/zgecon.c +74 -0
  3032. data/ext/zgeequ.c +84 -0
  3033. data/ext/zgeequb.c +84 -0
  3034. data/ext/zgees.c +138 -0
  3035. data/ext/zgeesx.c +148 -0
  3036. data/ext/zgeev.c +128 -0
  3037. data/ext/zgeevx.c +169 -0
  3038. data/ext/zgegs.c +162 -0
  3039. data/ext/zgegv.c +167 -0
  3040. data/ext/zgehd2.c +88 -0
  3041. data/ext/zgehrd.c +103 -0
  3042. data/ext/zgelq2.c +82 -0
  3043. data/ext/zgelqf.c +99 -0
  3044. data/ext/zgels.c +133 -0
  3045. data/ext/zgelsd.c +150 -0
  3046. data/ext/zgelss.c +147 -0
  3047. data/ext/zgelsx.c +135 -0
  3048. data/ext/zgelsy.c +162 -0
  3049. data/ext/zgeql2.c +84 -0
  3050. data/ext/zgeqlf.c +99 -0
  3051. data/ext/zgeqp3.c +125 -0
  3052. data/ext/zgeqpf.c +110 -0
  3053. data/ext/zgeqr2.c +84 -0
  3054. data/ext/zgeqr2p.c +84 -0
  3055. data/ext/zgeqrf.c +99 -0
  3056. data/ext/zgeqrfp.c +99 -0
  3057. data/ext/zgerfs.c +149 -0
  3058. data/ext/zgerfsx.c +215 -0
  3059. data/ext/zgerq2.c +82 -0
  3060. data/ext/zgerqf.c +99 -0
  3061. data/ext/zgesc2.c +104 -0
  3062. data/ext/zgesdd.c +131 -0
  3063. data/ext/zgesv.c +103 -0
  3064. data/ext/zgesvd.c +142 -0
  3065. data/ext/zgesvx.c +274 -0
  3066. data/ext/zgesvxx.c +277 -0
  3067. data/ext/zgetc2.c +85 -0
  3068. data/ext/zgetf2.c +81 -0
  3069. data/ext/zgetrf.c +81 -0
  3070. data/ext/zgetri.c +99 -0
  3071. data/ext/zgetrs.c +99 -0
  3072. data/ext/zggbak.c +109 -0
  3073. data/ext/zggbal.c +124 -0
  3074. data/ext/zgges.c +188 -0
  3075. data/ext/zggesx.c +226 -0
  3076. data/ext/zggev.c +167 -0
  3077. data/ext/zggevx.c +222 -0
  3078. data/ext/zggglm.c +152 -0
  3079. data/ext/zgghrd.c +163 -0
  3080. data/ext/zgglse.c +167 -0
  3081. data/ext/zggqrf.c +133 -0
  3082. data/ext/zggrqf.c +137 -0
  3083. data/ext/zggsvd.c +180 -0
  3084. data/ext/zggsvp.c +170 -0
  3085. data/ext/zgtcon.c +117 -0
  3086. data/ext/zgtrfs.c +205 -0
  3087. data/ext/zgtsv.c +138 -0
  3088. data/ext/zgtsvx.c +252 -0
  3089. data/ext/zgttrf.c +128 -0
  3090. data/ext/zgttrs.c +133 -0
  3091. data/ext/zgtts2.c +130 -0
  3092. data/ext/zhbev.c +106 -0
  3093. data/ext/zhbevd.c +154 -0
  3094. data/ext/zhbevx.c +156 -0
  3095. data/ext/zhbgst.c +116 -0
  3096. data/ext/zhbgv.c +136 -0
  3097. data/ext/zhbgvd.c +184 -0
  3098. data/ext/zhbgvx.c +185 -0
  3099. data/ext/zhbtrd.c +126 -0
  3100. data/ext/zhecon.c +83 -0
  3101. data/ext/zheequb.c +78 -0
  3102. data/ext/zheev.c +106 -0
  3103. data/ext/zheevd.c +139 -0
  3104. data/ext/zheevr.c +186 -0
  3105. data/ext/zheevx.c +156 -0
  3106. data/ext/zhegs2.c +91 -0
  3107. data/ext/zhegst.c +91 -0
  3108. data/ext/zhegv.c +136 -0
  3109. data/ext/zhegvd.c +169 -0
  3110. data/ext/zhegvx.c +186 -0
  3111. data/ext/zherfs.c +149 -0
  3112. data/ext/zherfsx.c +214 -0
  3113. data/ext/zhesv.c +119 -0
  3114. data/ext/zhesvx.c +179 -0
  3115. data/ext/zhesvxx.c +254 -0
  3116. data/ext/zhetd2.c +97 -0
  3117. data/ext/zhetf2.c +81 -0
  3118. data/ext/zhetrd.c +109 -0
  3119. data/ext/zhetrf.c +93 -0
  3120. data/ext/zhetri.c +88 -0
  3121. data/ext/zhetrs.c +99 -0
  3122. data/ext/zhetrs2.c +102 -0
  3123. data/ext/zhfrk.c +105 -0
  3124. data/ext/zhgeqz.c +204 -0
  3125. data/ext/zhpcon.c +81 -0
  3126. data/ext/zhpev.c +101 -0
  3127. data/ext/zhpevd.c +149 -0
  3128. data/ext/zhpevx.c +140 -0
  3129. data/ext/zhpgst.c +90 -0
  3130. data/ext/zhpgv.c +128 -0
  3131. data/ext/zhpgvd.c +166 -0
  3132. data/ext/zhpgvx.c +166 -0
  3133. data/ext/zhprfs.c +145 -0
  3134. data/ext/zhpsv.c +106 -0
  3135. data/ext/zhpsvx.c +159 -0
  3136. data/ext/zhptrd.c +96 -0
  3137. data/ext/zhptrf.c +80 -0
  3138. data/ext/zhptri.c +85 -0
  3139. data/ext/zhptrs.c +97 -0
  3140. data/ext/zhsein.c +181 -0
  3141. data/ext/zhseqr.c +141 -0
  3142. data/ext/zla_gbamv.c +123 -0
  3143. data/ext/zla_gbrcond_c.c +138 -0
  3144. data/ext/zla_gbrcond_x.c +134 -0
  3145. data/ext/zla_gbrfsx_extended.c +291 -0
  3146. data/ext/zla_gbrpvgrw.c +83 -0
  3147. data/ext/zla_geamv.c +115 -0
  3148. data/ext/zla_gercond_c.c +130 -0
  3149. data/ext/zla_gercond_x.c +126 -0
  3150. data/ext/zla_gerfsx_extended.c +277 -0
  3151. data/ext/zla_heamv.c +112 -0
  3152. data/ext/zla_hercond_c.c +130 -0
  3153. data/ext/zla_hercond_x.c +126 -0
  3154. data/ext/zla_herfsx_extended.c +279 -0
  3155. data/ext/zla_herpvgrw.c +103 -0
  3156. data/ext/zla_lin_berr.c +80 -0
  3157. data/ext/zla_porcond_c.c +118 -0
  3158. data/ext/zla_porcond_x.c +114 -0
  3159. data/ext/zla_porfsx_extended.c +267 -0
  3160. data/ext/zla_porpvgrw.c +91 -0
  3161. data/ext/zla_rpvgrw.c +75 -0
  3162. data/ext/zla_syamv.c +112 -0
  3163. data/ext/zla_syrcond_c.c +130 -0
  3164. data/ext/zla_syrcond_x.c +126 -0
  3165. data/ext/zla_syrfsx_extended.c +279 -0
  3166. data/ext/zla_syrpvgrw.c +103 -0
  3167. data/ext/zla_wwaddw.c +98 -0
  3168. data/ext/zlabrd.c +128 -0
  3169. data/ext/zlacgv.c +71 -0
  3170. data/ext/zlacn2.c +99 -0
  3171. data/ext/zlacon.c +76 -0
  3172. data/ext/zlacp2.c +73 -0
  3173. data/ext/zlacpy.c +73 -0
  3174. data/ext/zlacrm.c +86 -0
  3175. data/ext/zlacrt.c +104 -0
  3176. data/ext/zladiv.c +53 -0
  3177. data/ext/zlaed0.c +130 -0
  3178. data/ext/zlaed7.c +243 -0
  3179. data/ext/zlaed8.c +194 -0
  3180. data/ext/zlaein.c +109 -0
  3181. data/ext/zlaesy.c +70 -0
  3182. data/ext/zlaev2.c +67 -0
  3183. data/ext/zlag2c.c +72 -0
  3184. data/ext/zlags2.c +88 -0
  3185. data/ext/zlagtm.c +128 -0
  3186. data/ext/zlahef.c +93 -0
  3187. data/ext/zlahqr.c +131 -0
  3188. data/ext/zlahr2.c +108 -0
  3189. data/ext/zlahrd.c +108 -0
  3190. data/ext/zlaic1.c +86 -0
  3191. data/ext/zlals0.c +197 -0
  3192. data/ext/zlalsa.c +266 -0
  3193. data/ext/zlalsd.c +141 -0
  3194. data/ext/zlangb.c +72 -0
  3195. data/ext/zlange.c +70 -0
  3196. data/ext/zlangt.c +83 -0
  3197. data/ext/zlanhb.c +74 -0
  3198. data/ext/zlanhe.c +70 -0
  3199. data/ext/zlanhf.c +76 -0
  3200. data/ext/zlanhp.c +72 -0
  3201. data/ext/zlanhs.c +66 -0
  3202. data/ext/zlanht.c +71 -0
  3203. data/ext/zlansb.c +74 -0
  3204. data/ext/zlansp.c +72 -0
  3205. data/ext/zlansy.c +70 -0
  3206. data/ext/zlantb.c +78 -0
  3207. data/ext/zlantp.c +76 -0
  3208. data/ext/zlantr.c +78 -0
  3209. data/ext/zlapll.c +101 -0
  3210. data/ext/zlapmr.c +93 -0
  3211. data/ext/zlapmt.c +97 -0
  3212. data/ext/zlaqgb.c +113 -0
  3213. data/ext/zlaqge.c +105 -0
  3214. data/ext/zlaqhb.c +93 -0
  3215. data/ext/zlaqhe.c +93 -0
  3216. data/ext/zlaqhp.c +90 -0
  3217. data/ext/zlaqp2.c +154 -0
  3218. data/ext/zlaqps.c +204 -0
  3219. data/ext/zlaqr0.c +149 -0
  3220. data/ext/zlaqr1.c +72 -0
  3221. data/ext/zlaqr2.c +170 -0
  3222. data/ext/zlaqr3.c +170 -0
  3223. data/ext/zlaqr4.c +143 -0
  3224. data/ext/zlaqr5.c +175 -0
  3225. data/ext/zlaqsb.c +97 -0
  3226. data/ext/zlaqsp.c +90 -0
  3227. data/ext/zlaqsy.c +93 -0
  3228. data/ext/zlar1v.c +169 -0
  3229. data/ext/zlar2v.c +145 -0
  3230. data/ext/zlarcm.c +82 -0
  3231. data/ext/zlarf.c +98 -0
  3232. data/ext/zlarfb.c +119 -0
  3233. data/ext/zlarfg.c +80 -0
  3234. data/ext/zlarfgp.c +80 -0
  3235. data/ext/zlarft.c +101 -0
  3236. data/ext/zlarfx.c +90 -0
  3237. data/ext/zlargv.c +110 -0
  3238. data/ext/zlarnv.c +79 -0
  3239. data/ext/zlarrv.c +267 -0
  3240. data/ext/zlarscl2.c +78 -0
  3241. data/ext/zlartg.c +59 -0
  3242. data/ext/zlartv.c +126 -0
  3243. data/ext/zlarz.c +102 -0
  3244. data/ext/zlarzb.c +123 -0
  3245. data/ext/zlarzt.c +101 -0
  3246. data/ext/zlascl.c +93 -0
  3247. data/ext/zlascl2.c +78 -0
  3248. data/ext/zlaset.c +84 -0
  3249. data/ext/zlasr.c +106 -0
  3250. data/ext/zlassq.c +66 -0
  3251. data/ext/zlaswp.c +90 -0
  3252. data/ext/zlasyf.c +93 -0
  3253. data/ext/zlat2c.c +72 -0
  3254. data/ext/zlatbs.c +126 -0
  3255. data/ext/zlatdf.c +115 -0
  3256. data/ext/zlatps.c +120 -0
  3257. data/ext/zlatrd.c +101 -0
  3258. data/ext/zlatrs.c +122 -0
  3259. data/ext/zlatrz.c +83 -0
  3260. data/ext/zlatzm.c +128 -0
  3261. data/ext/zlauu2.c +73 -0
  3262. data/ext/zlauum.c +73 -0
  3263. data/ext/zpbcon.c +78 -0
  3264. data/ext/zpbequ.c +79 -0
  3265. data/ext/zpbrfs.c +141 -0
  3266. data/ext/zpbstf.c +77 -0
  3267. data/ext/zpbsv.c +103 -0
  3268. data/ext/zpbsvx.c +197 -0
  3269. data/ext/zpbtf2.c +77 -0
  3270. data/ext/zpbtrf.c +77 -0
  3271. data/ext/zpbtrs.c +91 -0
  3272. data/ext/zpftrf.c +78 -0
  3273. data/ext/zpftri.c +78 -0
  3274. data/ext/zpftrs.c +93 -0
  3275. data/ext/zpocon.c +74 -0
  3276. data/ext/zpoequ.c +71 -0
  3277. data/ext/zpoequb.c +71 -0
  3278. data/ext/zporfs.c +137 -0
  3279. data/ext/zporfsx.c +202 -0
  3280. data/ext/zposv.c +99 -0
  3281. data/ext/zposvx.c +193 -0
  3282. data/ext/zposvxx.c +231 -0
  3283. data/ext/zpotf2.c +73 -0
  3284. data/ext/zpotrf.c +73 -0
  3285. data/ext/zpotri.c +73 -0
  3286. data/ext/zpotrs.c +87 -0
  3287. data/ext/zppcon.c +74 -0
  3288. data/ext/zppequ.c +75 -0
  3289. data/ext/zpprfs.c +135 -0
  3290. data/ext/zppsv.c +100 -0
  3291. data/ext/zppsvx.c +187 -0
  3292. data/ext/zpptrf.c +74 -0
  3293. data/ext/zpptri.c +74 -0
  3294. data/ext/zpptrs.c +89 -0
  3295. data/ext/zpstf2.c +91 -0
  3296. data/ext/zpstrf.c +91 -0
  3297. data/ext/zptcon.c +77 -0
  3298. data/ext/zpteqr.c +122 -0
  3299. data/ext/zptrfs.c +157 -0
  3300. data/ext/zptsv.c +119 -0
  3301. data/ext/zptsvx.c +167 -0
  3302. data/ext/zpttrf.c +89 -0
  3303. data/ext/zpttrs.c +97 -0
  3304. data/ext/zptts2.c +94 -0
  3305. data/ext/zrot.c +103 -0
  3306. data/ext/zspcon.c +81 -0
  3307. data/ext/zspmv.c +113 -0
  3308. data/ext/zspr.c +92 -0
  3309. data/ext/zsprfs.c +145 -0
  3310. data/ext/zspsv.c +106 -0
  3311. data/ext/zspsvx.c +159 -0
  3312. data/ext/zsptrf.c +80 -0
  3313. data/ext/zsptri.c +85 -0
  3314. data/ext/zsptrs.c +97 -0
  3315. data/ext/zstedc.c +173 -0
  3316. data/ext/zstegr.c +184 -0
  3317. data/ext/zstein.c +130 -0
  3318. data/ext/zstemr.c +189 -0
  3319. data/ext/zsteqr.c +122 -0
  3320. data/ext/zsycon.c +83 -0
  3321. data/ext/zsyconv.c +80 -0
  3322. data/ext/zsyequb.c +78 -0
  3323. data/ext/zsymv.c +111 -0
  3324. data/ext/zsyr.c +91 -0
  3325. data/ext/zsyrfs.c +149 -0
  3326. data/ext/zsyrfsx.c +214 -0
  3327. data/ext/zsysv.c +125 -0
  3328. data/ext/zsysvx.c +179 -0
  3329. data/ext/zsysvxx.c +254 -0
  3330. data/ext/zsyswapr.c +78 -0
  3331. data/ext/zsytf2.c +81 -0
  3332. data/ext/zsytrf.c +93 -0
  3333. data/ext/zsytri.c +88 -0
  3334. data/ext/zsytri2.c +100 -0
  3335. data/ext/zsytri2x.c +92 -0
  3336. data/ext/zsytrs.c +99 -0
  3337. data/ext/zsytrs2.c +102 -0
  3338. data/ext/ztbcon.c +82 -0
  3339. data/ext/ztbrfs.c +123 -0
  3340. data/ext/ztbtrs.c +99 -0
  3341. data/ext/ztfsm.c +107 -0
  3342. data/ext/ztftri.c +82 -0
  3343. data/ext/ztfttp.c +75 -0
  3344. data/ext/ztfttr.c +76 -0
  3345. data/ext/ztgevc.c +152 -0
  3346. data/ext/ztgex2.c +167 -0
  3347. data/ext/ztgexc.c +168 -0
  3348. data/ext/ztgsen.c +240 -0
  3349. data/ext/ztgsja.c +223 -0
  3350. data/ext/ztgsna.c +160 -0
  3351. data/ext/ztgsy2.c +172 -0
  3352. data/ext/ztgsyl.c +186 -0
  3353. data/ext/ztpcon.c +78 -0
  3354. data/ext/ztprfs.c +119 -0
  3355. data/ext/ztptri.c +78 -0
  3356. data/ext/ztptrs.c +97 -0
  3357. data/ext/ztpttf.c +75 -0
  3358. data/ext/ztpttr.c +72 -0
  3359. data/ext/ztrcon.c +78 -0
  3360. data/ext/ztrevc.c +150 -0
  3361. data/ext/ztrexc.c +107 -0
  3362. data/ext/ztrrfs.c +119 -0
  3363. data/ext/ztrsen.c +150 -0
  3364. data/ext/ztrsna.c +133 -0
  3365. data/ext/ztrsyl.c +112 -0
  3366. data/ext/ztrti2.c +77 -0
  3367. data/ext/ztrtri.c +77 -0
  3368. data/ext/ztrtrs.c +95 -0
  3369. data/ext/ztrttf.c +73 -0
  3370. data/ext/ztrttp.c +69 -0
  3371. data/ext/ztzrqf.c +79 -0
  3372. data/ext/ztzrzf.c +97 -0
  3373. data/ext/zunbdb.c +228 -0
  3374. data/ext/zuncsd.c +200 -0
  3375. data/ext/zung2l.c +88 -0
  3376. data/ext/zung2r.c +88 -0
  3377. data/ext/zungbr.c +111 -0
  3378. data/ext/zunghr.c +107 -0
  3379. data/ext/zungl2.c +86 -0
  3380. data/ext/zunglq.c +103 -0
  3381. data/ext/zungql.c +103 -0
  3382. data/ext/zungqr.c +103 -0
  3383. data/ext/zungr2.c +86 -0
  3384. data/ext/zungrq.c +103 -0
  3385. data/ext/zungtr.c +103 -0
  3386. data/ext/zunm2l.c +110 -0
  3387. data/ext/zunm2r.c +110 -0
  3388. data/ext/zunmbr.c +135 -0
  3389. data/ext/zunmhr.c +129 -0
  3390. data/ext/zunml2.c +106 -0
  3391. data/ext/zunmlq.c +121 -0
  3392. data/ext/zunmql.c +125 -0
  3393. data/ext/zunmqr.c +125 -0
  3394. data/ext/zunmr2.c +106 -0
  3395. data/ext/zunmr3.c +110 -0
  3396. data/ext/zunmrq.c +121 -0
  3397. data/ext/zunmrz.c +125 -0
  3398. data/ext/zunmtr.c +125 -0
  3399. data/ext/zupgtr.c +87 -0
  3400. data/ext/zupmtr.c +112 -0
  3401. data/lib/numru/lapack.rb +51 -0
  3402. data/samples/dsyevr.rb +25 -0
  3403. data/tests/eig/ge/test_gesdd.rb +90 -0
  3404. data/tests/eig/ge/test_gesvd.rb +99 -0
  3405. data/tests/eig/gg/test_ggev.rb +124 -0
  3406. data/tests/eig/gg/test_ggsvd.rb +76 -0
  3407. data/tests/eig/sb/test_sbev.rb +39 -0
  3408. data/tests/lapack_test.rb +50 -0
  3409. data/tests/lin/gb/test_gbsv.rb +46 -0
  3410. data/tests/lin/gb/test_gbsvx.rb +56 -0
  3411. data/tests/lin/ge/test_gels.rb +63 -0
  3412. data/tests/lin/ge/test_gelsd.rb +54 -0
  3413. data/tests/lin/ge/test_gelss.rb +73 -0
  3414. data/tests/lin/ge/test_gelsy.rb +73 -0
  3415. data/tests/lin/ge/test_gesv.rb +43 -0
  3416. data/tests/lin/ge/test_gesvx.rb +52 -0
  3417. data/tests/lin/gt/test_gtsv.rb +39 -0
  3418. data/tests/test_all.rb +7 -0
  3419. metadata +3513 -0
data/doc/ssy.html ADDED
@@ -0,0 +1,3438 @@
1
+ <HTML>
2
+ <HEAD>
3
+ <TITLE>REAL routines for symmetric matrix</TITLE>
4
+ </HEAD>
5
+ <BODY>
6
+ <A NAME="top"></A>
7
+ <H1>REAL routines for symmetric matrix</H1>
8
+ <UL>
9
+ <LI><A HREF="#ssycon">ssycon</A></LI>
10
+ <LI><A HREF="#ssyconv">ssyconv</A></LI>
11
+ <LI><A HREF="#ssyequb">ssyequb</A></LI>
12
+ <LI><A HREF="#ssyev">ssyev</A></LI>
13
+ <LI><A HREF="#ssyevd">ssyevd</A></LI>
14
+ <LI><A HREF="#ssyevr">ssyevr</A></LI>
15
+ <LI><A HREF="#ssyevx">ssyevx</A></LI>
16
+ <LI><A HREF="#ssygs2">ssygs2</A></LI>
17
+ <LI><A HREF="#ssygst">ssygst</A></LI>
18
+ <LI><A HREF="#ssygv">ssygv</A></LI>
19
+ <LI><A HREF="#ssygvd">ssygvd</A></LI>
20
+ <LI><A HREF="#ssygvx">ssygvx</A></LI>
21
+ <LI><A HREF="#ssyrfs">ssyrfs</A></LI>
22
+ <LI><A HREF="#ssyrfsx">ssyrfsx</A></LI>
23
+ <LI><A HREF="#ssysv">ssysv</A></LI>
24
+ <LI><A HREF="#ssysvx">ssysvx</A></LI>
25
+ <LI><A HREF="#ssysvxx">ssysvxx</A></LI>
26
+ <LI><A HREF="#ssyswapr">ssyswapr</A></LI>
27
+ <LI><A HREF="#ssytd2">ssytd2</A></LI>
28
+ <LI><A HREF="#ssytf2">ssytf2</A></LI>
29
+ <LI><A HREF="#ssytrd">ssytrd</A></LI>
30
+ <LI><A HREF="#ssytrf">ssytrf</A></LI>
31
+ <LI><A HREF="#ssytri">ssytri</A></LI>
32
+ <LI><A HREF="#ssytri2">ssytri2</A></LI>
33
+ <LI><A HREF="#ssytri2x">ssytri2x</A></LI>
34
+ <LI><A HREF="#ssytrs">ssytrs</A></LI>
35
+ <LI><A HREF="#ssytrs2">ssytrs2</A></LI>
36
+ </UL>
37
+
38
+ <A NAME="ssycon"></A>
39
+ <H2>ssycon</H2>
40
+ <PRE>
41
+ USAGE:
42
+ rcond, info = NumRu::Lapack.ssycon( uplo, a, ipiv, anorm, [:usage => usage, :help => help])
43
+
44
+
45
+ FORTRAN MANUAL
46
+ SUBROUTINE SSYCON( UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO )
47
+
48
+ * Purpose
49
+ * =======
50
+ *
51
+ * SSYCON estimates the reciprocal of the condition number (in the
52
+ * 1-norm) of a real symmetric matrix A using the factorization
53
+ * A = U*D*U**T or A = L*D*L**T computed by SSYTRF.
54
+ *
55
+ * An estimate is obtained for norm(inv(A)), and the reciprocal of the
56
+ * condition number is computed as RCOND = 1 / (ANORM * norm(inv(A))).
57
+ *
58
+
59
+ * Arguments
60
+ * =========
61
+ *
62
+ * UPLO (input) CHARACTER*1
63
+ * Specifies whether the details of the factorization are stored
64
+ * as an upper or lower triangular matrix.
65
+ * = 'U': Upper triangular, form is A = U*D*U**T;
66
+ * = 'L': Lower triangular, form is A = L*D*L**T.
67
+ *
68
+ * N (input) INTEGER
69
+ * The order of the matrix A. N >= 0.
70
+ *
71
+ * A (input) REAL array, dimension (LDA,N)
72
+ * The block diagonal matrix D and the multipliers used to
73
+ * obtain the factor U or L as computed by SSYTRF.
74
+ *
75
+ * LDA (input) INTEGER
76
+ * The leading dimension of the array A. LDA >= max(1,N).
77
+ *
78
+ * IPIV (input) INTEGER array, dimension (N)
79
+ * Details of the interchanges and the block structure of D
80
+ * as determined by SSYTRF.
81
+ *
82
+ * ANORM (input) REAL
83
+ * The 1-norm of the original matrix A.
84
+ *
85
+ * RCOND (output) REAL
86
+ * The reciprocal of the condition number of the matrix A,
87
+ * computed as RCOND = 1/(ANORM * AINVNM), where AINVNM is an
88
+ * estimate of the 1-norm of inv(A) computed in this routine.
89
+ *
90
+ * WORK (workspace) REAL array, dimension (2*N)
91
+ *
92
+ * IWORK (workspace) INTEGER array, dimension (N)
93
+ *
94
+ * INFO (output) INTEGER
95
+ * = 0: successful exit
96
+ * < 0: if INFO = -i, the i-th argument had an illegal value
97
+ *
98
+
99
+ * =====================================================================
100
+ *
101
+
102
+
103
+ </PRE>
104
+ <A HREF="#top">go to the page top</A>
105
+
106
+ <A NAME="ssyconv"></A>
107
+ <H2>ssyconv</H2>
108
+ <PRE>
109
+ USAGE:
110
+ info = NumRu::Lapack.ssyconv( uplo, way, a, ipiv, [:usage => usage, :help => help])
111
+
112
+
113
+ FORTRAN MANUAL
114
+ SUBROUTINE SSYCONV( UPLO, WAY, N, A, LDA, IPIV, WORK, INFO )
115
+
116
+ * Purpose
117
+ * =======
118
+ *
119
+ * SSYCONV convert A given by TRF into L and D and vice-versa.
120
+ * Get Non-diag elements of D (returned in workspace) and
121
+ * apply or reverse permutation done in TRF.
122
+ *
123
+
124
+ * Arguments
125
+ * =========
126
+ *
127
+ * UPLO (input) CHARACTER*1
128
+ * Specifies whether the details of the factorization are stored
129
+ * as an upper or lower triangular matrix.
130
+ * = 'U': Upper triangular, form is A = U*D*U**T;
131
+ * = 'L': Lower triangular, form is A = L*D*L**T.
132
+ *
133
+ * WAY (input) CHARACTER*1
134
+ * = 'C': Convert
135
+ * = 'R': Revert
136
+ *
137
+ * N (input) INTEGER
138
+ * The order of the matrix A. N >= 0.
139
+ *
140
+ * A (input) REAL array, dimension (LDA,N)
141
+ * The block diagonal matrix D and the multipliers used to
142
+ * obtain the factor U or L as computed by SSYTRF.
143
+ *
144
+ * LDA (input) INTEGER
145
+ * The leading dimension of the array A. LDA >= max(1,N).
146
+ *
147
+ * IPIV (input) INTEGER array, dimension (N)
148
+ * Details of the interchanges and the block structure of D
149
+ * as determined by SSYTRF.
150
+ *
151
+ * WORK (workspace) REAL array, dimension (N)
152
+ *
153
+ * LWORK (input) INTEGER
154
+ * The length of WORK. LWORK >=1.
155
+ * LWORK = N
156
+ *
157
+ * If LWORK = -1, then a workspace query is assumed; the routine
158
+ * only calculates the optimal size of the WORK array, returns
159
+ * this value as the first entry of the WORK array, and no error
160
+ * message related to LWORK is issued by XERBLA.
161
+ *
162
+ * INFO (output) INTEGER
163
+ * = 0: successful exit
164
+ * < 0: if INFO = -i, the i-th argument had an illegal value
165
+ *
166
+
167
+ * =====================================================================
168
+ *
169
+
170
+
171
+ </PRE>
172
+ <A HREF="#top">go to the page top</A>
173
+
174
+ <A NAME="ssyequb"></A>
175
+ <H2>ssyequb</H2>
176
+ <PRE>
177
+ USAGE:
178
+ s, scond, amax, info = NumRu::Lapack.ssyequb( uplo, a, [:usage => usage, :help => help])
179
+
180
+
181
+ FORTRAN MANUAL
182
+ SUBROUTINE SSYEQUB( UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO )
183
+
184
+ * Purpose
185
+ * =======
186
+ *
187
+ * SSYEQUB computes row and column scalings intended to equilibrate a
188
+ * symmetric matrix A and reduce its condition number
189
+ * (with respect to the two-norm). S contains the scale factors,
190
+ * S(i) = 1/sqrt(A(i,i)), chosen so that the scaled matrix B with
191
+ * elements B(i,j) = S(i)*A(i,j)*S(j) has ones on the diagonal. This
192
+ * choice of S puts the condition number of B within a factor N of the
193
+ * smallest possible condition number over all possible diagonal
194
+ * scalings.
195
+ *
196
+
197
+ * Arguments
198
+ * =========
199
+ *
200
+ * UPLO (input) CHARACTER*1
201
+ * Specifies whether the details of the factorization are stored
202
+ * as an upper or lower triangular matrix.
203
+ * = 'U': Upper triangular, form is A = U*D*U**T;
204
+ * = 'L': Lower triangular, form is A = L*D*L**T.
205
+ *
206
+ * N (input) INTEGER
207
+ * The order of the matrix A. N >= 0.
208
+ *
209
+ * A (input) REAL array, dimension (LDA,N)
210
+ * The N-by-N symmetric matrix whose scaling
211
+ * factors are to be computed. Only the diagonal elements of A
212
+ * are referenced.
213
+ *
214
+ * LDA (input) INTEGER
215
+ * The leading dimension of the array A. LDA >= max(1,N).
216
+ *
217
+ * S (output) REAL array, dimension (N)
218
+ * If INFO = 0, S contains the scale factors for A.
219
+ *
220
+ * SCOND (output) REAL
221
+ * If INFO = 0, S contains the ratio of the smallest S(i) to
222
+ * the largest S(i). If SCOND >= 0.1 and AMAX is neither too
223
+ * large nor too small, it is not worth scaling by S.
224
+ *
225
+ * AMAX (output) REAL
226
+ * Absolute value of largest matrix element. If AMAX is very
227
+ * close to overflow or very close to underflow, the matrix
228
+ * should be scaled.
229
+ *
230
+ * WORK (workspace) REAL array, dimension (3*N)
231
+ *
232
+ * INFO (output) INTEGER
233
+ * = 0: successful exit
234
+ * < 0: if INFO = -i, the i-th argument had an illegal value
235
+ * > 0: if INFO = i, the i-th diagonal element is nonpositive.
236
+ *
237
+
238
+ * Further Details
239
+ * ======= =======
240
+ *
241
+ * Reference: Livne, O.E. and Golub, G.H., "Scaling by Binormalization",
242
+ * Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004.
243
+ * DOI 10.1023/B:NUMA.0000016606.32820.69
244
+ * Tech report version: http://ruready.utah.edu/archive/papers/bin.pdf
245
+ *
246
+ * =====================================================================
247
+ *
248
+
249
+
250
+ </PRE>
251
+ <A HREF="#top">go to the page top</A>
252
+
253
+ <A NAME="ssyev"></A>
254
+ <H2>ssyev</H2>
255
+ <PRE>
256
+ USAGE:
257
+ w, work, info, a = NumRu::Lapack.ssyev( jobz, uplo, a, [:lwork => lwork, :usage => usage, :help => help])
258
+
259
+
260
+ FORTRAN MANUAL
261
+ SUBROUTINE SSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
262
+
263
+ * Purpose
264
+ * =======
265
+ *
266
+ * SSYEV computes all eigenvalues and, optionally, eigenvectors of a
267
+ * real symmetric matrix A.
268
+ *
269
+
270
+ * Arguments
271
+ * =========
272
+ *
273
+ * JOBZ (input) CHARACTER*1
274
+ * = 'N': Compute eigenvalues only;
275
+ * = 'V': Compute eigenvalues and eigenvectors.
276
+ *
277
+ * UPLO (input) CHARACTER*1
278
+ * = 'U': Upper triangle of A is stored;
279
+ * = 'L': Lower triangle of A is stored.
280
+ *
281
+ * N (input) INTEGER
282
+ * The order of the matrix A. N >= 0.
283
+ *
284
+ * A (input/output) REAL array, dimension (LDA, N)
285
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
286
+ * leading N-by-N upper triangular part of A contains the
287
+ * upper triangular part of the matrix A. If UPLO = 'L',
288
+ * the leading N-by-N lower triangular part of A contains
289
+ * the lower triangular part of the matrix A.
290
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
291
+ * orthonormal eigenvectors of the matrix A.
292
+ * If JOBZ = 'N', then on exit the lower triangle (if UPLO='L')
293
+ * or the upper triangle (if UPLO='U') of A, including the
294
+ * diagonal, is destroyed.
295
+ *
296
+ * LDA (input) INTEGER
297
+ * The leading dimension of the array A. LDA >= max(1,N).
298
+ *
299
+ * W (output) REAL array, dimension (N)
300
+ * If INFO = 0, the eigenvalues in ascending order.
301
+ *
302
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
303
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
304
+ *
305
+ * LWORK (input) INTEGER
306
+ * The length of the array WORK. LWORK >= max(1,3*N-1).
307
+ * For optimal efficiency, LWORK >= (NB+2)*N,
308
+ * where NB is the blocksize for SSYTRD returned by ILAENV.
309
+ *
310
+ * If LWORK = -1, then a workspace query is assumed; the routine
311
+ * only calculates the optimal size of the WORK array, returns
312
+ * this value as the first entry of the WORK array, and no error
313
+ * message related to LWORK is issued by XERBLA.
314
+ *
315
+ * INFO (output) INTEGER
316
+ * = 0: successful exit
317
+ * < 0: if INFO = -i, the i-th argument had an illegal value
318
+ * > 0: if INFO = i, the algorithm failed to converge; i
319
+ * off-diagonal elements of an intermediate tridiagonal
320
+ * form did not converge to zero.
321
+ *
322
+
323
+ * =====================================================================
324
+ *
325
+
326
+
327
+ </PRE>
328
+ <A HREF="#top">go to the page top</A>
329
+
330
+ <A NAME="ssyevd"></A>
331
+ <H2>ssyevd</H2>
332
+ <PRE>
333
+ USAGE:
334
+ w, work, iwork, info, a = NumRu::Lapack.ssyevd( jobz, uplo, a, [:lwork => lwork, :liwork => liwork, :usage => usage, :help => help])
335
+
336
+
337
+ FORTRAN MANUAL
338
+ SUBROUTINE SSYEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK, INFO )
339
+
340
+ * Purpose
341
+ * =======
342
+ *
343
+ * SSYEVD computes all eigenvalues and, optionally, eigenvectors of a
344
+ * real symmetric matrix A. If eigenvectors are desired, it uses a
345
+ * divide and conquer algorithm.
346
+ *
347
+ * The divide and conquer algorithm makes very mild assumptions about
348
+ * floating point arithmetic. It will work on machines with a guard
349
+ * digit in add/subtract, or on those binary machines without guard
350
+ * digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
351
+ * Cray-2. It could conceivably fail on hexadecimal or decimal machines
352
+ * without guard digits, but we know of none.
353
+ *
354
+ * Because of large use of BLAS of level 3, SSYEVD needs N**2 more
355
+ * workspace than SSYEVX.
356
+ *
357
+
358
+ * Arguments
359
+ * =========
360
+ *
361
+ * JOBZ (input) CHARACTER*1
362
+ * = 'N': Compute eigenvalues only;
363
+ * = 'V': Compute eigenvalues and eigenvectors.
364
+ *
365
+ * UPLO (input) CHARACTER*1
366
+ * = 'U': Upper triangle of A is stored;
367
+ * = 'L': Lower triangle of A is stored.
368
+ *
369
+ * N (input) INTEGER
370
+ * The order of the matrix A. N >= 0.
371
+ *
372
+ * A (input/output) REAL array, dimension (LDA, N)
373
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
374
+ * leading N-by-N upper triangular part of A contains the
375
+ * upper triangular part of the matrix A. If UPLO = 'L',
376
+ * the leading N-by-N lower triangular part of A contains
377
+ * the lower triangular part of the matrix A.
378
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
379
+ * orthonormal eigenvectors of the matrix A.
380
+ * If JOBZ = 'N', then on exit the lower triangle (if UPLO='L')
381
+ * or the upper triangle (if UPLO='U') of A, including the
382
+ * diagonal, is destroyed.
383
+ *
384
+ * LDA (input) INTEGER
385
+ * The leading dimension of the array A. LDA >= max(1,N).
386
+ *
387
+ * W (output) REAL array, dimension (N)
388
+ * If INFO = 0, the eigenvalues in ascending order.
389
+ *
390
+ * WORK (workspace/output) REAL array,
391
+ * dimension (LWORK)
392
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
393
+ *
394
+ * LWORK (input) INTEGER
395
+ * The dimension of the array WORK.
396
+ * If N <= 1, LWORK must be at least 1.
397
+ * If JOBZ = 'N' and N > 1, LWORK must be at least 2*N+1.
398
+ * If JOBZ = 'V' and N > 1, LWORK must be at least
399
+ * 1 + 6*N + 2*N**2.
400
+ *
401
+ * If LWORK = -1, then a workspace query is assumed; the routine
402
+ * only calculates the optimal sizes of the WORK and IWORK
403
+ * arrays, returns these values as the first entries of the WORK
404
+ * and IWORK arrays, and no error message related to LWORK or
405
+ * LIWORK is issued by XERBLA.
406
+ *
407
+ * IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
408
+ * On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
409
+ *
410
+ * LIWORK (input) INTEGER
411
+ * The dimension of the array IWORK.
412
+ * If N <= 1, LIWORK must be at least 1.
413
+ * If JOBZ = 'N' and N > 1, LIWORK must be at least 1.
414
+ * If JOBZ = 'V' and N > 1, LIWORK must be at least 3 + 5*N.
415
+ *
416
+ * If LIWORK = -1, then a workspace query is assumed; the
417
+ * routine only calculates the optimal sizes of the WORK and
418
+ * IWORK arrays, returns these values as the first entries of
419
+ * the WORK and IWORK arrays, and no error message related to
420
+ * LWORK or LIWORK is issued by XERBLA.
421
+ *
422
+ * INFO (output) INTEGER
423
+ * = 0: successful exit
424
+ * < 0: if INFO = -i, the i-th argument had an illegal value
425
+ * > 0: if INFO = i and JOBZ = 'N', then the algorithm failed
426
+ * to converge; i off-diagonal elements of an intermediate
427
+ * tridiagonal form did not converge to zero;
428
+ * if INFO = i and JOBZ = 'V', then the algorithm failed
429
+ * to compute an eigenvalue while working on the submatrix
430
+ * lying in rows and columns INFO/(N+1) through
431
+ * mod(INFO,N+1).
432
+ *
433
+
434
+ * Further Details
435
+ * ===============
436
+ *
437
+ * Based on contributions by
438
+ * Jeff Rutter, Computer Science Division, University of California
439
+ * at Berkeley, USA
440
+ * Modified by Francoise Tisseur, University of Tennessee.
441
+ *
442
+ * Modified description of INFO. Sven, 16 Feb 05.
443
+ * =====================================================================
444
+ *
445
+
446
+
447
+ </PRE>
448
+ <A HREF="#top">go to the page top</A>
449
+
450
+ <A NAME="ssyevr"></A>
451
+ <H2>ssyevr</H2>
452
+ <PRE>
453
+ USAGE:
454
+ m, w, z, isuppz, work, iwork, info, a = NumRu::Lapack.ssyevr( jobz, range, uplo, a, vl, vu, il, iu, abstol, liwork, [:lwork => lwork, :usage => usage, :help => help])
455
+
456
+
457
+ FORTRAN MANUAL
458
+ SUBROUTINE SSYEVR( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO )
459
+
460
+ * Purpose
461
+ * =======
462
+ *
463
+ * SSYEVR computes selected eigenvalues and, optionally, eigenvectors
464
+ * of a real symmetric matrix A. Eigenvalues and eigenvectors can be
465
+ * selected by specifying either a range of values or a range of
466
+ * indices for the desired eigenvalues.
467
+ *
468
+ * SSYEVR first reduces the matrix A to tridiagonal form T with a call
469
+ * to SSYTRD. Then, whenever possible, SSYEVR calls SSTEMR to compute
470
+ * the eigenspectrum using Relatively Robust Representations. SSTEMR
471
+ * computes eigenvalues by the dqds algorithm, while orthogonal
472
+ * eigenvectors are computed from various "good" L D L^T representations
473
+ * (also known as Relatively Robust Representations). Gram-Schmidt
474
+ * orthogonalization is avoided as far as possible. More specifically,
475
+ * the various steps of the algorithm are as follows.
476
+ *
477
+ * For each unreduced block (submatrix) of T,
478
+ * (a) Compute T - sigma I = L D L^T, so that L and D
479
+ * define all the wanted eigenvalues to high relative accuracy.
480
+ * This means that small relative changes in the entries of D and L
481
+ * cause only small relative changes in the eigenvalues and
482
+ * eigenvectors. The standard (unfactored) representation of the
483
+ * tridiagonal matrix T does not have this property in general.
484
+ * (b) Compute the eigenvalues to suitable accuracy.
485
+ * If the eigenvectors are desired, the algorithm attains full
486
+ * accuracy of the computed eigenvalues only right before
487
+ * the corresponding vectors have to be computed, see steps c) and d).
488
+ * (c) For each cluster of close eigenvalues, select a new
489
+ * shift close to the cluster, find a new factorization, and refine
490
+ * the shifted eigenvalues to suitable accuracy.
491
+ * (d) For each eigenvalue with a large enough relative separation compute
492
+ * the corresponding eigenvector by forming a rank revealing twisted
493
+ * factorization. Go back to (c) for any clusters that remain.
494
+ *
495
+ * The desired accuracy of the output can be specified by the input
496
+ * parameter ABSTOL.
497
+ *
498
+ * For more details, see SSTEMR's documentation and:
499
+ * - Inderjit S. Dhillon and Beresford N. Parlett: "Multiple representations
500
+ * to compute orthogonal eigenvectors of symmetric tridiagonal matrices,"
501
+ * Linear Algebra and its Applications, 387(1), pp. 1-28, August 2004.
502
+ * - Inderjit Dhillon and Beresford Parlett: "Orthogonal Eigenvectors and
503
+ * Relative Gaps," SIAM Journal on Matrix Analysis and Applications, Vol. 25,
504
+ * 2004. Also LAPACK Working Note 154.
505
+ * - Inderjit Dhillon: "A new O(n^2) algorithm for the symmetric
506
+ * tridiagonal eigenvalue/eigenvector problem",
507
+ * Computer Science Division Technical Report No. UCB/CSD-97-971,
508
+ * UC Berkeley, May 1997.
509
+ *
510
+ *
511
+ * Note 1 : SSYEVR calls SSTEMR when the full spectrum is requested
512
+ * on machines which conform to the ieee-754 floating point standard.
513
+ * SSYEVR calls SSTEBZ and SSTEIN on non-ieee machines and
514
+ * when partial spectrum requests are made.
515
+ *
516
+ * Normal execution of SSTEMR may create NaNs and infinities and
517
+ * hence may abort due to a floating point exception in environments
518
+ * which do not handle NaNs and infinities in the ieee standard default
519
+ * manner.
520
+ *
521
+
522
+ * Arguments
523
+ * =========
524
+ *
525
+ * JOBZ (input) CHARACTER*1
526
+ * = 'N': Compute eigenvalues only;
527
+ * = 'V': Compute eigenvalues and eigenvectors.
528
+ *
529
+ * RANGE (input) CHARACTER*1
530
+ * = 'A': all eigenvalues will be found.
531
+ * = 'V': all eigenvalues in the half-open interval (VL,VU]
532
+ * will be found.
533
+ * = 'I': the IL-th through IU-th eigenvalues will be found.
534
+ ********** For RANGE = 'V' or 'I' and IU - IL < N - 1, SSTEBZ and
535
+ ********** SSTEIN are called
536
+ *
537
+ * UPLO (input) CHARACTER*1
538
+ * = 'U': Upper triangle of A is stored;
539
+ * = 'L': Lower triangle of A is stored.
540
+ *
541
+ * N (input) INTEGER
542
+ * The order of the matrix A. N >= 0.
543
+ *
544
+ * A (input/output) REAL array, dimension (LDA, N)
545
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
546
+ * leading N-by-N upper triangular part of A contains the
547
+ * upper triangular part of the matrix A. If UPLO = 'L',
548
+ * the leading N-by-N lower triangular part of A contains
549
+ * the lower triangular part of the matrix A.
550
+ * On exit, the lower triangle (if UPLO='L') or the upper
551
+ * triangle (if UPLO='U') of A, including the diagonal, is
552
+ * destroyed.
553
+ *
554
+ * LDA (input) INTEGER
555
+ * The leading dimension of the array A. LDA >= max(1,N).
556
+ *
557
+ * VL (input) REAL
558
+ * VU (input) REAL
559
+ * If RANGE='V', the lower and upper bounds of the interval to
560
+ * be searched for eigenvalues. VL < VU.
561
+ * Not referenced if RANGE = 'A' or 'I'.
562
+ *
563
+ * IL (input) INTEGER
564
+ * IU (input) INTEGER
565
+ * If RANGE='I', the indices (in ascending order) of the
566
+ * smallest and largest eigenvalues to be returned.
567
+ * 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
568
+ * Not referenced if RANGE = 'A' or 'V'.
569
+ *
570
+ * ABSTOL (input) REAL
571
+ * The absolute error tolerance for the eigenvalues.
572
+ * An approximate eigenvalue is accepted as converged
573
+ * when it is determined to lie in an interval [a,b]
574
+ * of width less than or equal to
575
+ *
576
+ * ABSTOL + EPS * max( |a|,|b| ) ,
577
+ *
578
+ * where EPS is the machine precision. If ABSTOL is less than
579
+ * or equal to zero, then EPS*|T| will be used in its place,
580
+ * where |T| is the 1-norm of the tridiagonal matrix obtained
581
+ * by reducing A to tridiagonal form.
582
+ *
583
+ * See "Computing Small Singular Values of Bidiagonal Matrices
584
+ * with Guaranteed High Relative Accuracy," by Demmel and
585
+ * Kahan, LAPACK Working Note #3.
586
+ *
587
+ * If high relative accuracy is important, set ABSTOL to
588
+ * SLAMCH( 'Safe minimum' ). Doing so will guarantee that
589
+ * eigenvalues are computed to high relative accuracy when
590
+ * possible in future releases. The current code does not
591
+ * make any guarantees about high relative accuracy, but
592
+ * future releases will. See J. Barlow and J. Demmel,
593
+ * "Computing Accurate Eigensystems of Scaled Diagonally
594
+ * Dominant Matrices", LAPACK Working Note #7, for a discussion
595
+ * of which matrices define their eigenvalues to high relative
596
+ * accuracy.
597
+ *
598
+ * M (output) INTEGER
599
+ * The total number of eigenvalues found. 0 <= M <= N.
600
+ * If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
601
+ *
602
+ * W (output) REAL array, dimension (N)
603
+ * The first M elements contain the selected eigenvalues in
604
+ * ascending order.
605
+ *
606
+ * Z (output) REAL array, dimension (LDZ, max(1,M))
607
+ * If JOBZ = 'V', then if INFO = 0, the first M columns of Z
608
+ * contain the orthonormal eigenvectors of the matrix A
609
+ * corresponding to the selected eigenvalues, with the i-th
610
+ * column of Z holding the eigenvector associated with W(i).
611
+ * If JOBZ = 'N', then Z is not referenced.
612
+ * Note: the user must ensure that at least max(1,M) columns are
613
+ * supplied in the array Z; if RANGE = 'V', the exact value of M
614
+ * is not known in advance and an upper bound must be used.
615
+ * Supplying N columns is always safe.
616
+ *
617
+ * LDZ (input) INTEGER
618
+ * The leading dimension of the array Z. LDZ >= 1, and if
619
+ * JOBZ = 'V', LDZ >= max(1,N).
620
+ *
621
+ * ISUPPZ (output) INTEGER array, dimension ( 2*max(1,M) )
622
+ * The support of the eigenvectors in Z, i.e., the indices
623
+ * indicating the nonzero elements in Z. The i-th eigenvector
624
+ * is nonzero only in elements ISUPPZ( 2*i-1 ) through
625
+ * ISUPPZ( 2*i ).
626
+ ********** Implemented only for RANGE = 'A' or 'I' and IU - IL = N - 1
627
+ *
628
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
629
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
630
+ *
631
+ * LWORK (input) INTEGER
632
+ * The dimension of the array WORK. LWORK >= max(1,26*N).
633
+ * For optimal efficiency, LWORK >= (NB+6)*N,
634
+ * where NB is the max of the blocksize for SSYTRD and SORMTR
635
+ * returned by ILAENV.
636
+ *
637
+ * If LWORK = -1, then a workspace query is assumed; the routine
638
+ * only calculates the optimal sizes of the WORK and IWORK
639
+ * arrays, returns these values as the first entries of the WORK
640
+ * and IWORK arrays, and no error message related to LWORK or
641
+ * LIWORK is issued by XERBLA.
642
+ *
643
+ * IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
644
+ * On exit, if INFO = 0, IWORK(1) returns the optimal LWORK.
645
+ *
646
+ * LIWORK (input) INTEGER
647
+ * The dimension of the array IWORK. LIWORK >= max(1,10*N).
648
+ *
649
+ * If LIWORK = -1, then a workspace query is assumed; the
650
+ * routine only calculates the optimal sizes of the WORK and
651
+ * IWORK arrays, returns these values as the first entries of
652
+ * the WORK and IWORK arrays, and no error message related to
653
+ * LWORK or LIWORK is issued by XERBLA.
654
+ *
655
+ * INFO (output) INTEGER
656
+ * = 0: successful exit
657
+ * < 0: if INFO = -i, the i-th argument had an illegal value
658
+ * > 0: Internal error
659
+ *
660
+
661
+ * Further Details
662
+ * ===============
663
+ *
664
+ * Based on contributions by
665
+ * Inderjit Dhillon, IBM Almaden, USA
666
+ * Osni Marques, LBNL/NERSC, USA
667
+ * Ken Stanley, Computer Science Division, University of
668
+ * California at Berkeley, USA
669
+ * Jason Riedy, Computer Science Division, University of
670
+ * California at Berkeley, USA
671
+ *
672
+ * =====================================================================
673
+ *
674
+
675
+
676
+ </PRE>
677
+ <A HREF="#top">go to the page top</A>
678
+
679
+ <A NAME="ssyevx"></A>
680
+ <H2>ssyevx</H2>
681
+ <PRE>
682
+ USAGE:
683
+ m, w, z, work, ifail, info, a = NumRu::Lapack.ssyevx( jobz, range, uplo, a, vl, vu, il, iu, abstol, [:lwork => lwork, :usage => usage, :help => help])
684
+
685
+
686
+ FORTRAN MANUAL
687
+ SUBROUTINE SSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO )
688
+
689
+ * Purpose
690
+ * =======
691
+ *
692
+ * SSYEVX computes selected eigenvalues and, optionally, eigenvectors
693
+ * of a real symmetric matrix A. Eigenvalues and eigenvectors can be
694
+ * selected by specifying either a range of values or a range of indices
695
+ * for the desired eigenvalues.
696
+ *
697
+
698
+ * Arguments
699
+ * =========
700
+ *
701
+ * JOBZ (input) CHARACTER*1
702
+ * = 'N': Compute eigenvalues only;
703
+ * = 'V': Compute eigenvalues and eigenvectors.
704
+ *
705
+ * RANGE (input) CHARACTER*1
706
+ * = 'A': all eigenvalues will be found.
707
+ * = 'V': all eigenvalues in the half-open interval (VL,VU]
708
+ * will be found.
709
+ * = 'I': the IL-th through IU-th eigenvalues will be found.
710
+ *
711
+ * UPLO (input) CHARACTER*1
712
+ * = 'U': Upper triangle of A is stored;
713
+ * = 'L': Lower triangle of A is stored.
714
+ *
715
+ * N (input) INTEGER
716
+ * The order of the matrix A. N >= 0.
717
+ *
718
+ * A (input/output) REAL array, dimension (LDA, N)
719
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
720
+ * leading N-by-N upper triangular part of A contains the
721
+ * upper triangular part of the matrix A. If UPLO = 'L',
722
+ * the leading N-by-N lower triangular part of A contains
723
+ * the lower triangular part of the matrix A.
724
+ * On exit, the lower triangle (if UPLO='L') or the upper
725
+ * triangle (if UPLO='U') of A, including the diagonal, is
726
+ * destroyed.
727
+ *
728
+ * LDA (input) INTEGER
729
+ * The leading dimension of the array A. LDA >= max(1,N).
730
+ *
731
+ * VL (input) REAL
732
+ * VU (input) REAL
733
+ * If RANGE='V', the lower and upper bounds of the interval to
734
+ * be searched for eigenvalues. VL < VU.
735
+ * Not referenced if RANGE = 'A' or 'I'.
736
+ *
737
+ * IL (input) INTEGER
738
+ * IU (input) INTEGER
739
+ * If RANGE='I', the indices (in ascending order) of the
740
+ * smallest and largest eigenvalues to be returned.
741
+ * 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
742
+ * Not referenced if RANGE = 'A' or 'V'.
743
+ *
744
+ * ABSTOL (input) REAL
745
+ * The absolute error tolerance for the eigenvalues.
746
+ * An approximate eigenvalue is accepted as converged
747
+ * when it is determined to lie in an interval [a,b]
748
+ * of width less than or equal to
749
+ *
750
+ * ABSTOL + EPS * max( |a|,|b| ) ,
751
+ *
752
+ * where EPS is the machine precision. If ABSTOL is less than
753
+ * or equal to zero, then EPS*|T| will be used in its place,
754
+ * where |T| is the 1-norm of the tridiagonal matrix obtained
755
+ * by reducing A to tridiagonal form.
756
+ *
757
+ * Eigenvalues will be computed most accurately when ABSTOL is
758
+ * set to twice the underflow threshold 2*SLAMCH('S'), not zero.
759
+ * If this routine returns with INFO>0, indicating that some
760
+ * eigenvectors did not converge, try setting ABSTOL to
761
+ * 2*SLAMCH('S').
762
+ *
763
+ * See "Computing Small Singular Values of Bidiagonal Matrices
764
+ * with Guaranteed High Relative Accuracy," by Demmel and
765
+ * Kahan, LAPACK Working Note #3.
766
+ *
767
+ * M (output) INTEGER
768
+ * The total number of eigenvalues found. 0 <= M <= N.
769
+ * If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
770
+ *
771
+ * W (output) REAL array, dimension (N)
772
+ * On normal exit, the first M elements contain the selected
773
+ * eigenvalues in ascending order.
774
+ *
775
+ * Z (output) REAL array, dimension (LDZ, max(1,M))
776
+ * If JOBZ = 'V', then if INFO = 0, the first M columns of Z
777
+ * contain the orthonormal eigenvectors of the matrix A
778
+ * corresponding to the selected eigenvalues, with the i-th
779
+ * column of Z holding the eigenvector associated with W(i).
780
+ * If an eigenvector fails to converge, then that column of Z
781
+ * contains the latest approximation to the eigenvector, and the
782
+ * index of the eigenvector is returned in IFAIL.
783
+ * If JOBZ = 'N', then Z is not referenced.
784
+ * Note: the user must ensure that at least max(1,M) columns are
785
+ * supplied in the array Z; if RANGE = 'V', the exact value of M
786
+ * is not known in advance and an upper bound must be used.
787
+ *
788
+ * LDZ (input) INTEGER
789
+ * The leading dimension of the array Z. LDZ >= 1, and if
790
+ * JOBZ = 'V', LDZ >= max(1,N).
791
+ *
792
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
793
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
794
+ *
795
+ * LWORK (input) INTEGER
796
+ * The length of the array WORK. LWORK >= 1, when N <= 1;
797
+ * otherwise 8*N.
798
+ * For optimal efficiency, LWORK >= (NB+3)*N,
799
+ * where NB is the max of the blocksize for SSYTRD and SORMTR
800
+ * returned by ILAENV.
801
+ *
802
+ * If LWORK = -1, then a workspace query is assumed; the routine
803
+ * only calculates the optimal size of the WORK array, returns
804
+ * this value as the first entry of the WORK array, and no error
805
+ * message related to LWORK is issued by XERBLA.
806
+ *
807
+ * IWORK (workspace) INTEGER array, dimension (5*N)
808
+ *
809
+ * IFAIL (output) INTEGER array, dimension (N)
810
+ * If JOBZ = 'V', then if INFO = 0, the first M elements of
811
+ * IFAIL are zero. If INFO > 0, then IFAIL contains the
812
+ * indices of the eigenvectors that failed to converge.
813
+ * If JOBZ = 'N', then IFAIL is not referenced.
814
+ *
815
+ * INFO (output) INTEGER
816
+ * = 0: successful exit
817
+ * < 0: if INFO = -i, the i-th argument had an illegal value
818
+ * > 0: if INFO = i, then i eigenvectors failed to converge.
819
+ * Their indices are stored in array IFAIL.
820
+ *
821
+
822
+ * =====================================================================
823
+ *
824
+
825
+
826
+ </PRE>
827
+ <A HREF="#top">go to the page top</A>
828
+
829
+ <A NAME="ssygs2"></A>
830
+ <H2>ssygs2</H2>
831
+ <PRE>
832
+ USAGE:
833
+ info, a = NumRu::Lapack.ssygs2( itype, uplo, a, b, [:usage => usage, :help => help])
834
+
835
+
836
+ FORTRAN MANUAL
837
+ SUBROUTINE SSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
838
+
839
+ * Purpose
840
+ * =======
841
+ *
842
+ * SSYGS2 reduces a real symmetric-definite generalized eigenproblem
843
+ * to standard form.
844
+ *
845
+ * If ITYPE = 1, the problem is A*x = lambda*B*x,
846
+ * and A is overwritten by inv(U')*A*inv(U) or inv(L)*A*inv(L')
847
+ *
848
+ * If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
849
+ * B*A*x = lambda*x, and A is overwritten by U*A*U` or L'*A*L.
850
+ *
851
+ * B must have been previously factorized as U'*U or L*L' by SPOTRF.
852
+ *
853
+
854
+ * Arguments
855
+ * =========
856
+ *
857
+ * ITYPE (input) INTEGER
858
+ * = 1: compute inv(U')*A*inv(U) or inv(L)*A*inv(L');
859
+ * = 2 or 3: compute U*A*U' or L'*A*L.
860
+ *
861
+ * UPLO (input) CHARACTER*1
862
+ * Specifies whether the upper or lower triangular part of the
863
+ * symmetric matrix A is stored, and how B has been factorized.
864
+ * = 'U': Upper triangular
865
+ * = 'L': Lower triangular
866
+ *
867
+ * N (input) INTEGER
868
+ * The order of the matrices A and B. N >= 0.
869
+ *
870
+ * A (input/output) REAL array, dimension (LDA,N)
871
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
872
+ * n by n upper triangular part of A contains the upper
873
+ * triangular part of the matrix A, and the strictly lower
874
+ * triangular part of A is not referenced. If UPLO = 'L', the
875
+ * leading n by n lower triangular part of A contains the lower
876
+ * triangular part of the matrix A, and the strictly upper
877
+ * triangular part of A is not referenced.
878
+ *
879
+ * On exit, if INFO = 0, the transformed matrix, stored in the
880
+ * same format as A.
881
+ *
882
+ * LDA (input) INTEGER
883
+ * The leading dimension of the array A. LDA >= max(1,N).
884
+ *
885
+ * B (input) REAL array, dimension (LDB,N)
886
+ * The triangular factor from the Cholesky factorization of B,
887
+ * as returned by SPOTRF.
888
+ *
889
+ * LDB (input) INTEGER
890
+ * The leading dimension of the array B. LDB >= max(1,N).
891
+ *
892
+ * INFO (output) INTEGER
893
+ * = 0: successful exit.
894
+ * < 0: if INFO = -i, the i-th argument had an illegal value.
895
+ *
896
+
897
+ * =====================================================================
898
+ *
899
+
900
+
901
+ </PRE>
902
+ <A HREF="#top">go to the page top</A>
903
+
904
+ <A NAME="ssygst"></A>
905
+ <H2>ssygst</H2>
906
+ <PRE>
907
+ USAGE:
908
+ info, a = NumRu::Lapack.ssygst( itype, uplo, a, b, [:usage => usage, :help => help])
909
+
910
+
911
+ FORTRAN MANUAL
912
+ SUBROUTINE SSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
913
+
914
+ * Purpose
915
+ * =======
916
+ *
917
+ * SSYGST reduces a real symmetric-definite generalized eigenproblem
918
+ * to standard form.
919
+ *
920
+ * If ITYPE = 1, the problem is A*x = lambda*B*x,
921
+ * and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T)
922
+ *
923
+ * If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
924
+ * B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T*A*L.
925
+ *
926
+ * B must have been previously factorized as U**T*U or L*L**T by SPOTRF.
927
+ *
928
+
929
+ * Arguments
930
+ * =========
931
+ *
932
+ * ITYPE (input) INTEGER
933
+ * = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T);
934
+ * = 2 or 3: compute U*A*U**T or L**T*A*L.
935
+ *
936
+ * UPLO (input) CHARACTER*1
937
+ * = 'U': Upper triangle of A is stored and B is factored as
938
+ * U**T*U;
939
+ * = 'L': Lower triangle of A is stored and B is factored as
940
+ * L*L**T.
941
+ *
942
+ * N (input) INTEGER
943
+ * The order of the matrices A and B. N >= 0.
944
+ *
945
+ * A (input/output) REAL array, dimension (LDA,N)
946
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
947
+ * N-by-N upper triangular part of A contains the upper
948
+ * triangular part of the matrix A, and the strictly lower
949
+ * triangular part of A is not referenced. If UPLO = 'L', the
950
+ * leading N-by-N lower triangular part of A contains the lower
951
+ * triangular part of the matrix A, and the strictly upper
952
+ * triangular part of A is not referenced.
953
+ *
954
+ * On exit, if INFO = 0, the transformed matrix, stored in the
955
+ * same format as A.
956
+ *
957
+ * LDA (input) INTEGER
958
+ * The leading dimension of the array A. LDA >= max(1,N).
959
+ *
960
+ * B (input) REAL array, dimension (LDB,N)
961
+ * The triangular factor from the Cholesky factorization of B,
962
+ * as returned by SPOTRF.
963
+ *
964
+ * LDB (input) INTEGER
965
+ * The leading dimension of the array B. LDB >= max(1,N).
966
+ *
967
+ * INFO (output) INTEGER
968
+ * = 0: successful exit
969
+ * < 0: if INFO = -i, the i-th argument had an illegal value
970
+ *
971
+
972
+ * =====================================================================
973
+ *
974
+
975
+
976
+ </PRE>
977
+ <A HREF="#top">go to the page top</A>
978
+
979
+ <A NAME="ssygv"></A>
980
+ <H2>ssygv</H2>
981
+ <PRE>
982
+ USAGE:
983
+ w, work, info, a, b = NumRu::Lapack.ssygv( itype, jobz, uplo, a, b, [:lwork => lwork, :usage => usage, :help => help])
984
+
985
+
986
+ FORTRAN MANUAL
987
+ SUBROUTINE SSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO )
988
+
989
+ * Purpose
990
+ * =======
991
+ *
992
+ * SSYGV computes all the eigenvalues, and optionally, the eigenvectors
993
+ * of a real generalized symmetric-definite eigenproblem, of the form
994
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x.
995
+ * Here A and B are assumed to be symmetric and B is also
996
+ * positive definite.
997
+ *
998
+
999
+ * Arguments
1000
+ * =========
1001
+ *
1002
+ * ITYPE (input) INTEGER
1003
+ * Specifies the problem type to be solved:
1004
+ * = 1: A*x = (lambda)*B*x
1005
+ * = 2: A*B*x = (lambda)*x
1006
+ * = 3: B*A*x = (lambda)*x
1007
+ *
1008
+ * JOBZ (input) CHARACTER*1
1009
+ * = 'N': Compute eigenvalues only;
1010
+ * = 'V': Compute eigenvalues and eigenvectors.
1011
+ *
1012
+ * UPLO (input) CHARACTER*1
1013
+ * = 'U': Upper triangles of A and B are stored;
1014
+ * = 'L': Lower triangles of A and B are stored.
1015
+ *
1016
+ * N (input) INTEGER
1017
+ * The order of the matrices A and B. N >= 0.
1018
+ *
1019
+ * A (input/output) REAL array, dimension (LDA, N)
1020
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1021
+ * leading N-by-N upper triangular part of A contains the
1022
+ * upper triangular part of the matrix A. If UPLO = 'L',
1023
+ * the leading N-by-N lower triangular part of A contains
1024
+ * the lower triangular part of the matrix A.
1025
+ *
1026
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
1027
+ * matrix Z of eigenvectors. The eigenvectors are normalized
1028
+ * as follows:
1029
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1030
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1031
+ * If JOBZ = 'N', then on exit the upper triangle (if UPLO='U')
1032
+ * or the lower triangle (if UPLO='L') of A, including the
1033
+ * diagonal, is destroyed.
1034
+ *
1035
+ * LDA (input) INTEGER
1036
+ * The leading dimension of the array A. LDA >= max(1,N).
1037
+ *
1038
+ * B (input/output) REAL array, dimension (LDB, N)
1039
+ * On entry, the symmetric positive definite matrix B.
1040
+ * If UPLO = 'U', the leading N-by-N upper triangular part of B
1041
+ * contains the upper triangular part of the matrix B.
1042
+ * If UPLO = 'L', the leading N-by-N lower triangular part of B
1043
+ * contains the lower triangular part of the matrix B.
1044
+ *
1045
+ * On exit, if INFO <= N, the part of B containing the matrix is
1046
+ * overwritten by the triangular factor U or L from the Cholesky
1047
+ * factorization B = U**T*U or B = L*L**T.
1048
+ *
1049
+ * LDB (input) INTEGER
1050
+ * The leading dimension of the array B. LDB >= max(1,N).
1051
+ *
1052
+ * W (output) REAL array, dimension (N)
1053
+ * If INFO = 0, the eigenvalues in ascending order.
1054
+ *
1055
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
1056
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1057
+ *
1058
+ * LWORK (input) INTEGER
1059
+ * The length of the array WORK. LWORK >= max(1,3*N-1).
1060
+ * For optimal efficiency, LWORK >= (NB+2)*N,
1061
+ * where NB is the blocksize for SSYTRD returned by ILAENV.
1062
+ *
1063
+ * If LWORK = -1, then a workspace query is assumed; the routine
1064
+ * only calculates the optimal size of the WORK array, returns
1065
+ * this value as the first entry of the WORK array, and no error
1066
+ * message related to LWORK is issued by XERBLA.
1067
+ *
1068
+ * INFO (output) INTEGER
1069
+ * = 0: successful exit
1070
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1071
+ * > 0: SPOTRF or SSYEV returned an error code:
1072
+ * <= N: if INFO = i, SSYEV failed to converge;
1073
+ * i off-diagonal elements of an intermediate
1074
+ * tridiagonal form did not converge to zero;
1075
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1076
+ * minor of order i of B is not positive definite.
1077
+ * The factorization of B could not be completed and
1078
+ * no eigenvalues or eigenvectors were computed.
1079
+ *
1080
+
1081
+ * =====================================================================
1082
+ *
1083
+
1084
+
1085
+ </PRE>
1086
+ <A HREF="#top">go to the page top</A>
1087
+
1088
+ <A NAME="ssygvd"></A>
1089
+ <H2>ssygvd</H2>
1090
+ <PRE>
1091
+ USAGE:
1092
+ w, work, iwork, info, a, b = NumRu::Lapack.ssygvd( itype, jobz, uplo, a, b, [:lwork => lwork, :liwork => liwork, :usage => usage, :help => help])
1093
+
1094
+
1095
+ FORTRAN MANUAL
1096
+ SUBROUTINE SSYGVD( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, IWORK, LIWORK, INFO )
1097
+
1098
+ * Purpose
1099
+ * =======
1100
+ *
1101
+ * SSYGVD computes all the eigenvalues, and optionally, the eigenvectors
1102
+ * of a real generalized symmetric-definite eigenproblem, of the form
1103
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and
1104
+ * B are assumed to be symmetric and B is also positive definite.
1105
+ * If eigenvectors are desired, it uses a divide and conquer algorithm.
1106
+ *
1107
+ * The divide and conquer algorithm makes very mild assumptions about
1108
+ * floating point arithmetic. It will work on machines with a guard
1109
+ * digit in add/subtract, or on those binary machines without guard
1110
+ * digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
1111
+ * Cray-2. It could conceivably fail on hexadecimal or decimal machines
1112
+ * without guard digits, but we know of none.
1113
+ *
1114
+
1115
+ * Arguments
1116
+ * =========
1117
+ *
1118
+ * ITYPE (input) INTEGER
1119
+ * Specifies the problem type to be solved:
1120
+ * = 1: A*x = (lambda)*B*x
1121
+ * = 2: A*B*x = (lambda)*x
1122
+ * = 3: B*A*x = (lambda)*x
1123
+ *
1124
+ * JOBZ (input) CHARACTER*1
1125
+ * = 'N': Compute eigenvalues only;
1126
+ * = 'V': Compute eigenvalues and eigenvectors.
1127
+ *
1128
+ * UPLO (input) CHARACTER*1
1129
+ * = 'U': Upper triangles of A and B are stored;
1130
+ * = 'L': Lower triangles of A and B are stored.
1131
+ *
1132
+ * N (input) INTEGER
1133
+ * The order of the matrices A and B. N >= 0.
1134
+ *
1135
+ * A (input/output) REAL array, dimension (LDA, N)
1136
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1137
+ * leading N-by-N upper triangular part of A contains the
1138
+ * upper triangular part of the matrix A. If UPLO = 'L',
1139
+ * the leading N-by-N lower triangular part of A contains
1140
+ * the lower triangular part of the matrix A.
1141
+ *
1142
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
1143
+ * matrix Z of eigenvectors. The eigenvectors are normalized
1144
+ * as follows:
1145
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1146
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1147
+ * If JOBZ = 'N', then on exit the upper triangle (if UPLO='U')
1148
+ * or the lower triangle (if UPLO='L') of A, including the
1149
+ * diagonal, is destroyed.
1150
+ *
1151
+ * LDA (input) INTEGER
1152
+ * The leading dimension of the array A. LDA >= max(1,N).
1153
+ *
1154
+ * B (input/output) REAL array, dimension (LDB, N)
1155
+ * On entry, the symmetric matrix B. If UPLO = 'U', the
1156
+ * leading N-by-N upper triangular part of B contains the
1157
+ * upper triangular part of the matrix B. If UPLO = 'L',
1158
+ * the leading N-by-N lower triangular part of B contains
1159
+ * the lower triangular part of the matrix B.
1160
+ *
1161
+ * On exit, if INFO <= N, the part of B containing the matrix is
1162
+ * overwritten by the triangular factor U or L from the Cholesky
1163
+ * factorization B = U**T*U or B = L*L**T.
1164
+ *
1165
+ * LDB (input) INTEGER
1166
+ * The leading dimension of the array B. LDB >= max(1,N).
1167
+ *
1168
+ * W (output) REAL array, dimension (N)
1169
+ * If INFO = 0, the eigenvalues in ascending order.
1170
+ *
1171
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
1172
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1173
+ *
1174
+ * LWORK (input) INTEGER
1175
+ * The dimension of the array WORK.
1176
+ * If N <= 1, LWORK >= 1.
1177
+ * If JOBZ = 'N' and N > 1, LWORK >= 2*N+1.
1178
+ * If JOBZ = 'V' and N > 1, LWORK >= 1 + 6*N + 2*N**2.
1179
+ *
1180
+ * If LWORK = -1, then a workspace query is assumed; the routine
1181
+ * only calculates the optimal sizes of the WORK and IWORK
1182
+ * arrays, returns these values as the first entries of the WORK
1183
+ * and IWORK arrays, and no error message related to LWORK or
1184
+ * LIWORK is issued by XERBLA.
1185
+ *
1186
+ * IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
1187
+ * On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
1188
+ *
1189
+ * LIWORK (input) INTEGER
1190
+ * The dimension of the array IWORK.
1191
+ * If N <= 1, LIWORK >= 1.
1192
+ * If JOBZ = 'N' and N > 1, LIWORK >= 1.
1193
+ * If JOBZ = 'V' and N > 1, LIWORK >= 3 + 5*N.
1194
+ *
1195
+ * If LIWORK = -1, then a workspace query is assumed; the
1196
+ * routine only calculates the optimal sizes of the WORK and
1197
+ * IWORK arrays, returns these values as the first entries of
1198
+ * the WORK and IWORK arrays, and no error message related to
1199
+ * LWORK or LIWORK is issued by XERBLA.
1200
+ *
1201
+ * INFO (output) INTEGER
1202
+ * = 0: successful exit
1203
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1204
+ * > 0: SPOTRF or SSYEVD returned an error code:
1205
+ * <= N: if INFO = i and JOBZ = 'N', then the algorithm
1206
+ * failed to converge; i off-diagonal elements of an
1207
+ * intermediate tridiagonal form did not converge to
1208
+ * zero;
1209
+ * if INFO = i and JOBZ = 'V', then the algorithm
1210
+ * failed to compute an eigenvalue while working on
1211
+ * the submatrix lying in rows and columns INFO/(N+1)
1212
+ * through mod(INFO,N+1);
1213
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1214
+ * minor of order i of B is not positive definite.
1215
+ * The factorization of B could not be completed and
1216
+ * no eigenvalues or eigenvectors were computed.
1217
+ *
1218
+
1219
+ * Further Details
1220
+ * ===============
1221
+ *
1222
+ * Based on contributions by
1223
+ * Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
1224
+ *
1225
+ * Modified so that no backsubstitution is performed if SSYEVD fails to
1226
+ * converge (NEIG in old code could be greater than N causing out of
1227
+ * bounds reference to A - reported by Ralf Meyer). Also corrected the
1228
+ * description of INFO and the test on ITYPE. Sven, 16 Feb 05.
1229
+ * =====================================================================
1230
+ *
1231
+
1232
+
1233
+ </PRE>
1234
+ <A HREF="#top">go to the page top</A>
1235
+
1236
+ <A NAME="ssygvx"></A>
1237
+ <H2>ssygvx</H2>
1238
+ <PRE>
1239
+ USAGE:
1240
+ m, w, z, work, ifail, info, a, b = NumRu::Lapack.ssygvx( itype, jobz, range, uplo, a, b, ldb, vl, vu, il, iu, abstol, [:lwork => lwork, :usage => usage, :help => help])
1241
+
1242
+
1243
+ FORTRAN MANUAL
1244
+ SUBROUTINE SSYGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO )
1245
+
1246
+ * Purpose
1247
+ * =======
1248
+ *
1249
+ * SSYGVX computes selected eigenvalues, and optionally, eigenvectors
1250
+ * of a real generalized symmetric-definite eigenproblem, of the form
1251
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A
1252
+ * and B are assumed to be symmetric and B is also positive definite.
1253
+ * Eigenvalues and eigenvectors can be selected by specifying either a
1254
+ * range of values or a range of indices for the desired eigenvalues.
1255
+ *
1256
+
1257
+ * Arguments
1258
+ * =========
1259
+ *
1260
+ * ITYPE (input) INTEGER
1261
+ * Specifies the problem type to be solved:
1262
+ * = 1: A*x = (lambda)*B*x
1263
+ * = 2: A*B*x = (lambda)*x
1264
+ * = 3: B*A*x = (lambda)*x
1265
+ *
1266
+ * JOBZ (input) CHARACTER*1
1267
+ * = 'N': Compute eigenvalues only;
1268
+ * = 'V': Compute eigenvalues and eigenvectors.
1269
+ *
1270
+ * RANGE (input) CHARACTER*1
1271
+ * = 'A': all eigenvalues will be found.
1272
+ * = 'V': all eigenvalues in the half-open interval (VL,VU]
1273
+ * will be found.
1274
+ * = 'I': the IL-th through IU-th eigenvalues will be found.
1275
+ *
1276
+ * UPLO (input) CHARACTER*1
1277
+ * = 'U': Upper triangle of A and B are stored;
1278
+ * = 'L': Lower triangle of A and B are stored.
1279
+ *
1280
+ * N (input) INTEGER
1281
+ * The order of the matrix pencil (A,B). N >= 0.
1282
+ *
1283
+ * A (input/output) REAL array, dimension (LDA, N)
1284
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1285
+ * leading N-by-N upper triangular part of A contains the
1286
+ * upper triangular part of the matrix A. If UPLO = 'L',
1287
+ * the leading N-by-N lower triangular part of A contains
1288
+ * the lower triangular part of the matrix A.
1289
+ *
1290
+ * On exit, the lower triangle (if UPLO='L') or the upper
1291
+ * triangle (if UPLO='U') of A, including the diagonal, is
1292
+ * destroyed.
1293
+ *
1294
+ * LDA (input) INTEGER
1295
+ * The leading dimension of the array A. LDA >= max(1,N).
1296
+ *
1297
+ * B (input/output) REAL array, dimension (LDA, N)
1298
+ * On entry, the symmetric matrix B. If UPLO = 'U', the
1299
+ * leading N-by-N upper triangular part of B contains the
1300
+ * upper triangular part of the matrix B. If UPLO = 'L',
1301
+ * the leading N-by-N lower triangular part of B contains
1302
+ * the lower triangular part of the matrix B.
1303
+ *
1304
+ * On exit, if INFO <= N, the part of B containing the matrix is
1305
+ * overwritten by the triangular factor U or L from the Cholesky
1306
+ * factorization B = U**T*U or B = L*L**T.
1307
+ *
1308
+ * LDB (input) INTEGER
1309
+ * The leading dimension of the array B. LDB >= max(1,N).
1310
+ *
1311
+ * VL (input) REAL
1312
+ * VU (input) REAL
1313
+ * If RANGE='V', the lower and upper bounds of the interval to
1314
+ * be searched for eigenvalues. VL < VU.
1315
+ * Not referenced if RANGE = 'A' or 'I'.
1316
+ *
1317
+ * IL (input) INTEGER
1318
+ * IU (input) INTEGER
1319
+ * If RANGE='I', the indices (in ascending order) of the
1320
+ * smallest and largest eigenvalues to be returned.
1321
+ * 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
1322
+ * Not referenced if RANGE = 'A' or 'V'.
1323
+ *
1324
+ * ABSTOL (input) REAL
1325
+ * The absolute error tolerance for the eigenvalues.
1326
+ * An approximate eigenvalue is accepted as converged
1327
+ * when it is determined to lie in an interval [a,b]
1328
+ * of width less than or equal to
1329
+ *
1330
+ * ABSTOL + EPS * max( |a|,|b| ) ,
1331
+ *
1332
+ * where EPS is the machine precision. If ABSTOL is less than
1333
+ * or equal to zero, then EPS*|T| will be used in its place,
1334
+ * where |T| is the 1-norm of the tridiagonal matrix obtained
1335
+ * by reducing A to tridiagonal form.
1336
+ *
1337
+ * Eigenvalues will be computed most accurately when ABSTOL is
1338
+ * set to twice the underflow threshold 2*DLAMCH('S'), not zero.
1339
+ * If this routine returns with INFO>0, indicating that some
1340
+ * eigenvectors did not converge, try setting ABSTOL to
1341
+ * 2*SLAMCH('S').
1342
+ *
1343
+ * M (output) INTEGER
1344
+ * The total number of eigenvalues found. 0 <= M <= N.
1345
+ * If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
1346
+ *
1347
+ * W (output) REAL array, dimension (N)
1348
+ * On normal exit, the first M elements contain the selected
1349
+ * eigenvalues in ascending order.
1350
+ *
1351
+ * Z (output) REAL array, dimension (LDZ, max(1,M))
1352
+ * If JOBZ = 'N', then Z is not referenced.
1353
+ * If JOBZ = 'V', then if INFO = 0, the first M columns of Z
1354
+ * contain the orthonormal eigenvectors of the matrix A
1355
+ * corresponding to the selected eigenvalues, with the i-th
1356
+ * column of Z holding the eigenvector associated with W(i).
1357
+ * The eigenvectors are normalized as follows:
1358
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1359
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1360
+ *
1361
+ * If an eigenvector fails to converge, then that column of Z
1362
+ * contains the latest approximation to the eigenvector, and the
1363
+ * index of the eigenvector is returned in IFAIL.
1364
+ * Note: the user must ensure that at least max(1,M) columns are
1365
+ * supplied in the array Z; if RANGE = 'V', the exact value of M
1366
+ * is not known in advance and an upper bound must be used.
1367
+ *
1368
+ * LDZ (input) INTEGER
1369
+ * The leading dimension of the array Z. LDZ >= 1, and if
1370
+ * JOBZ = 'V', LDZ >= max(1,N).
1371
+ *
1372
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
1373
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1374
+ *
1375
+ * LWORK (input) INTEGER
1376
+ * The length of the array WORK. LWORK >= max(1,8*N).
1377
+ * For optimal efficiency, LWORK >= (NB+3)*N,
1378
+ * where NB is the blocksize for SSYTRD returned by ILAENV.
1379
+ *
1380
+ * If LWORK = -1, then a workspace query is assumed; the routine
1381
+ * only calculates the optimal size of the WORK array, returns
1382
+ * this value as the first entry of the WORK array, and no error
1383
+ * message related to LWORK is issued by XERBLA.
1384
+ *
1385
+ * IWORK (workspace) INTEGER array, dimension (5*N)
1386
+ *
1387
+ * IFAIL (output) INTEGER array, dimension (N)
1388
+ * If JOBZ = 'V', then if INFO = 0, the first M elements of
1389
+ * IFAIL are zero. If INFO > 0, then IFAIL contains the
1390
+ * indices of the eigenvectors that failed to converge.
1391
+ * If JOBZ = 'N', then IFAIL is not referenced.
1392
+ *
1393
+ * INFO (output) INTEGER
1394
+ * = 0: successful exit
1395
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1396
+ * > 0: SPOTRF or SSYEVX returned an error code:
1397
+ * <= N: if INFO = i, SSYEVX failed to converge;
1398
+ * i eigenvectors failed to converge. Their indices
1399
+ * are stored in array IFAIL.
1400
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1401
+ * minor of order i of B is not positive definite.
1402
+ * The factorization of B could not be completed and
1403
+ * no eigenvalues or eigenvectors were computed.
1404
+ *
1405
+
1406
+ * Further Details
1407
+ * ===============
1408
+ *
1409
+ * Based on contributions by
1410
+ * Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
1411
+ *
1412
+ * =====================================================================
1413
+ *
1414
+
1415
+
1416
+ </PRE>
1417
+ <A HREF="#top">go to the page top</A>
1418
+
1419
+ <A NAME="ssyrfs"></A>
1420
+ <H2>ssyrfs</H2>
1421
+ <PRE>
1422
+ USAGE:
1423
+ ferr, berr, info, x = NumRu::Lapack.ssyrfs( uplo, a, af, ipiv, b, x, [:usage => usage, :help => help])
1424
+
1425
+
1426
+ FORTRAN MANUAL
1427
+ SUBROUTINE SSYRFS( UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO )
1428
+
1429
+ * Purpose
1430
+ * =======
1431
+ *
1432
+ * SSYRFS improves the computed solution to a system of linear
1433
+ * equations when the coefficient matrix is symmetric indefinite, and
1434
+ * provides error bounds and backward error estimates for the solution.
1435
+ *
1436
+
1437
+ * Arguments
1438
+ * =========
1439
+ *
1440
+ * UPLO (input) CHARACTER*1
1441
+ * = 'U': Upper triangle of A is stored;
1442
+ * = 'L': Lower triangle of A is stored.
1443
+ *
1444
+ * N (input) INTEGER
1445
+ * The order of the matrix A. N >= 0.
1446
+ *
1447
+ * NRHS (input) INTEGER
1448
+ * The number of right hand sides, i.e., the number of columns
1449
+ * of the matrices B and X. NRHS >= 0.
1450
+ *
1451
+ * A (input) REAL array, dimension (LDA,N)
1452
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
1453
+ * upper triangular part of A contains the upper triangular part
1454
+ * of the matrix A, and the strictly lower triangular part of A
1455
+ * is not referenced. If UPLO = 'L', the leading N-by-N lower
1456
+ * triangular part of A contains the lower triangular part of
1457
+ * the matrix A, and the strictly upper triangular part of A is
1458
+ * not referenced.
1459
+ *
1460
+ * LDA (input) INTEGER
1461
+ * The leading dimension of the array A. LDA >= max(1,N).
1462
+ *
1463
+ * AF (input) REAL array, dimension (LDAF,N)
1464
+ * The factored form of the matrix A. AF contains the block
1465
+ * diagonal matrix D and the multipliers used to obtain the
1466
+ * factor U or L from the factorization A = U*D*U**T or
1467
+ * A = L*D*L**T as computed by SSYTRF.
1468
+ *
1469
+ * LDAF (input) INTEGER
1470
+ * The leading dimension of the array AF. LDAF >= max(1,N).
1471
+ *
1472
+ * IPIV (input) INTEGER array, dimension (N)
1473
+ * Details of the interchanges and the block structure of D
1474
+ * as determined by SSYTRF.
1475
+ *
1476
+ * B (input) REAL array, dimension (LDB,NRHS)
1477
+ * The right hand side matrix B.
1478
+ *
1479
+ * LDB (input) INTEGER
1480
+ * The leading dimension of the array B. LDB >= max(1,N).
1481
+ *
1482
+ * X (input/output) REAL array, dimension (LDX,NRHS)
1483
+ * On entry, the solution matrix X, as computed by SSYTRS.
1484
+ * On exit, the improved solution matrix X.
1485
+ *
1486
+ * LDX (input) INTEGER
1487
+ * The leading dimension of the array X. LDX >= max(1,N).
1488
+ *
1489
+ * FERR (output) REAL array, dimension (NRHS)
1490
+ * The estimated forward error bound for each solution vector
1491
+ * X(j) (the j-th column of the solution matrix X).
1492
+ * If XTRUE is the true solution corresponding to X(j), FERR(j)
1493
+ * is an estimated upper bound for the magnitude of the largest
1494
+ * element in (X(j) - XTRUE) divided by the magnitude of the
1495
+ * largest element in X(j). The estimate is as reliable as
1496
+ * the estimate for RCOND, and is almost always a slight
1497
+ * overestimate of the true error.
1498
+ *
1499
+ * BERR (output) REAL array, dimension (NRHS)
1500
+ * The componentwise relative backward error of each solution
1501
+ * vector X(j) (i.e., the smallest relative change in
1502
+ * any element of A or B that makes X(j) an exact solution).
1503
+ *
1504
+ * WORK (workspace) REAL array, dimension (3*N)
1505
+ *
1506
+ * IWORK (workspace) INTEGER array, dimension (N)
1507
+ *
1508
+ * INFO (output) INTEGER
1509
+ * = 0: successful exit
1510
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1511
+ *
1512
+ * Internal Parameters
1513
+ * ===================
1514
+ *
1515
+ * ITMAX is the maximum number of steps of iterative refinement.
1516
+ *
1517
+
1518
+ * =====================================================================
1519
+ *
1520
+
1521
+
1522
+ </PRE>
1523
+ <A HREF="#top">go to the page top</A>
1524
+
1525
+ <A NAME="ssyrfsx"></A>
1526
+ <H2>ssyrfsx</H2>
1527
+ <PRE>
1528
+ USAGE:
1529
+ rcond, berr, err_bnds_norm, err_bnds_comp, info, s, x, params = NumRu::Lapack.ssyrfsx( uplo, equed, a, af, ipiv, s, b, x, params, [:usage => usage, :help => help])
1530
+
1531
+
1532
+ FORTRAN MANUAL
1533
+ SUBROUTINE SSYRFSX( UPLO, EQUED, N, NRHS, A, LDA, AF, LDAF, IPIV, S, B, LDB, X, LDX, RCOND, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO )
1534
+
1535
+ * Purpose
1536
+ * =======
1537
+ *
1538
+ * SSYRFSX improves the computed solution to a system of linear
1539
+ * equations when the coefficient matrix is symmetric indefinite, and
1540
+ * provides error bounds and backward error estimates for the
1541
+ * solution. In addition to normwise error bound, the code provides
1542
+ * maximum componentwise error bound if possible. See comments for
1543
+ * ERR_BNDS_NORM and ERR_BNDS_COMP for details of the error bounds.
1544
+ *
1545
+ * The original system of linear equations may have been equilibrated
1546
+ * before calling this routine, as described by arguments EQUED and S
1547
+ * below. In this case, the solution and error bounds returned are
1548
+ * for the original unequilibrated system.
1549
+ *
1550
+
1551
+ * Arguments
1552
+ * =========
1553
+ *
1554
+ * Some optional parameters are bundled in the PARAMS array. These
1555
+ * settings determine how refinement is performed, but often the
1556
+ * defaults are acceptable. If the defaults are acceptable, users
1557
+ * can pass NPARAMS = 0 which prevents the source code from accessing
1558
+ * the PARAMS argument.
1559
+ *
1560
+ * UPLO (input) CHARACTER*1
1561
+ * = 'U': Upper triangle of A is stored;
1562
+ * = 'L': Lower triangle of A is stored.
1563
+ *
1564
+ * EQUED (input) CHARACTER*1
1565
+ * Specifies the form of equilibration that was done to A
1566
+ * before calling this routine. This is needed to compute
1567
+ * the solution and error bounds correctly.
1568
+ * = 'N': No equilibration
1569
+ * = 'Y': Both row and column equilibration, i.e., A has been
1570
+ * replaced by diag(S) * A * diag(S).
1571
+ * The right hand side B has been changed accordingly.
1572
+ *
1573
+ * N (input) INTEGER
1574
+ * The order of the matrix A. N >= 0.
1575
+ *
1576
+ * NRHS (input) INTEGER
1577
+ * The number of right hand sides, i.e., the number of columns
1578
+ * of the matrices B and X. NRHS >= 0.
1579
+ *
1580
+ * A (input) REAL array, dimension (LDA,N)
1581
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
1582
+ * upper triangular part of A contains the upper triangular
1583
+ * part of the matrix A, and the strictly lower triangular
1584
+ * part of A is not referenced. If UPLO = 'L', the leading
1585
+ * N-by-N lower triangular part of A contains the lower
1586
+ * triangular part of the matrix A, and the strictly upper
1587
+ * triangular part of A is not referenced.
1588
+ *
1589
+ * LDA (input) INTEGER
1590
+ * The leading dimension of the array A. LDA >= max(1,N).
1591
+ *
1592
+ * AF (input) REAL array, dimension (LDAF,N)
1593
+ * The factored form of the matrix A. AF contains the block
1594
+ * diagonal matrix D and the multipliers used to obtain the
1595
+ * factor U or L from the factorization A = U*D*U**T or A =
1596
+ * L*D*L**T as computed by SSYTRF.
1597
+ *
1598
+ * LDAF (input) INTEGER
1599
+ * The leading dimension of the array AF. LDAF >= max(1,N).
1600
+ *
1601
+ * IPIV (input) INTEGER array, dimension (N)
1602
+ * Details of the interchanges and the block structure of D
1603
+ * as determined by SSYTRF.
1604
+ *
1605
+ * S (input or output) REAL array, dimension (N)
1606
+ * The scale factors for A. If EQUED = 'Y', A is multiplied on
1607
+ * the left and right by diag(S). S is an input argument if FACT =
1608
+ * 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED
1609
+ * = 'Y', each element of S must be positive. If S is output, each
1610
+ * element of S is a power of the radix. If S is input, each element
1611
+ * of S should be a power of the radix to ensure a reliable solution
1612
+ * and error estimates. Scaling by powers of the radix does not cause
1613
+ * rounding errors unless the result underflows or overflows.
1614
+ * Rounding errors during scaling lead to refining with a matrix that
1615
+ * is not equivalent to the input matrix, producing error estimates
1616
+ * that may not be reliable.
1617
+ *
1618
+ * B (input) REAL array, dimension (LDB,NRHS)
1619
+ * The right hand side matrix B.
1620
+ *
1621
+ * LDB (input) INTEGER
1622
+ * The leading dimension of the array B. LDB >= max(1,N).
1623
+ *
1624
+ * X (input/output) REAL array, dimension (LDX,NRHS)
1625
+ * On entry, the solution matrix X, as computed by SGETRS.
1626
+ * On exit, the improved solution matrix X.
1627
+ *
1628
+ * LDX (input) INTEGER
1629
+ * The leading dimension of the array X. LDX >= max(1,N).
1630
+ *
1631
+ * RCOND (output) REAL
1632
+ * Reciprocal scaled condition number. This is an estimate of the
1633
+ * reciprocal Skeel condition number of the matrix A after
1634
+ * equilibration (if done). If this is less than the machine
1635
+ * precision (in particular, if it is zero), the matrix is singular
1636
+ * to working precision. Note that the error may still be small even
1637
+ * if this number is very small and the matrix appears ill-
1638
+ * conditioned.
1639
+ *
1640
+ * BERR (output) REAL array, dimension (NRHS)
1641
+ * Componentwise relative backward error. This is the
1642
+ * componentwise relative backward error of each solution vector X(j)
1643
+ * (i.e., the smallest relative change in any element of A or B that
1644
+ * makes X(j) an exact solution).
1645
+ *
1646
+ * N_ERR_BNDS (input) INTEGER
1647
+ * Number of error bounds to return for each right hand side
1648
+ * and each type (normwise or componentwise). See ERR_BNDS_NORM and
1649
+ * ERR_BNDS_COMP below.
1650
+ *
1651
+ * ERR_BNDS_NORM (output) REAL array, dimension (NRHS, N_ERR_BNDS)
1652
+ * For each right-hand side, this array contains information about
1653
+ * various error bounds and condition numbers corresponding to the
1654
+ * normwise relative error, which is defined as follows:
1655
+ *
1656
+ * Normwise relative error in the ith solution vector:
1657
+ * max_j (abs(XTRUE(j,i) - X(j,i)))
1658
+ * ------------------------------
1659
+ * max_j abs(X(j,i))
1660
+ *
1661
+ * The array is indexed by the type of error information as described
1662
+ * below. There currently are up to three pieces of information
1663
+ * returned.
1664
+ *
1665
+ * The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
1666
+ * right-hand side.
1667
+ *
1668
+ * The second index in ERR_BNDS_NORM(:,err) contains the following
1669
+ * three fields:
1670
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
1671
+ * reciprocal condition number is less than the threshold
1672
+ * sqrt(n) * slamch('Epsilon').
1673
+ *
1674
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
1675
+ * almost certainly within a factor of 10 of the true error
1676
+ * so long as the next entry is greater than the threshold
1677
+ * sqrt(n) * slamch('Epsilon'). This error bound should only
1678
+ * be trusted if the previous boolean is true.
1679
+ *
1680
+ * err = 3 Reciprocal condition number: Estimated normwise
1681
+ * reciprocal condition number. Compared with the threshold
1682
+ * sqrt(n) * slamch('Epsilon') to determine if the error
1683
+ * estimate is "guaranteed". These reciprocal condition
1684
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
1685
+ * appropriately scaled matrix Z.
1686
+ * Let Z = S*A, where S scales each row by a power of the
1687
+ * radix so all absolute row sums of Z are approximately 1.
1688
+ *
1689
+ * See Lapack Working Note 165 for further details and extra
1690
+ * cautions.
1691
+ *
1692
+ * ERR_BNDS_COMP (output) REAL array, dimension (NRHS, N_ERR_BNDS)
1693
+ * For each right-hand side, this array contains information about
1694
+ * various error bounds and condition numbers corresponding to the
1695
+ * componentwise relative error, which is defined as follows:
1696
+ *
1697
+ * Componentwise relative error in the ith solution vector:
1698
+ * abs(XTRUE(j,i) - X(j,i))
1699
+ * max_j ----------------------
1700
+ * abs(X(j,i))
1701
+ *
1702
+ * The array is indexed by the right-hand side i (on which the
1703
+ * componentwise relative error depends), and the type of error
1704
+ * information as described below. There currently are up to three
1705
+ * pieces of information returned for each right-hand side. If
1706
+ * componentwise accuracy is not requested (PARAMS(3) = 0.0), then
1707
+ * ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
1708
+ * the first (:,N_ERR_BNDS) entries are returned.
1709
+ *
1710
+ * The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
1711
+ * right-hand side.
1712
+ *
1713
+ * The second index in ERR_BNDS_COMP(:,err) contains the following
1714
+ * three fields:
1715
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
1716
+ * reciprocal condition number is less than the threshold
1717
+ * sqrt(n) * slamch('Epsilon').
1718
+ *
1719
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
1720
+ * almost certainly within a factor of 10 of the true error
1721
+ * so long as the next entry is greater than the threshold
1722
+ * sqrt(n) * slamch('Epsilon'). This error bound should only
1723
+ * be trusted if the previous boolean is true.
1724
+ *
1725
+ * err = 3 Reciprocal condition number: Estimated componentwise
1726
+ * reciprocal condition number. Compared with the threshold
1727
+ * sqrt(n) * slamch('Epsilon') to determine if the error
1728
+ * estimate is "guaranteed". These reciprocal condition
1729
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
1730
+ * appropriately scaled matrix Z.
1731
+ * Let Z = S*(A*diag(x)), where x is the solution for the
1732
+ * current right-hand side and S scales each row of
1733
+ * A*diag(x) by a power of the radix so all absolute row
1734
+ * sums of Z are approximately 1.
1735
+ *
1736
+ * See Lapack Working Note 165 for further details and extra
1737
+ * cautions.
1738
+ *
1739
+ * NPARAMS (input) INTEGER
1740
+ * Specifies the number of parameters set in PARAMS. If .LE. 0, the
1741
+ * PARAMS array is never referenced and default values are used.
1742
+ *
1743
+ * PARAMS (input / output) REAL array, dimension NPARAMS
1744
+ * Specifies algorithm parameters. If an entry is .LT. 0.0, then
1745
+ * that entry will be filled with default value used for that
1746
+ * parameter. Only positions up to NPARAMS are accessed; defaults
1747
+ * are used for higher-numbered parameters.
1748
+ *
1749
+ * PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
1750
+ * refinement or not.
1751
+ * Default: 1.0
1752
+ * = 0.0 : No refinement is performed, and no error bounds are
1753
+ * computed.
1754
+ * = 1.0 : Use the double-precision refinement algorithm,
1755
+ * possibly with doubled-single computations if the
1756
+ * compilation environment does not support DOUBLE
1757
+ * PRECISION.
1758
+ * (other values are reserved for future use)
1759
+ *
1760
+ * PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual
1761
+ * computations allowed for refinement.
1762
+ * Default: 10
1763
+ * Aggressive: Set to 100 to permit convergence using approximate
1764
+ * factorizations or factorizations other than LU. If
1765
+ * the factorization uses a technique other than
1766
+ * Gaussian elimination, the guarantees in
1767
+ * err_bnds_norm and err_bnds_comp may no longer be
1768
+ * trustworthy.
1769
+ *
1770
+ * PARAMS(LA_LINRX_CWISE_I = 3) : Flag determining if the code
1771
+ * will attempt to find a solution with small componentwise
1772
+ * relative error in the double-precision algorithm. Positive
1773
+ * is true, 0.0 is false.
1774
+ * Default: 1.0 (attempt componentwise convergence)
1775
+ *
1776
+ * WORK (workspace) REAL array, dimension (4*N)
1777
+ *
1778
+ * IWORK (workspace) INTEGER array, dimension (N)
1779
+ *
1780
+ * INFO (output) INTEGER
1781
+ * = 0: Successful exit. The solution to every right-hand side is
1782
+ * guaranteed.
1783
+ * < 0: If INFO = -i, the i-th argument had an illegal value
1784
+ * > 0 and <= N: U(INFO,INFO) is exactly zero. The factorization
1785
+ * has been completed, but the factor U is exactly singular, so
1786
+ * the solution and error bounds could not be computed. RCOND = 0
1787
+ * is returned.
1788
+ * = N+J: The solution corresponding to the Jth right-hand side is
1789
+ * not guaranteed. The solutions corresponding to other right-
1790
+ * hand sides K with K > J may not be guaranteed as well, but
1791
+ * only the first such right-hand side is reported. If a small
1792
+ * componentwise error is not requested (PARAMS(3) = 0.0) then
1793
+ * the Jth right-hand side is the first with a normwise error
1794
+ * bound that is not guaranteed (the smallest J such
1795
+ * that ERR_BNDS_NORM(J,1) = 0.0). By default (PARAMS(3) = 1.0)
1796
+ * the Jth right-hand side is the first with either a normwise or
1797
+ * componentwise error bound that is not guaranteed (the smallest
1798
+ * J such that either ERR_BNDS_NORM(J,1) = 0.0 or
1799
+ * ERR_BNDS_COMP(J,1) = 0.0). See the definition of
1800
+ * ERR_BNDS_NORM(:,1) and ERR_BNDS_COMP(:,1). To get information
1801
+ * about all of the right-hand sides check ERR_BNDS_NORM or
1802
+ * ERR_BNDS_COMP.
1803
+ *
1804
+
1805
+ * ==================================================================
1806
+ *
1807
+
1808
+
1809
+ </PRE>
1810
+ <A HREF="#top">go to the page top</A>
1811
+
1812
+ <A NAME="ssysv"></A>
1813
+ <H2>ssysv</H2>
1814
+ <PRE>
1815
+ USAGE:
1816
+ ipiv, work, info, a, b = NumRu::Lapack.ssysv( uplo, a, b, [:lwork => lwork, :usage => usage, :help => help])
1817
+
1818
+
1819
+ FORTRAN MANUAL
1820
+ SUBROUTINE SSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO )
1821
+
1822
+ * Purpose
1823
+ * =======
1824
+ *
1825
+ * SSYSV computes the solution to a real system of linear equations
1826
+ * A * X = B,
1827
+ * where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
1828
+ * matrices.
1829
+ *
1830
+ * The diagonal pivoting method is used to factor A as
1831
+ * A = U * D * U**T, if UPLO = 'U', or
1832
+ * A = L * D * L**T, if UPLO = 'L',
1833
+ * where U (or L) is a product of permutation and unit upper (lower)
1834
+ * triangular matrices, and D is symmetric and block diagonal with
1835
+ * 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then
1836
+ * used to solve the system of equations A * X = B.
1837
+ *
1838
+
1839
+ * Arguments
1840
+ * =========
1841
+ *
1842
+ * UPLO (input) CHARACTER*1
1843
+ * = 'U': Upper triangle of A is stored;
1844
+ * = 'L': Lower triangle of A is stored.
1845
+ *
1846
+ * N (input) INTEGER
1847
+ * The number of linear equations, i.e., the order of the
1848
+ * matrix A. N >= 0.
1849
+ *
1850
+ * NRHS (input) INTEGER
1851
+ * The number of right hand sides, i.e., the number of columns
1852
+ * of the matrix B. NRHS >= 0.
1853
+ *
1854
+ * A (input/output) REAL array, dimension (LDA,N)
1855
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
1856
+ * N-by-N upper triangular part of A contains the upper
1857
+ * triangular part of the matrix A, and the strictly lower
1858
+ * triangular part of A is not referenced. If UPLO = 'L', the
1859
+ * leading N-by-N lower triangular part of A contains the lower
1860
+ * triangular part of the matrix A, and the strictly upper
1861
+ * triangular part of A is not referenced.
1862
+ *
1863
+ * On exit, if INFO = 0, the block diagonal matrix D and the
1864
+ * multipliers used to obtain the factor U or L from the
1865
+ * factorization A = U*D*U**T or A = L*D*L**T as computed by
1866
+ * SSYTRF.
1867
+ *
1868
+ * LDA (input) INTEGER
1869
+ * The leading dimension of the array A. LDA >= max(1,N).
1870
+ *
1871
+ * IPIV (output) INTEGER array, dimension (N)
1872
+ * Details of the interchanges and the block structure of D, as
1873
+ * determined by SSYTRF. If IPIV(k) > 0, then rows and columns
1874
+ * k and IPIV(k) were interchanged, and D(k,k) is a 1-by-1
1875
+ * diagonal block. If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0,
1876
+ * then rows and columns k-1 and -IPIV(k) were interchanged and
1877
+ * D(k-1:k,k-1:k) is a 2-by-2 diagonal block. If UPLO = 'L' and
1878
+ * IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and
1879
+ * -IPIV(k) were interchanged and D(k:k+1,k:k+1) is a 2-by-2
1880
+ * diagonal block.
1881
+ *
1882
+ * B (input/output) REAL array, dimension (LDB,NRHS)
1883
+ * On entry, the N-by-NRHS right hand side matrix B.
1884
+ * On exit, if INFO = 0, the N-by-NRHS solution matrix X.
1885
+ *
1886
+ * LDB (input) INTEGER
1887
+ * The leading dimension of the array B. LDB >= max(1,N).
1888
+ *
1889
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
1890
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1891
+ *
1892
+ * LWORK (input) INTEGER
1893
+ * The length of WORK. LWORK >= 1, and for best performance
1894
+ * LWORK >= max(1,N*NB), where NB is the optimal blocksize for
1895
+ * SSYTRF.
1896
+ *
1897
+ * If LWORK = -1, then a workspace query is assumed; the routine
1898
+ * only calculates the optimal size of the WORK array, returns
1899
+ * this value as the first entry of the WORK array, and no error
1900
+ * message related to LWORK is issued by XERBLA.
1901
+ *
1902
+ * INFO (output) INTEGER
1903
+ * = 0: successful exit
1904
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1905
+ * > 0: if INFO = i, D(i,i) is exactly zero. The factorization
1906
+ * has been completed, but the block diagonal matrix D is
1907
+ * exactly singular, so the solution could not be computed.
1908
+ *
1909
+
1910
+ * =====================================================================
1911
+ *
1912
+ * .. Local Scalars ..
1913
+ LOGICAL LQUERY
1914
+ INTEGER LWKOPT, NB
1915
+ * ..
1916
+ * .. External Functions ..
1917
+ LOGICAL LSAME
1918
+ INTEGER ILAENV
1919
+ EXTERNAL ILAENV, LSAME
1920
+ * ..
1921
+ * .. External Subroutines ..
1922
+ EXTERNAL SSYTRF, SSYTRS2, XERBLA
1923
+ * ..
1924
+ * .. Intrinsic Functions ..
1925
+ INTRINSIC MAX
1926
+ * ..
1927
+
1928
+
1929
+ </PRE>
1930
+ <A HREF="#top">go to the page top</A>
1931
+
1932
+ <A NAME="ssysvx"></A>
1933
+ <H2>ssysvx</H2>
1934
+ <PRE>
1935
+ USAGE:
1936
+ x, rcond, ferr, berr, work, info, af, ipiv = NumRu::Lapack.ssysvx( fact, uplo, a, af, ipiv, b, [:lwork => lwork, :usage => usage, :help => help])
1937
+
1938
+
1939
+ FORTRAN MANUAL
1940
+ SUBROUTINE SSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, IWORK, INFO )
1941
+
1942
+ * Purpose
1943
+ * =======
1944
+ *
1945
+ * SSYSVX uses the diagonal pivoting factorization to compute the
1946
+ * solution to a real system of linear equations A * X = B,
1947
+ * where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
1948
+ * matrices.
1949
+ *
1950
+ * Error bounds on the solution and a condition estimate are also
1951
+ * provided.
1952
+ *
1953
+ * Description
1954
+ * ===========
1955
+ *
1956
+ * The following steps are performed:
1957
+ *
1958
+ * 1. If FACT = 'N', the diagonal pivoting method is used to factor A.
1959
+ * The form of the factorization is
1960
+ * A = U * D * U**T, if UPLO = 'U', or
1961
+ * A = L * D * L**T, if UPLO = 'L',
1962
+ * where U (or L) is a product of permutation and unit upper (lower)
1963
+ * triangular matrices, and D is symmetric and block diagonal with
1964
+ * 1-by-1 and 2-by-2 diagonal blocks.
1965
+ *
1966
+ * 2. If some D(i,i)=0, so that D is exactly singular, then the routine
1967
+ * returns with INFO = i. Otherwise, the factored form of A is used
1968
+ * to estimate the condition number of the matrix A. If the
1969
+ * reciprocal of the condition number is less than machine precision,
1970
+ * INFO = N+1 is returned as a warning, but the routine still goes on
1971
+ * to solve for X and compute error bounds as described below.
1972
+ *
1973
+ * 3. The system of equations is solved for X using the factored form
1974
+ * of A.
1975
+ *
1976
+ * 4. Iterative refinement is applied to improve the computed solution
1977
+ * matrix and calculate error bounds and backward error estimates
1978
+ * for it.
1979
+ *
1980
+
1981
+ * Arguments
1982
+ * =========
1983
+ *
1984
+ * FACT (input) CHARACTER*1
1985
+ * Specifies whether or not the factored form of A has been
1986
+ * supplied on entry.
1987
+ * = 'F': On entry, AF and IPIV contain the factored form of
1988
+ * A. AF and IPIV will not be modified.
1989
+ * = 'N': The matrix A will be copied to AF and factored.
1990
+ *
1991
+ * UPLO (input) CHARACTER*1
1992
+ * = 'U': Upper triangle of A is stored;
1993
+ * = 'L': Lower triangle of A is stored.
1994
+ *
1995
+ * N (input) INTEGER
1996
+ * The number of linear equations, i.e., the order of the
1997
+ * matrix A. N >= 0.
1998
+ *
1999
+ * NRHS (input) INTEGER
2000
+ * The number of right hand sides, i.e., the number of columns
2001
+ * of the matrices B and X. NRHS >= 0.
2002
+ *
2003
+ * A (input) REAL array, dimension (LDA,N)
2004
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
2005
+ * upper triangular part of A contains the upper triangular part
2006
+ * of the matrix A, and the strictly lower triangular part of A
2007
+ * is not referenced. If UPLO = 'L', the leading N-by-N lower
2008
+ * triangular part of A contains the lower triangular part of
2009
+ * the matrix A, and the strictly upper triangular part of A is
2010
+ * not referenced.
2011
+ *
2012
+ * LDA (input) INTEGER
2013
+ * The leading dimension of the array A. LDA >= max(1,N).
2014
+ *
2015
+ * AF (input or output) REAL array, dimension (LDAF,N)
2016
+ * If FACT = 'F', then AF is an input argument and on entry
2017
+ * contains the block diagonal matrix D and the multipliers used
2018
+ * to obtain the factor U or L from the factorization
2019
+ * A = U*D*U**T or A = L*D*L**T as computed by SSYTRF.
2020
+ *
2021
+ * If FACT = 'N', then AF is an output argument and on exit
2022
+ * returns the block diagonal matrix D and the multipliers used
2023
+ * to obtain the factor U or L from the factorization
2024
+ * A = U*D*U**T or A = L*D*L**T.
2025
+ *
2026
+ * LDAF (input) INTEGER
2027
+ * The leading dimension of the array AF. LDAF >= max(1,N).
2028
+ *
2029
+ * IPIV (input or output) INTEGER array, dimension (N)
2030
+ * If FACT = 'F', then IPIV is an input argument and on entry
2031
+ * contains details of the interchanges and the block structure
2032
+ * of D, as determined by SSYTRF.
2033
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
2034
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
2035
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
2036
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
2037
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
2038
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
2039
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2040
+ *
2041
+ * If FACT = 'N', then IPIV is an output argument and on exit
2042
+ * contains details of the interchanges and the block structure
2043
+ * of D, as determined by SSYTRF.
2044
+ *
2045
+ * B (input) REAL array, dimension (LDB,NRHS)
2046
+ * The N-by-NRHS right hand side matrix B.
2047
+ *
2048
+ * LDB (input) INTEGER
2049
+ * The leading dimension of the array B. LDB >= max(1,N).
2050
+ *
2051
+ * X (output) REAL array, dimension (LDX,NRHS)
2052
+ * If INFO = 0 or INFO = N+1, the N-by-NRHS solution matrix X.
2053
+ *
2054
+ * LDX (input) INTEGER
2055
+ * The leading dimension of the array X. LDX >= max(1,N).
2056
+ *
2057
+ * RCOND (output) REAL
2058
+ * The estimate of the reciprocal condition number of the matrix
2059
+ * A. If RCOND is less than the machine precision (in
2060
+ * particular, if RCOND = 0), the matrix is singular to working
2061
+ * precision. This condition is indicated by a return code of
2062
+ * INFO > 0.
2063
+ *
2064
+ * FERR (output) REAL array, dimension (NRHS)
2065
+ * The estimated forward error bound for each solution vector
2066
+ * X(j) (the j-th column of the solution matrix X).
2067
+ * If XTRUE is the true solution corresponding to X(j), FERR(j)
2068
+ * is an estimated upper bound for the magnitude of the largest
2069
+ * element in (X(j) - XTRUE) divided by the magnitude of the
2070
+ * largest element in X(j). The estimate is as reliable as
2071
+ * the estimate for RCOND, and is almost always a slight
2072
+ * overestimate of the true error.
2073
+ *
2074
+ * BERR (output) REAL array, dimension (NRHS)
2075
+ * The componentwise relative backward error of each solution
2076
+ * vector X(j) (i.e., the smallest relative change in
2077
+ * any element of A or B that makes X(j) an exact solution).
2078
+ *
2079
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
2080
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
2081
+ *
2082
+ * LWORK (input) INTEGER
2083
+ * The length of WORK. LWORK >= max(1,3*N), and for best
2084
+ * performance, when FACT = 'N', LWORK >= max(1,3*N,N*NB), where
2085
+ * NB is the optimal blocksize for SSYTRF.
2086
+ *
2087
+ * If LWORK = -1, then a workspace query is assumed; the routine
2088
+ * only calculates the optimal size of the WORK array, returns
2089
+ * this value as the first entry of the WORK array, and no error
2090
+ * message related to LWORK is issued by XERBLA.
2091
+ *
2092
+ * IWORK (workspace) INTEGER array, dimension (N)
2093
+ *
2094
+ * INFO (output) INTEGER
2095
+ * = 0: successful exit
2096
+ * < 0: if INFO = -i, the i-th argument had an illegal value
2097
+ * > 0: if INFO = i, and i is
2098
+ * <= N: D(i,i) is exactly zero. The factorization
2099
+ * has been completed but the factor D is exactly
2100
+ * singular, so the solution and error bounds could
2101
+ * not be computed. RCOND = 0 is returned.
2102
+ * = N+1: D is nonsingular, but RCOND is less than machine
2103
+ * precision, meaning that the matrix is singular
2104
+ * to working precision. Nevertheless, the
2105
+ * solution and error bounds are computed because
2106
+ * there are a number of situations where the
2107
+ * computed solution can be more accurate than the
2108
+ * value of RCOND would suggest.
2109
+ *
2110
+
2111
+ * =====================================================================
2112
+ *
2113
+
2114
+
2115
+ </PRE>
2116
+ <A HREF="#top">go to the page top</A>
2117
+
2118
+ <A NAME="ssysvxx"></A>
2119
+ <H2>ssysvxx</H2>
2120
+ <PRE>
2121
+ USAGE:
2122
+ x, rcond, rpvgrw, berr, err_bnds_norm, err_bnds_comp, info, a, af, ipiv, equed, s, b, params = NumRu::Lapack.ssysvxx( fact, uplo, a, af, ipiv, equed, s, b, params, [:usage => usage, :help => help])
2123
+
2124
+
2125
+ FORTRAN MANUAL
2126
+ SUBROUTINE SSYSVXX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, EQUED, S, B, LDB, X, LDX, RCOND, RPVGRW, BERR, N_ERR_BNDS, ERR_BNDS_NORM, ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, INFO )
2127
+
2128
+ * Purpose
2129
+ * =======
2130
+ *
2131
+ * SSYSVXX uses the diagonal pivoting factorization to compute the
2132
+ * solution to a real system of linear equations A * X = B, where A
2133
+ * is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
2134
+ *
2135
+ * If requested, both normwise and maximum componentwise error bounds
2136
+ * are returned. SSYSVXX will return a solution with a tiny
2137
+ * guaranteed error (O(eps) where eps is the working machine
2138
+ * precision) unless the matrix is very ill-conditioned, in which
2139
+ * case a warning is returned. Relevant condition numbers also are
2140
+ * calculated and returned.
2141
+ *
2142
+ * SSYSVXX accepts user-provided factorizations and equilibration
2143
+ * factors; see the definitions of the FACT and EQUED options.
2144
+ * Solving with refinement and using a factorization from a previous
2145
+ * SSYSVXX call will also produce a solution with either O(eps)
2146
+ * errors or warnings, but we cannot make that claim for general
2147
+ * user-provided factorizations and equilibration factors if they
2148
+ * differ from what SSYSVXX would itself produce.
2149
+ *
2150
+ * Description
2151
+ * ===========
2152
+ *
2153
+ * The following steps are performed:
2154
+ *
2155
+ * 1. If FACT = 'E', real scaling factors are computed to equilibrate
2156
+ * the system:
2157
+ *
2158
+ * diag(S)*A*diag(S) *inv(diag(S))*X = diag(S)*B
2159
+ *
2160
+ * Whether or not the system will be equilibrated depends on the
2161
+ * scaling of the matrix A, but if equilibration is used, A is
2162
+ * overwritten by diag(S)*A*diag(S) and B by diag(S)*B.
2163
+ *
2164
+ * 2. If FACT = 'N' or 'E', the LU decomposition is used to factor
2165
+ * the matrix A (after equilibration if FACT = 'E') as
2166
+ *
2167
+ * A = U * D * U**T, if UPLO = 'U', or
2168
+ * A = L * D * L**T, if UPLO = 'L',
2169
+ *
2170
+ * where U (or L) is a product of permutation and unit upper (lower)
2171
+ * triangular matrices, and D is symmetric and block diagonal with
2172
+ * 1-by-1 and 2-by-2 diagonal blocks.
2173
+ *
2174
+ * 3. If some D(i,i)=0, so that D is exactly singular, then the
2175
+ * routine returns with INFO = i. Otherwise, the factored form of A
2176
+ * is used to estimate the condition number of the matrix A (see
2177
+ * argument RCOND). If the reciprocal of the condition number is
2178
+ * less than machine precision, the routine still goes on to solve
2179
+ * for X and compute error bounds as described below.
2180
+ *
2181
+ * 4. The system of equations is solved for X using the factored form
2182
+ * of A.
2183
+ *
2184
+ * 5. By default (unless PARAMS(LA_LINRX_ITREF_I) is set to zero),
2185
+ * the routine will use iterative refinement to try to get a small
2186
+ * error and error bounds. Refinement calculates the residual to at
2187
+ * least twice the working precision.
2188
+ *
2189
+ * 6. If equilibration was used, the matrix X is premultiplied by
2190
+ * diag(R) so that it solves the original system before
2191
+ * equilibration.
2192
+ *
2193
+
2194
+ * Arguments
2195
+ * =========
2196
+ *
2197
+ * Some optional parameters are bundled in the PARAMS array. These
2198
+ * settings determine how refinement is performed, but often the
2199
+ * defaults are acceptable. If the defaults are acceptable, users
2200
+ * can pass NPARAMS = 0 which prevents the source code from accessing
2201
+ * the PARAMS argument.
2202
+ *
2203
+ * FACT (input) CHARACTER*1
2204
+ * Specifies whether or not the factored form of the matrix A is
2205
+ * supplied on entry, and if not, whether the matrix A should be
2206
+ * equilibrated before it is factored.
2207
+ * = 'F': On entry, AF and IPIV contain the factored form of A.
2208
+ * If EQUED is not 'N', the matrix A has been
2209
+ * equilibrated with scaling factors given by S.
2210
+ * A, AF, and IPIV are not modified.
2211
+ * = 'N': The matrix A will be copied to AF and factored.
2212
+ * = 'E': The matrix A will be equilibrated if necessary, then
2213
+ * copied to AF and factored.
2214
+ *
2215
+ * UPLO (input) CHARACTER*1
2216
+ * = 'U': Upper triangle of A is stored;
2217
+ * = 'L': Lower triangle of A is stored.
2218
+ *
2219
+ * N (input) INTEGER
2220
+ * The number of linear equations, i.e., the order of the
2221
+ * matrix A. N >= 0.
2222
+ *
2223
+ * NRHS (input) INTEGER
2224
+ * The number of right hand sides, i.e., the number of columns
2225
+ * of the matrices B and X. NRHS >= 0.
2226
+ *
2227
+ * A (input/output) REAL array, dimension (LDA,N)
2228
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
2229
+ * upper triangular part of A contains the upper triangular
2230
+ * part of the matrix A, and the strictly lower triangular
2231
+ * part of A is not referenced. If UPLO = 'L', the leading
2232
+ * N-by-N lower triangular part of A contains the lower
2233
+ * triangular part of the matrix A, and the strictly upper
2234
+ * triangular part of A is not referenced.
2235
+ *
2236
+ * On exit, if FACT = 'E' and EQUED = 'Y', A is overwritten by
2237
+ * diag(S)*A*diag(S).
2238
+ *
2239
+ * LDA (input) INTEGER
2240
+ * The leading dimension of the array A. LDA >= max(1,N).
2241
+ *
2242
+ * AF (input or output) REAL array, dimension (LDAF,N)
2243
+ * If FACT = 'F', then AF is an input argument and on entry
2244
+ * contains the block diagonal matrix D and the multipliers
2245
+ * used to obtain the factor U or L from the factorization A =
2246
+ * U*D*U**T or A = L*D*L**T as computed by SSYTRF.
2247
+ *
2248
+ * If FACT = 'N', then AF is an output argument and on exit
2249
+ * returns the block diagonal matrix D and the multipliers
2250
+ * used to obtain the factor U or L from the factorization A =
2251
+ * U*D*U**T or A = L*D*L**T.
2252
+ *
2253
+ * LDAF (input) INTEGER
2254
+ * The leading dimension of the array AF. LDAF >= max(1,N).
2255
+ *
2256
+ * IPIV (input or output) INTEGER array, dimension (N)
2257
+ * If FACT = 'F', then IPIV is an input argument and on entry
2258
+ * contains details of the interchanges and the block
2259
+ * structure of D, as determined by SSYTRF. If IPIV(k) > 0,
2260
+ * then rows and columns k and IPIV(k) were interchanged and
2261
+ * D(k,k) is a 1-by-1 diagonal block. If UPLO = 'U' and
2262
+ * IPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and
2263
+ * -IPIV(k) were interchanged and D(k-1:k,k-1:k) is a 2-by-2
2264
+ * diagonal block. If UPLO = 'L' and IPIV(k) = IPIV(k+1) < 0,
2265
+ * then rows and columns k+1 and -IPIV(k) were interchanged
2266
+ * and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2267
+ *
2268
+ * If FACT = 'N', then IPIV is an output argument and on exit
2269
+ * contains details of the interchanges and the block
2270
+ * structure of D, as determined by SSYTRF.
2271
+ *
2272
+ * EQUED (input or output) CHARACTER*1
2273
+ * Specifies the form of equilibration that was done.
2274
+ * = 'N': No equilibration (always true if FACT = 'N').
2275
+ * = 'Y': Both row and column equilibration, i.e., A has been
2276
+ * replaced by diag(S) * A * diag(S).
2277
+ * EQUED is an input argument if FACT = 'F'; otherwise, it is an
2278
+ * output argument.
2279
+ *
2280
+ * S (input or output) REAL array, dimension (N)
2281
+ * The scale factors for A. If EQUED = 'Y', A is multiplied on
2282
+ * the left and right by diag(S). S is an input argument if FACT =
2283
+ * 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED
2284
+ * = 'Y', each element of S must be positive. If S is output, each
2285
+ * element of S is a power of the radix. If S is input, each element
2286
+ * of S should be a power of the radix to ensure a reliable solution
2287
+ * and error estimates. Scaling by powers of the radix does not cause
2288
+ * rounding errors unless the result underflows or overflows.
2289
+ * Rounding errors during scaling lead to refining with a matrix that
2290
+ * is not equivalent to the input matrix, producing error estimates
2291
+ * that may not be reliable.
2292
+ *
2293
+ * B (input/output) REAL array, dimension (LDB,NRHS)
2294
+ * On entry, the N-by-NRHS right hand side matrix B.
2295
+ * On exit,
2296
+ * if EQUED = 'N', B is not modified;
2297
+ * if EQUED = 'Y', B is overwritten by diag(S)*B;
2298
+ *
2299
+ * LDB (input) INTEGER
2300
+ * The leading dimension of the array B. LDB >= max(1,N).
2301
+ *
2302
+ * X (output) REAL array, dimension (LDX,NRHS)
2303
+ * If INFO = 0, the N-by-NRHS solution matrix X to the original
2304
+ * system of equations. Note that A and B are modified on exit if
2305
+ * EQUED .ne. 'N', and the solution to the equilibrated system is
2306
+ * inv(diag(S))*X.
2307
+ *
2308
+ * LDX (input) INTEGER
2309
+ * The leading dimension of the array X. LDX >= max(1,N).
2310
+ *
2311
+ * RCOND (output) REAL
2312
+ * Reciprocal scaled condition number. This is an estimate of the
2313
+ * reciprocal Skeel condition number of the matrix A after
2314
+ * equilibration (if done). If this is less than the machine
2315
+ * precision (in particular, if it is zero), the matrix is singular
2316
+ * to working precision. Note that the error may still be small even
2317
+ * if this number is very small and the matrix appears ill-
2318
+ * conditioned.
2319
+ *
2320
+ * RPVGRW (output) REAL
2321
+ * Reciprocal pivot growth. On exit, this contains the reciprocal
2322
+ * pivot growth factor norm(A)/norm(U). The "max absolute element"
2323
+ * norm is used. If this is much less than 1, then the stability of
2324
+ * the LU factorization of the (equilibrated) matrix A could be poor.
2325
+ * This also means that the solution X, estimated condition numbers,
2326
+ * and error bounds could be unreliable. If factorization fails with
2327
+ * 0<INFO<=N, then this contains the reciprocal pivot growth factor
2328
+ * for the leading INFO columns of A.
2329
+ *
2330
+ * BERR (output) REAL array, dimension (NRHS)
2331
+ * Componentwise relative backward error. This is the
2332
+ * componentwise relative backward error of each solution vector X(j)
2333
+ * (i.e., the smallest relative change in any element of A or B that
2334
+ * makes X(j) an exact solution).
2335
+ *
2336
+ * N_ERR_BNDS (input) INTEGER
2337
+ * Number of error bounds to return for each right hand side
2338
+ * and each type (normwise or componentwise). See ERR_BNDS_NORM and
2339
+ * ERR_BNDS_COMP below.
2340
+ *
2341
+ * ERR_BNDS_NORM (output) REAL array, dimension (NRHS, N_ERR_BNDS)
2342
+ * For each right-hand side, this array contains information about
2343
+ * various error bounds and condition numbers corresponding to the
2344
+ * normwise relative error, which is defined as follows:
2345
+ *
2346
+ * Normwise relative error in the ith solution vector:
2347
+ * max_j (abs(XTRUE(j,i) - X(j,i)))
2348
+ * ------------------------------
2349
+ * max_j abs(X(j,i))
2350
+ *
2351
+ * The array is indexed by the type of error information as described
2352
+ * below. There currently are up to three pieces of information
2353
+ * returned.
2354
+ *
2355
+ * The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
2356
+ * right-hand side.
2357
+ *
2358
+ * The second index in ERR_BNDS_NORM(:,err) contains the following
2359
+ * three fields:
2360
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
2361
+ * reciprocal condition number is less than the threshold
2362
+ * sqrt(n) * slamch('Epsilon').
2363
+ *
2364
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
2365
+ * almost certainly within a factor of 10 of the true error
2366
+ * so long as the next entry is greater than the threshold
2367
+ * sqrt(n) * slamch('Epsilon'). This error bound should only
2368
+ * be trusted if the previous boolean is true.
2369
+ *
2370
+ * err = 3 Reciprocal condition number: Estimated normwise
2371
+ * reciprocal condition number. Compared with the threshold
2372
+ * sqrt(n) * slamch('Epsilon') to determine if the error
2373
+ * estimate is "guaranteed". These reciprocal condition
2374
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
2375
+ * appropriately scaled matrix Z.
2376
+ * Let Z = S*A, where S scales each row by a power of the
2377
+ * radix so all absolute row sums of Z are approximately 1.
2378
+ *
2379
+ * See Lapack Working Note 165 for further details and extra
2380
+ * cautions.
2381
+ *
2382
+ * ERR_BNDS_COMP (output) REAL array, dimension (NRHS, N_ERR_BNDS)
2383
+ * For each right-hand side, this array contains information about
2384
+ * various error bounds and condition numbers corresponding to the
2385
+ * componentwise relative error, which is defined as follows:
2386
+ *
2387
+ * Componentwise relative error in the ith solution vector:
2388
+ * abs(XTRUE(j,i) - X(j,i))
2389
+ * max_j ----------------------
2390
+ * abs(X(j,i))
2391
+ *
2392
+ * The array is indexed by the right-hand side i (on which the
2393
+ * componentwise relative error depends), and the type of error
2394
+ * information as described below. There currently are up to three
2395
+ * pieces of information returned for each right-hand side. If
2396
+ * componentwise accuracy is not requested (PARAMS(3) = 0.0), then
2397
+ * ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
2398
+ * the first (:,N_ERR_BNDS) entries are returned.
2399
+ *
2400
+ * The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
2401
+ * right-hand side.
2402
+ *
2403
+ * The second index in ERR_BNDS_COMP(:,err) contains the following
2404
+ * three fields:
2405
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
2406
+ * reciprocal condition number is less than the threshold
2407
+ * sqrt(n) * slamch('Epsilon').
2408
+ *
2409
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
2410
+ * almost certainly within a factor of 10 of the true error
2411
+ * so long as the next entry is greater than the threshold
2412
+ * sqrt(n) * slamch('Epsilon'). This error bound should only
2413
+ * be trusted if the previous boolean is true.
2414
+ *
2415
+ * err = 3 Reciprocal condition number: Estimated componentwise
2416
+ * reciprocal condition number. Compared with the threshold
2417
+ * sqrt(n) * slamch('Epsilon') to determine if the error
2418
+ * estimate is "guaranteed". These reciprocal condition
2419
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
2420
+ * appropriately scaled matrix Z.
2421
+ * Let Z = S*(A*diag(x)), where x is the solution for the
2422
+ * current right-hand side and S scales each row of
2423
+ * A*diag(x) by a power of the radix so all absolute row
2424
+ * sums of Z are approximately 1.
2425
+ *
2426
+ * See Lapack Working Note 165 for further details and extra
2427
+ * cautions.
2428
+ *
2429
+ * NPARAMS (input) INTEGER
2430
+ * Specifies the number of parameters set in PARAMS. If .LE. 0, the
2431
+ * PARAMS array is never referenced and default values are used.
2432
+ *
2433
+ * PARAMS (input / output) REAL array, dimension NPARAMS
2434
+ * Specifies algorithm parameters. If an entry is .LT. 0.0, then
2435
+ * that entry will be filled with default value used for that
2436
+ * parameter. Only positions up to NPARAMS are accessed; defaults
2437
+ * are used for higher-numbered parameters.
2438
+ *
2439
+ * PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
2440
+ * refinement or not.
2441
+ * Default: 1.0
2442
+ * = 0.0 : No refinement is performed, and no error bounds are
2443
+ * computed.
2444
+ * = 1.0 : Use the double-precision refinement algorithm,
2445
+ * possibly with doubled-single computations if the
2446
+ * compilation environment does not support DOUBLE
2447
+ * PRECISION.
2448
+ * (other values are reserved for future use)
2449
+ *
2450
+ * PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual
2451
+ * computations allowed for refinement.
2452
+ * Default: 10
2453
+ * Aggressive: Set to 100 to permit convergence using approximate
2454
+ * factorizations or factorizations other than LU. If
2455
+ * the factorization uses a technique other than
2456
+ * Gaussian elimination, the guarantees in
2457
+ * err_bnds_norm and err_bnds_comp may no longer be
2458
+ * trustworthy.
2459
+ *
2460
+ * PARAMS(LA_LINRX_CWISE_I = 3) : Flag determining if the code
2461
+ * will attempt to find a solution with small componentwise
2462
+ * relative error in the double-precision algorithm. Positive
2463
+ * is true, 0.0 is false.
2464
+ * Default: 1.0 (attempt componentwise convergence)
2465
+ *
2466
+ * WORK (workspace) REAL array, dimension (4*N)
2467
+ *
2468
+ * IWORK (workspace) INTEGER array, dimension (N)
2469
+ *
2470
+ * INFO (output) INTEGER
2471
+ * = 0: Successful exit. The solution to every right-hand side is
2472
+ * guaranteed.
2473
+ * < 0: If INFO = -i, the i-th argument had an illegal value
2474
+ * > 0 and <= N: U(INFO,INFO) is exactly zero. The factorization
2475
+ * has been completed, but the factor U is exactly singular, so
2476
+ * the solution and error bounds could not be computed. RCOND = 0
2477
+ * is returned.
2478
+ * = N+J: The solution corresponding to the Jth right-hand side is
2479
+ * not guaranteed. The solutions corresponding to other right-
2480
+ * hand sides K with K > J may not be guaranteed as well, but
2481
+ * only the first such right-hand side is reported. If a small
2482
+ * componentwise error is not requested (PARAMS(3) = 0.0) then
2483
+ * the Jth right-hand side is the first with a normwise error
2484
+ * bound that is not guaranteed (the smallest J such
2485
+ * that ERR_BNDS_NORM(J,1) = 0.0). By default (PARAMS(3) = 1.0)
2486
+ * the Jth right-hand side is the first with either a normwise or
2487
+ * componentwise error bound that is not guaranteed (the smallest
2488
+ * J such that either ERR_BNDS_NORM(J,1) = 0.0 or
2489
+ * ERR_BNDS_COMP(J,1) = 0.0). See the definition of
2490
+ * ERR_BNDS_NORM(:,1) and ERR_BNDS_COMP(:,1). To get information
2491
+ * about all of the right-hand sides check ERR_BNDS_NORM or
2492
+ * ERR_BNDS_COMP.
2493
+ *
2494
+
2495
+ * ==================================================================
2496
+ *
2497
+
2498
+
2499
+ </PRE>
2500
+ <A HREF="#top">go to the page top</A>
2501
+
2502
+ <A NAME="ssyswapr"></A>
2503
+ <H2>ssyswapr</H2>
2504
+ <PRE>
2505
+ USAGE:
2506
+ a = NumRu::Lapack.ssyswapr( uplo, a, i1, i2, [:usage => usage, :help => help])
2507
+
2508
+
2509
+ FORTRAN MANUAL
2510
+ SUBROUTINE SSYSWAPR( UPLO, N, A, I1, I2)
2511
+
2512
+ * Purpose
2513
+ * =======
2514
+ *
2515
+ * SSYSWAPR applies an elementary permutation on the rows and the columns of
2516
+ * a symmetric matrix.
2517
+ *
2518
+
2519
+ * Arguments
2520
+ * =========
2521
+ *
2522
+ * UPLO (input) CHARACTER*1
2523
+ * Specifies whether the details of the factorization are stored
2524
+ * as an upper or lower triangular matrix.
2525
+ * = 'U': Upper triangular, form is A = U*D*U**T;
2526
+ * = 'L': Lower triangular, form is A = L*D*L**T.
2527
+ *
2528
+ * N (input) INTEGER
2529
+ * The order of the matrix A. N >= 0.
2530
+ *
2531
+ * A (input/output) REAL array, dimension (LDA,N)
2532
+ * On entry, the NB diagonal matrix D and the multipliers
2533
+ * used to obtain the factor U or L as computed by SSYTRF.
2534
+ *
2535
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
2536
+ * matrix. If UPLO = 'U', the upper triangular part of the
2537
+ * inverse is formed and the part of A below the diagonal is not
2538
+ * referenced; if UPLO = 'L' the lower triangular part of the
2539
+ * inverse is formed and the part of A above the diagonal is
2540
+ * not referenced.
2541
+ *
2542
+ * I1 (input) INTEGER
2543
+ * Index of the first row to swap
2544
+ *
2545
+ * I2 (input) INTEGER
2546
+ * Index of the second row to swap
2547
+ *
2548
+
2549
+ * =====================================================================
2550
+ *
2551
+ * ..
2552
+ * .. Local Scalars ..
2553
+ LOGICAL UPPER
2554
+ INTEGER I
2555
+ REAL TMP
2556
+ *
2557
+ * .. External Functions ..
2558
+ LOGICAL LSAME
2559
+ EXTERNAL LSAME
2560
+ * ..
2561
+ * .. External Subroutines ..
2562
+ EXTERNAL SSWAP
2563
+ * ..
2564
+
2565
+
2566
+ </PRE>
2567
+ <A HREF="#top">go to the page top</A>
2568
+
2569
+ <A NAME="ssytd2"></A>
2570
+ <H2>ssytd2</H2>
2571
+ <PRE>
2572
+ USAGE:
2573
+ d, e, tau, info, a = NumRu::Lapack.ssytd2( uplo, a, [:usage => usage, :help => help])
2574
+
2575
+
2576
+ FORTRAN MANUAL
2577
+ SUBROUTINE SSYTD2( UPLO, N, A, LDA, D, E, TAU, INFO )
2578
+
2579
+ * Purpose
2580
+ * =======
2581
+ *
2582
+ * SSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal
2583
+ * form T by an orthogonal similarity transformation: Q' * A * Q = T.
2584
+ *
2585
+
2586
+ * Arguments
2587
+ * =========
2588
+ *
2589
+ * UPLO (input) CHARACTER*1
2590
+ * Specifies whether the upper or lower triangular part of the
2591
+ * symmetric matrix A is stored:
2592
+ * = 'U': Upper triangular
2593
+ * = 'L': Lower triangular
2594
+ *
2595
+ * N (input) INTEGER
2596
+ * The order of the matrix A. N >= 0.
2597
+ *
2598
+ * A (input/output) REAL array, dimension (LDA,N)
2599
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2600
+ * n-by-n upper triangular part of A contains the upper
2601
+ * triangular part of the matrix A, and the strictly lower
2602
+ * triangular part of A is not referenced. If UPLO = 'L', the
2603
+ * leading n-by-n lower triangular part of A contains the lower
2604
+ * triangular part of the matrix A, and the strictly upper
2605
+ * triangular part of A is not referenced.
2606
+ * On exit, if UPLO = 'U', the diagonal and first superdiagonal
2607
+ * of A are overwritten by the corresponding elements of the
2608
+ * tridiagonal matrix T, and the elements above the first
2609
+ * superdiagonal, with the array TAU, represent the orthogonal
2610
+ * matrix Q as a product of elementary reflectors; if UPLO
2611
+ * = 'L', the diagonal and first subdiagonal of A are over-
2612
+ * written by the corresponding elements of the tridiagonal
2613
+ * matrix T, and the elements below the first subdiagonal, with
2614
+ * the array TAU, represent the orthogonal matrix Q as a product
2615
+ * of elementary reflectors. See Further Details.
2616
+ *
2617
+ * LDA (input) INTEGER
2618
+ * The leading dimension of the array A. LDA >= max(1,N).
2619
+ *
2620
+ * D (output) REAL array, dimension (N)
2621
+ * The diagonal elements of the tridiagonal matrix T:
2622
+ * D(i) = A(i,i).
2623
+ *
2624
+ * E (output) REAL array, dimension (N-1)
2625
+ * The off-diagonal elements of the tridiagonal matrix T:
2626
+ * E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
2627
+ *
2628
+ * TAU (output) REAL array, dimension (N-1)
2629
+ * The scalar factors of the elementary reflectors (see Further
2630
+ * Details).
2631
+ *
2632
+ * INFO (output) INTEGER
2633
+ * = 0: successful exit
2634
+ * < 0: if INFO = -i, the i-th argument had an illegal value.
2635
+ *
2636
+
2637
+ * Further Details
2638
+ * ===============
2639
+ *
2640
+ * If UPLO = 'U', the matrix Q is represented as a product of elementary
2641
+ * reflectors
2642
+ *
2643
+ * Q = H(n-1) . . . H(2) H(1).
2644
+ *
2645
+ * Each H(i) has the form
2646
+ *
2647
+ * H(i) = I - tau * v * v'
2648
+ *
2649
+ * where tau is a real scalar, and v is a real vector with
2650
+ * v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
2651
+ * A(1:i-1,i+1), and tau in TAU(i).
2652
+ *
2653
+ * If UPLO = 'L', the matrix Q is represented as a product of elementary
2654
+ * reflectors
2655
+ *
2656
+ * Q = H(1) H(2) . . . H(n-1).
2657
+ *
2658
+ * Each H(i) has the form
2659
+ *
2660
+ * H(i) = I - tau * v * v'
2661
+ *
2662
+ * where tau is a real scalar, and v is a real vector with
2663
+ * v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
2664
+ * and tau in TAU(i).
2665
+ *
2666
+ * The contents of A on exit are illustrated by the following examples
2667
+ * with n = 5:
2668
+ *
2669
+ * if UPLO = 'U': if UPLO = 'L':
2670
+ *
2671
+ * ( d e v2 v3 v4 ) ( d )
2672
+ * ( d e v3 v4 ) ( e d )
2673
+ * ( d e v4 ) ( v1 e d )
2674
+ * ( d e ) ( v1 v2 e d )
2675
+ * ( d ) ( v1 v2 v3 e d )
2676
+ *
2677
+ * where d and e denote diagonal and off-diagonal elements of T, and vi
2678
+ * denotes an element of the vector defining H(i).
2679
+ *
2680
+ * =====================================================================
2681
+ *
2682
+
2683
+
2684
+ </PRE>
2685
+ <A HREF="#top">go to the page top</A>
2686
+
2687
+ <A NAME="ssytf2"></A>
2688
+ <H2>ssytf2</H2>
2689
+ <PRE>
2690
+ USAGE:
2691
+ ipiv, info, a = NumRu::Lapack.ssytf2( uplo, a, [:usage => usage, :help => help])
2692
+
2693
+
2694
+ FORTRAN MANUAL
2695
+ SUBROUTINE SSYTF2( UPLO, N, A, LDA, IPIV, INFO )
2696
+
2697
+ * Purpose
2698
+ * =======
2699
+ *
2700
+ * SSYTF2 computes the factorization of a real symmetric matrix A using
2701
+ * the Bunch-Kaufman diagonal pivoting method:
2702
+ *
2703
+ * A = U*D*U' or A = L*D*L'
2704
+ *
2705
+ * where U (or L) is a product of permutation and unit upper (lower)
2706
+ * triangular matrices, U' is the transpose of U, and D is symmetric and
2707
+ * block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
2708
+ *
2709
+ * This is the unblocked version of the algorithm, calling Level 2 BLAS.
2710
+ *
2711
+
2712
+ * Arguments
2713
+ * =========
2714
+ *
2715
+ * UPLO (input) CHARACTER*1
2716
+ * Specifies whether the upper or lower triangular part of the
2717
+ * symmetric matrix A is stored:
2718
+ * = 'U': Upper triangular
2719
+ * = 'L': Lower triangular
2720
+ *
2721
+ * N (input) INTEGER
2722
+ * The order of the matrix A. N >= 0.
2723
+ *
2724
+ * A (input/output) REAL array, dimension (LDA,N)
2725
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2726
+ * n-by-n upper triangular part of A contains the upper
2727
+ * triangular part of the matrix A, and the strictly lower
2728
+ * triangular part of A is not referenced. If UPLO = 'L', the
2729
+ * leading n-by-n lower triangular part of A contains the lower
2730
+ * triangular part of the matrix A, and the strictly upper
2731
+ * triangular part of A is not referenced.
2732
+ *
2733
+ * On exit, the block diagonal matrix D and the multipliers used
2734
+ * to obtain the factor U or L (see below for further details).
2735
+ *
2736
+ * LDA (input) INTEGER
2737
+ * The leading dimension of the array A. LDA >= max(1,N).
2738
+ *
2739
+ * IPIV (output) INTEGER array, dimension (N)
2740
+ * Details of the interchanges and the block structure of D.
2741
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
2742
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
2743
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
2744
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
2745
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
2746
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
2747
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2748
+ *
2749
+ * INFO (output) INTEGER
2750
+ * = 0: successful exit
2751
+ * < 0: if INFO = -k, the k-th argument had an illegal value
2752
+ * > 0: if INFO = k, D(k,k) is exactly zero. The factorization
2753
+ * has been completed, but the block diagonal matrix D is
2754
+ * exactly singular, and division by zero will occur if it
2755
+ * is used to solve a system of equations.
2756
+ *
2757
+
2758
+ * Further Details
2759
+ * ===============
2760
+ *
2761
+ * 09-29-06 - patch from
2762
+ * Bobby Cheng, MathWorks
2763
+ *
2764
+ * Replace l.204 and l.372
2765
+ * IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
2766
+ * by
2767
+ * IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. SISNAN(ABSAKK) ) THEN
2768
+ *
2769
+ * 01-01-96 - Based on modifications by
2770
+ * J. Lewis, Boeing Computer Services Company
2771
+ * A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
2772
+ * 1-96 - Based on modifications by J. Lewis, Boeing Computer Services
2773
+ * Company
2774
+ *
2775
+ * If UPLO = 'U', then A = U*D*U', where
2776
+ * U = P(n)*U(n)* ... *P(k)U(k)* ...,
2777
+ * i.e., U is a product of terms P(k)*U(k), where k decreases from n to
2778
+ * 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
2779
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
2780
+ * defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
2781
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
2782
+ *
2783
+ * ( I v 0 ) k-s
2784
+ * U(k) = ( 0 I 0 ) s
2785
+ * ( 0 0 I ) n-k
2786
+ * k-s s n-k
2787
+ *
2788
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
2789
+ * If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
2790
+ * and A(k,k), and v overwrites A(1:k-2,k-1:k).
2791
+ *
2792
+ * If UPLO = 'L', then A = L*D*L', where
2793
+ * L = P(1)*L(1)* ... *P(k)*L(k)* ...,
2794
+ * i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
2795
+ * n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
2796
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
2797
+ * defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
2798
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
2799
+ *
2800
+ * ( I 0 0 ) k-1
2801
+ * L(k) = ( 0 I 0 ) s
2802
+ * ( 0 v I ) n-k-s+1
2803
+ * k-1 s n-k-s+1
2804
+ *
2805
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
2806
+ * If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
2807
+ * and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
2808
+ *
2809
+ * =====================================================================
2810
+ *
2811
+
2812
+
2813
+ </PRE>
2814
+ <A HREF="#top">go to the page top</A>
2815
+
2816
+ <A NAME="ssytrd"></A>
2817
+ <H2>ssytrd</H2>
2818
+ <PRE>
2819
+ USAGE:
2820
+ d, e, tau, work, info, a = NumRu::Lapack.ssytrd( uplo, a, lwork, [:usage => usage, :help => help])
2821
+
2822
+
2823
+ FORTRAN MANUAL
2824
+ SUBROUTINE SSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
2825
+
2826
+ * Purpose
2827
+ * =======
2828
+ *
2829
+ * SSYTRD reduces a real symmetric matrix A to real symmetric
2830
+ * tridiagonal form T by an orthogonal similarity transformation:
2831
+ * Q**T * A * Q = T.
2832
+ *
2833
+
2834
+ * Arguments
2835
+ * =========
2836
+ *
2837
+ * UPLO (input) CHARACTER*1
2838
+ * = 'U': Upper triangle of A is stored;
2839
+ * = 'L': Lower triangle of A is stored.
2840
+ *
2841
+ * N (input) INTEGER
2842
+ * The order of the matrix A. N >= 0.
2843
+ *
2844
+ * A (input/output) REAL array, dimension (LDA,N)
2845
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2846
+ * N-by-N upper triangular part of A contains the upper
2847
+ * triangular part of the matrix A, and the strictly lower
2848
+ * triangular part of A is not referenced. If UPLO = 'L', the
2849
+ * leading N-by-N lower triangular part of A contains the lower
2850
+ * triangular part of the matrix A, and the strictly upper
2851
+ * triangular part of A is not referenced.
2852
+ * On exit, if UPLO = 'U', the diagonal and first superdiagonal
2853
+ * of A are overwritten by the corresponding elements of the
2854
+ * tridiagonal matrix T, and the elements above the first
2855
+ * superdiagonal, with the array TAU, represent the orthogonal
2856
+ * matrix Q as a product of elementary reflectors; if UPLO
2857
+ * = 'L', the diagonal and first subdiagonal of A are over-
2858
+ * written by the corresponding elements of the tridiagonal
2859
+ * matrix T, and the elements below the first subdiagonal, with
2860
+ * the array TAU, represent the orthogonal matrix Q as a product
2861
+ * of elementary reflectors. See Further Details.
2862
+ *
2863
+ * LDA (input) INTEGER
2864
+ * The leading dimension of the array A. LDA >= max(1,N).
2865
+ *
2866
+ * D (output) REAL array, dimension (N)
2867
+ * The diagonal elements of the tridiagonal matrix T:
2868
+ * D(i) = A(i,i).
2869
+ *
2870
+ * E (output) REAL array, dimension (N-1)
2871
+ * The off-diagonal elements of the tridiagonal matrix T:
2872
+ * E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
2873
+ *
2874
+ * TAU (output) REAL array, dimension (N-1)
2875
+ * The scalar factors of the elementary reflectors (see Further
2876
+ * Details).
2877
+ *
2878
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
2879
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
2880
+ *
2881
+ * LWORK (input) INTEGER
2882
+ * The dimension of the array WORK. LWORK >= 1.
2883
+ * For optimum performance LWORK >= N*NB, where NB is the
2884
+ * optimal blocksize.
2885
+ *
2886
+ * If LWORK = -1, then a workspace query is assumed; the routine
2887
+ * only calculates the optimal size of the WORK array, returns
2888
+ * this value as the first entry of the WORK array, and no error
2889
+ * message related to LWORK is issued by XERBLA.
2890
+ *
2891
+ * INFO (output) INTEGER
2892
+ * = 0: successful exit
2893
+ * < 0: if INFO = -i, the i-th argument had an illegal value
2894
+ *
2895
+
2896
+ * Further Details
2897
+ * ===============
2898
+ *
2899
+ * If UPLO = 'U', the matrix Q is represented as a product of elementary
2900
+ * reflectors
2901
+ *
2902
+ * Q = H(n-1) . . . H(2) H(1).
2903
+ *
2904
+ * Each H(i) has the form
2905
+ *
2906
+ * H(i) = I - tau * v * v'
2907
+ *
2908
+ * where tau is a real scalar, and v is a real vector with
2909
+ * v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
2910
+ * A(1:i-1,i+1), and tau in TAU(i).
2911
+ *
2912
+ * If UPLO = 'L', the matrix Q is represented as a product of elementary
2913
+ * reflectors
2914
+ *
2915
+ * Q = H(1) H(2) . . . H(n-1).
2916
+ *
2917
+ * Each H(i) has the form
2918
+ *
2919
+ * H(i) = I - tau * v * v'
2920
+ *
2921
+ * where tau is a real scalar, and v is a real vector with
2922
+ * v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
2923
+ * and tau in TAU(i).
2924
+ *
2925
+ * The contents of A on exit are illustrated by the following examples
2926
+ * with n = 5:
2927
+ *
2928
+ * if UPLO = 'U': if UPLO = 'L':
2929
+ *
2930
+ * ( d e v2 v3 v4 ) ( d )
2931
+ * ( d e v3 v4 ) ( e d )
2932
+ * ( d e v4 ) ( v1 e d )
2933
+ * ( d e ) ( v1 v2 e d )
2934
+ * ( d ) ( v1 v2 v3 e d )
2935
+ *
2936
+ * where d and e denote diagonal and off-diagonal elements of T, and vi
2937
+ * denotes an element of the vector defining H(i).
2938
+ *
2939
+ * =====================================================================
2940
+ *
2941
+
2942
+
2943
+ </PRE>
2944
+ <A HREF="#top">go to the page top</A>
2945
+
2946
+ <A NAME="ssytrf"></A>
2947
+ <H2>ssytrf</H2>
2948
+ <PRE>
2949
+ USAGE:
2950
+ ipiv, work, info, a = NumRu::Lapack.ssytrf( uplo, a, lwork, [:usage => usage, :help => help])
2951
+
2952
+
2953
+ FORTRAN MANUAL
2954
+ SUBROUTINE SSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
2955
+
2956
+ * Purpose
2957
+ * =======
2958
+ *
2959
+ * SSYTRF computes the factorization of a real symmetric matrix A using
2960
+ * the Bunch-Kaufman diagonal pivoting method. The form of the
2961
+ * factorization is
2962
+ *
2963
+ * A = U*D*U**T or A = L*D*L**T
2964
+ *
2965
+ * where U (or L) is a product of permutation and unit upper (lower)
2966
+ * triangular matrices, and D is symmetric and block diagonal with
2967
+ * 1-by-1 and 2-by-2 diagonal blocks.
2968
+ *
2969
+ * This is the blocked version of the algorithm, calling Level 3 BLAS.
2970
+ *
2971
+
2972
+ * Arguments
2973
+ * =========
2974
+ *
2975
+ * UPLO (input) CHARACTER*1
2976
+ * = 'U': Upper triangle of A is stored;
2977
+ * = 'L': Lower triangle of A is stored.
2978
+ *
2979
+ * N (input) INTEGER
2980
+ * The order of the matrix A. N >= 0.
2981
+ *
2982
+ * A (input/output) REAL array, dimension (LDA,N)
2983
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2984
+ * N-by-N upper triangular part of A contains the upper
2985
+ * triangular part of the matrix A, and the strictly lower
2986
+ * triangular part of A is not referenced. If UPLO = 'L', the
2987
+ * leading N-by-N lower triangular part of A contains the lower
2988
+ * triangular part of the matrix A, and the strictly upper
2989
+ * triangular part of A is not referenced.
2990
+ *
2991
+ * On exit, the block diagonal matrix D and the multipliers used
2992
+ * to obtain the factor U or L (see below for further details).
2993
+ *
2994
+ * LDA (input) INTEGER
2995
+ * The leading dimension of the array A. LDA >= max(1,N).
2996
+ *
2997
+ * IPIV (output) INTEGER array, dimension (N)
2998
+ * Details of the interchanges and the block structure of D.
2999
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
3000
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
3001
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
3002
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
3003
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
3004
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
3005
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
3006
+ *
3007
+ * WORK (workspace/output) REAL array, dimension (MAX(1,LWORK))
3008
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
3009
+ *
3010
+ * LWORK (input) INTEGER
3011
+ * The length of WORK. LWORK >=1. For best performance
3012
+ * LWORK >= N*NB, where NB is the block size returned by ILAENV.
3013
+ *
3014
+ * If LWORK = -1, then a workspace query is assumed; the routine
3015
+ * only calculates the optimal size of the WORK array, returns
3016
+ * this value as the first entry of the WORK array, and no error
3017
+ * message related to LWORK is issued by XERBLA.
3018
+ *
3019
+ * INFO (output) INTEGER
3020
+ * = 0: successful exit
3021
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3022
+ * > 0: if INFO = i, D(i,i) is exactly zero. The factorization
3023
+ * has been completed, but the block diagonal matrix D is
3024
+ * exactly singular, and division by zero will occur if it
3025
+ * is used to solve a system of equations.
3026
+ *
3027
+
3028
+ * Further Details
3029
+ * ===============
3030
+ *
3031
+ * If UPLO = 'U', then A = U*D*U', where
3032
+ * U = P(n)*U(n)* ... *P(k)U(k)* ...,
3033
+ * i.e., U is a product of terms P(k)*U(k), where k decreases from n to
3034
+ * 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
3035
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
3036
+ * defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
3037
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
3038
+ *
3039
+ * ( I v 0 ) k-s
3040
+ * U(k) = ( 0 I 0 ) s
3041
+ * ( 0 0 I ) n-k
3042
+ * k-s s n-k
3043
+ *
3044
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
3045
+ * If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
3046
+ * and A(k,k), and v overwrites A(1:k-2,k-1:k).
3047
+ *
3048
+ * If UPLO = 'L', then A = L*D*L', where
3049
+ * L = P(1)*L(1)* ... *P(k)*L(k)* ...,
3050
+ * i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
3051
+ * n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
3052
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
3053
+ * defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
3054
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
3055
+ *
3056
+ * ( I 0 0 ) k-1
3057
+ * L(k) = ( 0 I 0 ) s
3058
+ * ( 0 v I ) n-k-s+1
3059
+ * k-1 s n-k-s+1
3060
+ *
3061
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
3062
+ * If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
3063
+ * and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
3064
+ *
3065
+ * =====================================================================
3066
+ *
3067
+ * .. Local Scalars ..
3068
+ LOGICAL LQUERY, UPPER
3069
+ INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
3070
+ * ..
3071
+ * .. External Functions ..
3072
+ LOGICAL LSAME
3073
+ INTEGER ILAENV
3074
+ EXTERNAL LSAME, ILAENV
3075
+ * ..
3076
+ * .. External Subroutines ..
3077
+ EXTERNAL SLASYF, SSYTF2, XERBLA
3078
+ * ..
3079
+ * .. Intrinsic Functions ..
3080
+ INTRINSIC MAX
3081
+ * ..
3082
+
3083
+
3084
+ </PRE>
3085
+ <A HREF="#top">go to the page top</A>
3086
+
3087
+ <A NAME="ssytri"></A>
3088
+ <H2>ssytri</H2>
3089
+ <PRE>
3090
+ USAGE:
3091
+ info, a = NumRu::Lapack.ssytri( uplo, a, ipiv, [:usage => usage, :help => help])
3092
+
3093
+
3094
+ FORTRAN MANUAL
3095
+ SUBROUTINE SSYTRI( UPLO, N, A, LDA, IPIV, WORK, INFO )
3096
+
3097
+ * Purpose
3098
+ * =======
3099
+ *
3100
+ * SSYTRI computes the inverse of a real symmetric indefinite matrix
3101
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3102
+ * SSYTRF.
3103
+ *
3104
+
3105
+ * Arguments
3106
+ * =========
3107
+ *
3108
+ * UPLO (input) CHARACTER*1
3109
+ * Specifies whether the details of the factorization are stored
3110
+ * as an upper or lower triangular matrix.
3111
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3112
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3113
+ *
3114
+ * N (input) INTEGER
3115
+ * The order of the matrix A. N >= 0.
3116
+ *
3117
+ * A (input/output) REAL array, dimension (LDA,N)
3118
+ * On entry, the block diagonal matrix D and the multipliers
3119
+ * used to obtain the factor U or L as computed by SSYTRF.
3120
+ *
3121
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3122
+ * matrix. If UPLO = 'U', the upper triangular part of the
3123
+ * inverse is formed and the part of A below the diagonal is not
3124
+ * referenced; if UPLO = 'L' the lower triangular part of the
3125
+ * inverse is formed and the part of A above the diagonal is
3126
+ * not referenced.
3127
+ *
3128
+ * LDA (input) INTEGER
3129
+ * The leading dimension of the array A. LDA >= max(1,N).
3130
+ *
3131
+ * IPIV (input) INTEGER array, dimension (N)
3132
+ * Details of the interchanges and the block structure of D
3133
+ * as determined by SSYTRF.
3134
+ *
3135
+ * WORK (workspace) REAL array, dimension (N)
3136
+ *
3137
+ * INFO (output) INTEGER
3138
+ * = 0: successful exit
3139
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3140
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3141
+ * inverse could not be computed.
3142
+ *
3143
+
3144
+ * =====================================================================
3145
+ *
3146
+
3147
+
3148
+ </PRE>
3149
+ <A HREF="#top">go to the page top</A>
3150
+
3151
+ <A NAME="ssytri2"></A>
3152
+ <H2>ssytri2</H2>
3153
+ <PRE>
3154
+ USAGE:
3155
+ info, a, work = NumRu::Lapack.ssytri2( uplo, a, ipiv, work, [:lwork => lwork, :usage => usage, :help => help])
3156
+
3157
+
3158
+ FORTRAN MANUAL
3159
+ SUBROUTINE SSYTRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
3160
+
3161
+ * Purpose
3162
+ * =======
3163
+ *
3164
+ * SSYTRI2 computes the inverse of a real symmetric indefinite matrix
3165
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3166
+ * SSYTRF. SSYTRI2 sets the LEADING DIMENSION of the workspace
3167
+ * before calling SSYTRI2X that actually computes the inverse.
3168
+ *
3169
+
3170
+ * Arguments
3171
+ * =========
3172
+ *
3173
+ * UPLO (input) CHARACTER*1
3174
+ * Specifies whether the details of the factorization are stored
3175
+ * as an upper or lower triangular matrix.
3176
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3177
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3178
+ *
3179
+ * N (input) INTEGER
3180
+ * The order of the matrix A. N >= 0.
3181
+ *
3182
+ * A (input/output) REAL array, dimension (LDA,N)
3183
+ * On entry, the NB diagonal matrix D and the multipliers
3184
+ * used to obtain the factor U or L as computed by SSYTRF.
3185
+ *
3186
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3187
+ * matrix. If UPLO = 'U', the upper triangular part of the
3188
+ * inverse is formed and the part of A below the diagonal is not
3189
+ * referenced; if UPLO = 'L' the lower triangular part of the
3190
+ * inverse is formed and the part of A above the diagonal is
3191
+ * not referenced.
3192
+ *
3193
+ * LDA (input) INTEGER
3194
+ * The leading dimension of the array A. LDA >= max(1,N).
3195
+ *
3196
+ * IPIV (input) INTEGER array, dimension (N)
3197
+ * Details of the interchanges and the NB structure of D
3198
+ * as determined by SSYTRF.
3199
+ *
3200
+ * WORK (workspace) REAL array, dimension (N+NB+1)*(NB+3)
3201
+ *
3202
+ * LWORK (input) INTEGER
3203
+ * The dimension of the array WORK.
3204
+ * WORK is size >= (N+NB+1)*(NB+3)
3205
+ * If LDWORK = -1, then a workspace query is assumed; the routine
3206
+ * calculates:
3207
+ * - the optimal size of the WORK array, returns
3208
+ * this value as the first entry of the WORK array,
3209
+ * - and no error message related to LDWORK is issued by XERBLA.
3210
+ *
3211
+ * INFO (output) INTEGER
3212
+ * = 0: successful exit
3213
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3214
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3215
+ * inverse could not be computed.
3216
+ *
3217
+
3218
+ * =====================================================================
3219
+ *
3220
+ * .. Local Scalars ..
3221
+ LOGICAL UPPER, LQUERY
3222
+ INTEGER MINSIZE, NBMAX
3223
+ * ..
3224
+ * .. External Functions ..
3225
+ LOGICAL LSAME
3226
+ INTEGER ILAENV
3227
+ EXTERNAL LSAME, ILAENV
3228
+ * ..
3229
+ * .. External Subroutines ..
3230
+ EXTERNAL SSYTRI2X
3231
+ * ..
3232
+
3233
+
3234
+ </PRE>
3235
+ <A HREF="#top">go to the page top</A>
3236
+
3237
+ <A NAME="ssytri2x"></A>
3238
+ <H2>ssytri2x</H2>
3239
+ <PRE>
3240
+ USAGE:
3241
+ info, a = NumRu::Lapack.ssytri2x( uplo, a, ipiv, nb, [:usage => usage, :help => help])
3242
+
3243
+
3244
+ FORTRAN MANUAL
3245
+ SUBROUTINE SSYTRI2X( UPLO, N, A, LDA, IPIV, WORK, NB, INFO )
3246
+
3247
+ * Purpose
3248
+ * =======
3249
+ *
3250
+ * SSYTRI2X computes the inverse of a real symmetric indefinite matrix
3251
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3252
+ * SSYTRF.
3253
+ *
3254
+
3255
+ * Arguments
3256
+ * =========
3257
+ *
3258
+ * UPLO (input) CHARACTER*1
3259
+ * Specifies whether the details of the factorization are stored
3260
+ * as an upper or lower triangular matrix.
3261
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3262
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3263
+ *
3264
+ * N (input) INTEGER
3265
+ * The order of the matrix A. N >= 0.
3266
+ *
3267
+ * A (input/output) REAL array, dimension (LDA,N)
3268
+ * On entry, the NNB diagonal matrix D and the multipliers
3269
+ * used to obtain the factor U or L as computed by SSYTRF.
3270
+ *
3271
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3272
+ * matrix. If UPLO = 'U', the upper triangular part of the
3273
+ * inverse is formed and the part of A below the diagonal is not
3274
+ * referenced; if UPLO = 'L' the lower triangular part of the
3275
+ * inverse is formed and the part of A above the diagonal is
3276
+ * not referenced.
3277
+ *
3278
+ * LDA (input) INTEGER
3279
+ * The leading dimension of the array A. LDA >= max(1,N).
3280
+ *
3281
+ * IPIV (input) INTEGER array, dimension (N)
3282
+ * Details of the interchanges and the NNB structure of D
3283
+ * as determined by SSYTRF.
3284
+ *
3285
+ * WORK (workspace) REAL array, dimension (N+NNB+1,NNB+3)
3286
+ *
3287
+ * NB (input) INTEGER
3288
+ * Block size
3289
+ *
3290
+ * INFO (output) INTEGER
3291
+ * = 0: successful exit
3292
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3293
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3294
+ * inverse could not be computed.
3295
+ *
3296
+
3297
+ * =====================================================================
3298
+ *
3299
+
3300
+
3301
+ </PRE>
3302
+ <A HREF="#top">go to the page top</A>
3303
+
3304
+ <A NAME="ssytrs"></A>
3305
+ <H2>ssytrs</H2>
3306
+ <PRE>
3307
+ USAGE:
3308
+ info, b = NumRu::Lapack.ssytrs( uplo, a, ipiv, b, [:usage => usage, :help => help])
3309
+
3310
+
3311
+ FORTRAN MANUAL
3312
+ SUBROUTINE SSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
3313
+
3314
+ * Purpose
3315
+ * =======
3316
+ *
3317
+ * SSYTRS solves a system of linear equations A*X = B with a real
3318
+ * symmetric matrix A using the factorization A = U*D*U**T or
3319
+ * A = L*D*L**T computed by SSYTRF.
3320
+ *
3321
+
3322
+ * Arguments
3323
+ * =========
3324
+ *
3325
+ * UPLO (input) CHARACTER*1
3326
+ * Specifies whether the details of the factorization are stored
3327
+ * as an upper or lower triangular matrix.
3328
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3329
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3330
+ *
3331
+ * N (input) INTEGER
3332
+ * The order of the matrix A. N >= 0.
3333
+ *
3334
+ * NRHS (input) INTEGER
3335
+ * The number of right hand sides, i.e., the number of columns
3336
+ * of the matrix B. NRHS >= 0.
3337
+ *
3338
+ * A (input) REAL array, dimension (LDA,N)
3339
+ * The block diagonal matrix D and the multipliers used to
3340
+ * obtain the factor U or L as computed by SSYTRF.
3341
+ *
3342
+ * LDA (input) INTEGER
3343
+ * The leading dimension of the array A. LDA >= max(1,N).
3344
+ *
3345
+ * IPIV (input) INTEGER array, dimension (N)
3346
+ * Details of the interchanges and the block structure of D
3347
+ * as determined by SSYTRF.
3348
+ *
3349
+ * B (input/output) REAL array, dimension (LDB,NRHS)
3350
+ * On entry, the right hand side matrix B.
3351
+ * On exit, the solution matrix X.
3352
+ *
3353
+ * LDB (input) INTEGER
3354
+ * The leading dimension of the array B. LDB >= max(1,N).
3355
+ *
3356
+ * INFO (output) INTEGER
3357
+ * = 0: successful exit
3358
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3359
+ *
3360
+
3361
+ * =====================================================================
3362
+ *
3363
+
3364
+
3365
+ </PRE>
3366
+ <A HREF="#top">go to the page top</A>
3367
+
3368
+ <A NAME="ssytrs2"></A>
3369
+ <H2>ssytrs2</H2>
3370
+ <PRE>
3371
+ USAGE:
3372
+ info, b = NumRu::Lapack.ssytrs2( uplo, a, ipiv, b, [:usage => usage, :help => help])
3373
+
3374
+
3375
+ FORTRAN MANUAL
3376
+ SUBROUTINE SSYTRS2( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO )
3377
+
3378
+ * Purpose
3379
+ * =======
3380
+ *
3381
+ * SSYTRS2 solves a system of linear equations A*X = B with a real
3382
+ * symmetric matrix A using the factorization A = U*D*U**T or
3383
+ * A = L*D*L**T computed by SSYTRF and converted by SSYCONV.
3384
+ *
3385
+
3386
+ * Arguments
3387
+ * =========
3388
+ *
3389
+ * UPLO (input) CHARACTER*1
3390
+ * Specifies whether the details of the factorization are stored
3391
+ * as an upper or lower triangular matrix.
3392
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3393
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3394
+ *
3395
+ * N (input) INTEGER
3396
+ * The order of the matrix A. N >= 0.
3397
+ *
3398
+ * NRHS (input) INTEGER
3399
+ * The number of right hand sides, i.e., the number of columns
3400
+ * of the matrix B. NRHS >= 0.
3401
+ *
3402
+ * A (input) REAL array, dimension (LDA,N)
3403
+ * The block diagonal matrix D and the multipliers used to
3404
+ * obtain the factor U or L as computed by SSYTRF.
3405
+ *
3406
+ * LDA (input) INTEGER
3407
+ * The leading dimension of the array A. LDA >= max(1,N).
3408
+ *
3409
+ * IPIV (input) INTEGER array, dimension (N)
3410
+ * Details of the interchanges and the block structure of D
3411
+ * as determined by SSYTRF.
3412
+ *
3413
+ * B (input/output) REAL array, dimension (LDB,NRHS)
3414
+ * On entry, the right hand side matrix B.
3415
+ * On exit, the solution matrix X.
3416
+ *
3417
+ * LDB (input) INTEGER
3418
+ * The leading dimension of the array B. LDB >= max(1,N).
3419
+ *
3420
+ * WORK (workspace) REAL array, dimension (N)
3421
+ *
3422
+ * INFO (output) INTEGER
3423
+ * = 0: successful exit
3424
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3425
+ *
3426
+
3427
+ * =====================================================================
3428
+ *
3429
+
3430
+
3431
+ </PRE>
3432
+ <A HREF="#top">go to the page top</A>
3433
+
3434
+ <HR />
3435
+ <A HREF="s.html">back to matrix types</A><BR>
3436
+ <A HREF="s.html">back to data types</A>
3437
+ </BODY>
3438
+ </HTML>