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/dsy.html ADDED
@@ -0,0 +1,3433 @@
1
+ <HTML>
2
+ <HEAD>
3
+ <TITLE>DOUBLE PRECISION routines for symmetric matrix</TITLE>
4
+ </HEAD>
5
+ <BODY>
6
+ <A NAME="top"></A>
7
+ <H1>DOUBLE PRECISION routines for symmetric matrix</H1>
8
+ <UL>
9
+ <LI><A HREF="#dsycon">dsycon</A></LI>
10
+ <LI><A HREF="#dsyconv">dsyconv</A></LI>
11
+ <LI><A HREF="#dsyequb">dsyequb</A></LI>
12
+ <LI><A HREF="#dsyev">dsyev</A></LI>
13
+ <LI><A HREF="#dsyevd">dsyevd</A></LI>
14
+ <LI><A HREF="#dsyevr">dsyevr</A></LI>
15
+ <LI><A HREF="#dsyevx">dsyevx</A></LI>
16
+ <LI><A HREF="#dsygs2">dsygs2</A></LI>
17
+ <LI><A HREF="#dsygst">dsygst</A></LI>
18
+ <LI><A HREF="#dsygv">dsygv</A></LI>
19
+ <LI><A HREF="#dsygvd">dsygvd</A></LI>
20
+ <LI><A HREF="#dsygvx">dsygvx</A></LI>
21
+ <LI><A HREF="#dsyrfs">dsyrfs</A></LI>
22
+ <LI><A HREF="#dsyrfsx">dsyrfsx</A></LI>
23
+ <LI><A HREF="#dsysv">dsysv</A></LI>
24
+ <LI><A HREF="#dsysvx">dsysvx</A></LI>
25
+ <LI><A HREF="#dsysvxx">dsysvxx</A></LI>
26
+ <LI><A HREF="#dsyswapr">dsyswapr</A></LI>
27
+ <LI><A HREF="#dsytd2">dsytd2</A></LI>
28
+ <LI><A HREF="#dsytf2">dsytf2</A></LI>
29
+ <LI><A HREF="#dsytrd">dsytrd</A></LI>
30
+ <LI><A HREF="#dsytrf">dsytrf</A></LI>
31
+ <LI><A HREF="#dsytri">dsytri</A></LI>
32
+ <LI><A HREF="#dsytri2">dsytri2</A></LI>
33
+ <LI><A HREF="#dsytri2x">dsytri2x</A></LI>
34
+ <LI><A HREF="#dsytrs">dsytrs</A></LI>
35
+ <LI><A HREF="#dsytrs2">dsytrs2</A></LI>
36
+ </UL>
37
+
38
+ <A NAME="dsycon"></A>
39
+ <H2>dsycon</H2>
40
+ <PRE>
41
+ USAGE:
42
+ rcond, info = NumRu::Lapack.dsycon( uplo, a, ipiv, anorm, [:usage => usage, :help => help])
43
+
44
+
45
+ FORTRAN MANUAL
46
+ SUBROUTINE DSYCON( UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO )
47
+
48
+ * Purpose
49
+ * =======
50
+ *
51
+ * DSYCON 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 DSYTRF.
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) DOUBLE PRECISION 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 DSYTRF.
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 DSYTRF.
81
+ *
82
+ * ANORM (input) DOUBLE PRECISION
83
+ * The 1-norm of the original matrix A.
84
+ *
85
+ * RCOND (output) DOUBLE PRECISION
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) DOUBLE PRECISION 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="dsyconv"></A>
107
+ <H2>dsyconv</H2>
108
+ <PRE>
109
+ USAGE:
110
+ info = NumRu::Lapack.dsyconv( uplo, way, a, ipiv, [:usage => usage, :help => help])
111
+
112
+
113
+ FORTRAN MANUAL
114
+ SUBROUTINE DSYCONV( UPLO, WAY, N, A, LDA, IPIV, WORK, INFO )
115
+
116
+ * Purpose
117
+ * =======
118
+ *
119
+ * DSYCONV 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) DOUBLE PRECISION 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 DSYTRF.
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 DSYTRF.
150
+ *
151
+ * WORK (workspace) DOUBLE PRECISION 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="dsyequb"></A>
175
+ <H2>dsyequb</H2>
176
+ <PRE>
177
+ USAGE:
178
+ s, scond, amax, info = NumRu::Lapack.dsyequb( uplo, a, [:usage => usage, :help => help])
179
+
180
+
181
+ FORTRAN MANUAL
182
+ SUBROUTINE DSYEQUB( UPLO, N, A, LDA, S, SCOND, AMAX, WORK, INFO )
183
+
184
+ * Purpose
185
+ * =======
186
+ *
187
+ * DSYEQUB 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) DOUBLE PRECISION 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) DOUBLE PRECISION array, dimension (N)
218
+ * If INFO = 0, S contains the scale factors for A.
219
+ *
220
+ * SCOND (output) DOUBLE PRECISION
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) DOUBLE PRECISION
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) DOUBLE PRECISION 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="dsyev"></A>
254
+ <H2>dsyev</H2>
255
+ <PRE>
256
+ USAGE:
257
+ w, work, info, a = NumRu::Lapack.dsyev( jobz, uplo, a, [:lwork => lwork, :usage => usage, :help => help])
258
+
259
+
260
+ FORTRAN MANUAL
261
+ SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
262
+
263
+ * Purpose
264
+ * =======
265
+ *
266
+ * DSYEV 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) DOUBLE PRECISION 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) DOUBLE PRECISION array, dimension (N)
300
+ * If INFO = 0, the eigenvalues in ascending order.
301
+ *
302
+ * WORK (workspace/output) DOUBLE PRECISION 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 DSYTRD 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="dsyevd"></A>
331
+ <H2>dsyevd</H2>
332
+ <PRE>
333
+ USAGE:
334
+ w, work, iwork, info, a = NumRu::Lapack.dsyevd( jobz, uplo, a, [:lwork => lwork, :liwork => liwork, :usage => usage, :help => help])
335
+
336
+
337
+ FORTRAN MANUAL
338
+ SUBROUTINE DSYEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, IWORK, LIWORK, INFO )
339
+
340
+ * Purpose
341
+ * =======
342
+ *
343
+ * DSYEVD 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, DSYEVD needs N**2 more
355
+ * workspace than DSYEVX.
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) DOUBLE PRECISION 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) DOUBLE PRECISION array, dimension (N)
388
+ * If INFO = 0, the eigenvalues in ascending order.
389
+ *
390
+ * WORK (workspace/output) DOUBLE PRECISION 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="dsyevr"></A>
451
+ <H2>dsyevr</H2>
452
+ <PRE>
453
+ USAGE:
454
+ m, w, z, isuppz, work, iwork, info, a = NumRu::Lapack.dsyevr( jobz, range, uplo, a, vl, vu, il, iu, abstol, liwork, [:lwork => lwork, :usage => usage, :help => help])
455
+
456
+
457
+ FORTRAN MANUAL
458
+ SUBROUTINE DSYEVR( 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
+ * DSYEVR 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
+ * DSYEVR first reduces the matrix A to tridiagonal form T with a call
469
+ * to DSYTRD. Then, whenever possible, DSYEVR calls DSTEMR to compute
470
+ * the eigenspectrum using Relatively Robust Representations. DSTEMR
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 DSTEMR'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 : DSYEVR calls DSTEMR when the full spectrum is requested
512
+ * on machines which conform to the ieee-754 floating point standard.
513
+ * DSYEVR calls DSTEBZ and SSTEIN on non-ieee machines and
514
+ * when partial spectrum requests are made.
515
+ *
516
+ * Normal execution of DSTEMR 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, DSTEBZ and
535
+ ********** DSTEIN 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) DOUBLE PRECISION 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) DOUBLE PRECISION
558
+ * VU (input) DOUBLE PRECISION
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) DOUBLE PRECISION
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
+ * DLAMCH( '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) DOUBLE PRECISION array, dimension (N)
603
+ * The first M elements contain the selected eigenvalues in
604
+ * ascending order.
605
+ *
606
+ * Z (output) DOUBLE PRECISION 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) DOUBLE PRECISION 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 DSYTRD and DORMTR
635
+ * returned by ILAENV.
636
+ *
637
+ * If LWORK = -1, then a workspace query is assumed; the routine
638
+ * only calculates the optimal size of the WORK array, returns
639
+ * this value as the first entry of the WORK array, and no error
640
+ * message related to LWORK is issued by XERBLA.
641
+ *
642
+ * IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
643
+ * On exit, if INFO = 0, IWORK(1) returns the optimal LWORK.
644
+ *
645
+ * LIWORK (input) INTEGER
646
+ * The dimension of the array IWORK. LIWORK >= max(1,10*N).
647
+ *
648
+ * If LIWORK = -1, then a workspace query is assumed; the
649
+ * routine only calculates the optimal size of the IWORK array,
650
+ * returns this value as the first entry of the IWORK array, and
651
+ * no error message related to LIWORK is issued by XERBLA.
652
+ *
653
+ * INFO (output) INTEGER
654
+ * = 0: successful exit
655
+ * < 0: if INFO = -i, the i-th argument had an illegal value
656
+ * > 0: Internal error
657
+ *
658
+
659
+ * Further Details
660
+ * ===============
661
+ *
662
+ * Based on contributions by
663
+ * Inderjit Dhillon, IBM Almaden, USA
664
+ * Osni Marques, LBNL/NERSC, USA
665
+ * Ken Stanley, Computer Science Division, University of
666
+ * California at Berkeley, USA
667
+ * Jason Riedy, Computer Science Division, University of
668
+ * California at Berkeley, USA
669
+ *
670
+ * =====================================================================
671
+ *
672
+
673
+
674
+ </PRE>
675
+ <A HREF="#top">go to the page top</A>
676
+
677
+ <A NAME="dsyevx"></A>
678
+ <H2>dsyevx</H2>
679
+ <PRE>
680
+ USAGE:
681
+ m, w, z, work, ifail, info, a = NumRu::Lapack.dsyevx( jobz, range, uplo, a, vl, vu, il, iu, abstol, [:lwork => lwork, :usage => usage, :help => help])
682
+
683
+
684
+ FORTRAN MANUAL
685
+ SUBROUTINE DSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO )
686
+
687
+ * Purpose
688
+ * =======
689
+ *
690
+ * DSYEVX computes selected eigenvalues and, optionally, eigenvectors
691
+ * of a real symmetric matrix A. Eigenvalues and eigenvectors can be
692
+ * selected by specifying either a range of values or a range of indices
693
+ * for the desired eigenvalues.
694
+ *
695
+
696
+ * Arguments
697
+ * =========
698
+ *
699
+ * JOBZ (input) CHARACTER*1
700
+ * = 'N': Compute eigenvalues only;
701
+ * = 'V': Compute eigenvalues and eigenvectors.
702
+ *
703
+ * RANGE (input) CHARACTER*1
704
+ * = 'A': all eigenvalues will be found.
705
+ * = 'V': all eigenvalues in the half-open interval (VL,VU]
706
+ * will be found.
707
+ * = 'I': the IL-th through IU-th eigenvalues will be found.
708
+ *
709
+ * UPLO (input) CHARACTER*1
710
+ * = 'U': Upper triangle of A is stored;
711
+ * = 'L': Lower triangle of A is stored.
712
+ *
713
+ * N (input) INTEGER
714
+ * The order of the matrix A. N >= 0.
715
+ *
716
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
717
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
718
+ * leading N-by-N upper triangular part of A contains the
719
+ * upper triangular part of the matrix A. If UPLO = 'L',
720
+ * the leading N-by-N lower triangular part of A contains
721
+ * the lower triangular part of the matrix A.
722
+ * On exit, the lower triangle (if UPLO='L') or the upper
723
+ * triangle (if UPLO='U') of A, including the diagonal, is
724
+ * destroyed.
725
+ *
726
+ * LDA (input) INTEGER
727
+ * The leading dimension of the array A. LDA >= max(1,N).
728
+ *
729
+ * VL (input) DOUBLE PRECISION
730
+ * VU (input) DOUBLE PRECISION
731
+ * If RANGE='V', the lower and upper bounds of the interval to
732
+ * be searched for eigenvalues. VL < VU.
733
+ * Not referenced if RANGE = 'A' or 'I'.
734
+ *
735
+ * IL (input) INTEGER
736
+ * IU (input) INTEGER
737
+ * If RANGE='I', the indices (in ascending order) of the
738
+ * smallest and largest eigenvalues to be returned.
739
+ * 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
740
+ * Not referenced if RANGE = 'A' or 'V'.
741
+ *
742
+ * ABSTOL (input) DOUBLE PRECISION
743
+ * The absolute error tolerance for the eigenvalues.
744
+ * An approximate eigenvalue is accepted as converged
745
+ * when it is determined to lie in an interval [a,b]
746
+ * of width less than or equal to
747
+ *
748
+ * ABSTOL + EPS * max( |a|,|b| ) ,
749
+ *
750
+ * where EPS is the machine precision. If ABSTOL is less than
751
+ * or equal to zero, then EPS*|T| will be used in its place,
752
+ * where |T| is the 1-norm of the tridiagonal matrix obtained
753
+ * by reducing A to tridiagonal form.
754
+ *
755
+ * Eigenvalues will be computed most accurately when ABSTOL is
756
+ * set to twice the underflow threshold 2*DLAMCH('S'), not zero.
757
+ * If this routine returns with INFO>0, indicating that some
758
+ * eigenvectors did not converge, try setting ABSTOL to
759
+ * 2*DLAMCH('S').
760
+ *
761
+ * See "Computing Small Singular Values of Bidiagonal Matrices
762
+ * with Guaranteed High Relative Accuracy," by Demmel and
763
+ * Kahan, LAPACK Working Note #3.
764
+ *
765
+ * M (output) INTEGER
766
+ * The total number of eigenvalues found. 0 <= M <= N.
767
+ * If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
768
+ *
769
+ * W (output) DOUBLE PRECISION array, dimension (N)
770
+ * On normal exit, the first M elements contain the selected
771
+ * eigenvalues in ascending order.
772
+ *
773
+ * Z (output) DOUBLE PRECISION array, dimension (LDZ, max(1,M))
774
+ * If JOBZ = 'V', then if INFO = 0, the first M columns of Z
775
+ * contain the orthonormal eigenvectors of the matrix A
776
+ * corresponding to the selected eigenvalues, with the i-th
777
+ * column of Z holding the eigenvector associated with W(i).
778
+ * If an eigenvector fails to converge, then that column of Z
779
+ * contains the latest approximation to the eigenvector, and the
780
+ * index of the eigenvector is returned in IFAIL.
781
+ * If JOBZ = 'N', then Z is not referenced.
782
+ * Note: the user must ensure that at least max(1,M) columns are
783
+ * supplied in the array Z; if RANGE = 'V', the exact value of M
784
+ * is not known in advance and an upper bound must be used.
785
+ *
786
+ * LDZ (input) INTEGER
787
+ * The leading dimension of the array Z. LDZ >= 1, and if
788
+ * JOBZ = 'V', LDZ >= max(1,N).
789
+ *
790
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
791
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
792
+ *
793
+ * LWORK (input) INTEGER
794
+ * The length of the array WORK. LWORK >= 1, when N <= 1;
795
+ * otherwise 8*N.
796
+ * For optimal efficiency, LWORK >= (NB+3)*N,
797
+ * where NB is the max of the blocksize for DSYTRD and DORMTR
798
+ * returned by ILAENV.
799
+ *
800
+ * If LWORK = -1, then a workspace query is assumed; the routine
801
+ * only calculates the optimal size of the WORK array, returns
802
+ * this value as the first entry of the WORK array, and no error
803
+ * message related to LWORK is issued by XERBLA.
804
+ *
805
+ * IWORK (workspace) INTEGER array, dimension (5*N)
806
+ *
807
+ * IFAIL (output) INTEGER array, dimension (N)
808
+ * If JOBZ = 'V', then if INFO = 0, the first M elements of
809
+ * IFAIL are zero. If INFO > 0, then IFAIL contains the
810
+ * indices of the eigenvectors that failed to converge.
811
+ * If JOBZ = 'N', then IFAIL is not referenced.
812
+ *
813
+ * INFO (output) INTEGER
814
+ * = 0: successful exit
815
+ * < 0: if INFO = -i, the i-th argument had an illegal value
816
+ * > 0: if INFO = i, then i eigenvectors failed to converge.
817
+ * Their indices are stored in array IFAIL.
818
+ *
819
+
820
+ * =====================================================================
821
+ *
822
+
823
+
824
+ </PRE>
825
+ <A HREF="#top">go to the page top</A>
826
+
827
+ <A NAME="dsygs2"></A>
828
+ <H2>dsygs2</H2>
829
+ <PRE>
830
+ USAGE:
831
+ info, a = NumRu::Lapack.dsygs2( itype, uplo, a, b, [:usage => usage, :help => help])
832
+
833
+
834
+ FORTRAN MANUAL
835
+ SUBROUTINE DSYGS2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
836
+
837
+ * Purpose
838
+ * =======
839
+ *
840
+ * DSYGS2 reduces a real symmetric-definite generalized eigenproblem
841
+ * to standard form.
842
+ *
843
+ * If ITYPE = 1, the problem is A*x = lambda*B*x,
844
+ * and A is overwritten by inv(U')*A*inv(U) or inv(L)*A*inv(L')
845
+ *
846
+ * If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
847
+ * B*A*x = lambda*x, and A is overwritten by U*A*U` or L'*A*L.
848
+ *
849
+ * B must have been previously factorized as U'*U or L*L' by DPOTRF.
850
+ *
851
+
852
+ * Arguments
853
+ * =========
854
+ *
855
+ * ITYPE (input) INTEGER
856
+ * = 1: compute inv(U')*A*inv(U) or inv(L)*A*inv(L');
857
+ * = 2 or 3: compute U*A*U' or L'*A*L.
858
+ *
859
+ * UPLO (input) CHARACTER*1
860
+ * Specifies whether the upper or lower triangular part of the
861
+ * symmetric matrix A is stored, and how B has been factorized.
862
+ * = 'U': Upper triangular
863
+ * = 'L': Lower triangular
864
+ *
865
+ * N (input) INTEGER
866
+ * The order of the matrices A and B. N >= 0.
867
+ *
868
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
869
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
870
+ * n by n upper triangular part of A contains the upper
871
+ * triangular part of the matrix A, and the strictly lower
872
+ * triangular part of A is not referenced. If UPLO = 'L', the
873
+ * leading n by n lower triangular part of A contains the lower
874
+ * triangular part of the matrix A, and the strictly upper
875
+ * triangular part of A is not referenced.
876
+ *
877
+ * On exit, if INFO = 0, the transformed matrix, stored in the
878
+ * same format as A.
879
+ *
880
+ * LDA (input) INTEGER
881
+ * The leading dimension of the array A. LDA >= max(1,N).
882
+ *
883
+ * B (input) DOUBLE PRECISION array, dimension (LDB,N)
884
+ * The triangular factor from the Cholesky factorization of B,
885
+ * as returned by DPOTRF.
886
+ *
887
+ * LDB (input) INTEGER
888
+ * The leading dimension of the array B. LDB >= max(1,N).
889
+ *
890
+ * INFO (output) INTEGER
891
+ * = 0: successful exit.
892
+ * < 0: if INFO = -i, the i-th argument had an illegal value.
893
+ *
894
+
895
+ * =====================================================================
896
+ *
897
+
898
+
899
+ </PRE>
900
+ <A HREF="#top">go to the page top</A>
901
+
902
+ <A NAME="dsygst"></A>
903
+ <H2>dsygst</H2>
904
+ <PRE>
905
+ USAGE:
906
+ info, a = NumRu::Lapack.dsygst( itype, uplo, a, b, [:usage => usage, :help => help])
907
+
908
+
909
+ FORTRAN MANUAL
910
+ SUBROUTINE DSYGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
911
+
912
+ * Purpose
913
+ * =======
914
+ *
915
+ * DSYGST reduces a real symmetric-definite generalized eigenproblem
916
+ * to standard form.
917
+ *
918
+ * If ITYPE = 1, the problem is A*x = lambda*B*x,
919
+ * and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T)
920
+ *
921
+ * If ITYPE = 2 or 3, the problem is A*B*x = lambda*x or
922
+ * B*A*x = lambda*x, and A is overwritten by U*A*U**T or L**T*A*L.
923
+ *
924
+ * B must have been previously factorized as U**T*U or L*L**T by DPOTRF.
925
+ *
926
+
927
+ * Arguments
928
+ * =========
929
+ *
930
+ * ITYPE (input) INTEGER
931
+ * = 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T);
932
+ * = 2 or 3: compute U*A*U**T or L**T*A*L.
933
+ *
934
+ * UPLO (input) CHARACTER*1
935
+ * = 'U': Upper triangle of A is stored and B is factored as
936
+ * U**T*U;
937
+ * = 'L': Lower triangle of A is stored and B is factored as
938
+ * L*L**T.
939
+ *
940
+ * N (input) INTEGER
941
+ * The order of the matrices A and B. N >= 0.
942
+ *
943
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
944
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
945
+ * N-by-N upper triangular part of A contains the upper
946
+ * triangular part of the matrix A, and the strictly lower
947
+ * triangular part of A is not referenced. If UPLO = 'L', the
948
+ * leading N-by-N lower triangular part of A contains the lower
949
+ * triangular part of the matrix A, and the strictly upper
950
+ * triangular part of A is not referenced.
951
+ *
952
+ * On exit, if INFO = 0, the transformed matrix, stored in the
953
+ * same format as A.
954
+ *
955
+ * LDA (input) INTEGER
956
+ * The leading dimension of the array A. LDA >= max(1,N).
957
+ *
958
+ * B (input) DOUBLE PRECISION array, dimension (LDB,N)
959
+ * The triangular factor from the Cholesky factorization of B,
960
+ * as returned by DPOTRF.
961
+ *
962
+ * LDB (input) INTEGER
963
+ * The leading dimension of the array B. LDB >= max(1,N).
964
+ *
965
+ * INFO (output) INTEGER
966
+ * = 0: successful exit
967
+ * < 0: if INFO = -i, the i-th argument had an illegal value
968
+ *
969
+
970
+ * =====================================================================
971
+ *
972
+
973
+
974
+ </PRE>
975
+ <A HREF="#top">go to the page top</A>
976
+
977
+ <A NAME="dsygv"></A>
978
+ <H2>dsygv</H2>
979
+ <PRE>
980
+ USAGE:
981
+ w, work, info, a, b = NumRu::Lapack.dsygv( itype, jobz, uplo, a, b, [:lwork => lwork, :usage => usage, :help => help])
982
+
983
+
984
+ FORTRAN MANUAL
985
+ SUBROUTINE DSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO )
986
+
987
+ * Purpose
988
+ * =======
989
+ *
990
+ * DSYGV computes all the eigenvalues, and optionally, the eigenvectors
991
+ * of a real generalized symmetric-definite eigenproblem, of the form
992
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x.
993
+ * Here A and B are assumed to be symmetric and B is also
994
+ * positive definite.
995
+ *
996
+
997
+ * Arguments
998
+ * =========
999
+ *
1000
+ * ITYPE (input) INTEGER
1001
+ * Specifies the problem type to be solved:
1002
+ * = 1: A*x = (lambda)*B*x
1003
+ * = 2: A*B*x = (lambda)*x
1004
+ * = 3: B*A*x = (lambda)*x
1005
+ *
1006
+ * JOBZ (input) CHARACTER*1
1007
+ * = 'N': Compute eigenvalues only;
1008
+ * = 'V': Compute eigenvalues and eigenvectors.
1009
+ *
1010
+ * UPLO (input) CHARACTER*1
1011
+ * = 'U': Upper triangles of A and B are stored;
1012
+ * = 'L': Lower triangles of A and B are stored.
1013
+ *
1014
+ * N (input) INTEGER
1015
+ * The order of the matrices A and B. N >= 0.
1016
+ *
1017
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
1018
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1019
+ * leading N-by-N upper triangular part of A contains the
1020
+ * upper triangular part of the matrix A. If UPLO = 'L',
1021
+ * the leading N-by-N lower triangular part of A contains
1022
+ * the lower triangular part of the matrix A.
1023
+ *
1024
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
1025
+ * matrix Z of eigenvectors. The eigenvectors are normalized
1026
+ * as follows:
1027
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1028
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1029
+ * If JOBZ = 'N', then on exit the upper triangle (if UPLO='U')
1030
+ * or the lower triangle (if UPLO='L') of A, including the
1031
+ * diagonal, is destroyed.
1032
+ *
1033
+ * LDA (input) INTEGER
1034
+ * The leading dimension of the array A. LDA >= max(1,N).
1035
+ *
1036
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
1037
+ * On entry, the symmetric positive definite matrix B.
1038
+ * If UPLO = 'U', the leading N-by-N upper triangular part of B
1039
+ * contains the upper triangular part of the matrix B.
1040
+ * If UPLO = 'L', the leading N-by-N lower triangular part of B
1041
+ * contains the lower triangular part of the matrix B.
1042
+ *
1043
+ * On exit, if INFO <= N, the part of B containing the matrix is
1044
+ * overwritten by the triangular factor U or L from the Cholesky
1045
+ * factorization B = U**T*U or B = L*L**T.
1046
+ *
1047
+ * LDB (input) INTEGER
1048
+ * The leading dimension of the array B. LDB >= max(1,N).
1049
+ *
1050
+ * W (output) DOUBLE PRECISION array, dimension (N)
1051
+ * If INFO = 0, the eigenvalues in ascending order.
1052
+ *
1053
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
1054
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1055
+ *
1056
+ * LWORK (input) INTEGER
1057
+ * The length of the array WORK. LWORK >= max(1,3*N-1).
1058
+ * For optimal efficiency, LWORK >= (NB+2)*N,
1059
+ * where NB is the blocksize for DSYTRD returned by ILAENV.
1060
+ *
1061
+ * If LWORK = -1, then a workspace query is assumed; the routine
1062
+ * only calculates the optimal size of the WORK array, returns
1063
+ * this value as the first entry of the WORK array, and no error
1064
+ * message related to LWORK is issued by XERBLA.
1065
+ *
1066
+ * INFO (output) INTEGER
1067
+ * = 0: successful exit
1068
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1069
+ * > 0: DPOTRF or DSYEV returned an error code:
1070
+ * <= N: if INFO = i, DSYEV failed to converge;
1071
+ * i off-diagonal elements of an intermediate
1072
+ * tridiagonal form did not converge to zero;
1073
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1074
+ * minor of order i of B is not positive definite.
1075
+ * The factorization of B could not be completed and
1076
+ * no eigenvalues or eigenvectors were computed.
1077
+ *
1078
+
1079
+ * =====================================================================
1080
+ *
1081
+
1082
+
1083
+ </PRE>
1084
+ <A HREF="#top">go to the page top</A>
1085
+
1086
+ <A NAME="dsygvd"></A>
1087
+ <H2>dsygvd</H2>
1088
+ <PRE>
1089
+ USAGE:
1090
+ w, work, iwork, info, a, b = NumRu::Lapack.dsygvd( itype, jobz, uplo, a, b, [:lwork => lwork, :liwork => liwork, :usage => usage, :help => help])
1091
+
1092
+
1093
+ FORTRAN MANUAL
1094
+ SUBROUTINE DSYGVD( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, IWORK, LIWORK, INFO )
1095
+
1096
+ * Purpose
1097
+ * =======
1098
+ *
1099
+ * DSYGVD computes all the eigenvalues, and optionally, the eigenvectors
1100
+ * of a real generalized symmetric-definite eigenproblem, of the form
1101
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and
1102
+ * B are assumed to be symmetric and B is also positive definite.
1103
+ * If eigenvectors are desired, it uses a divide and conquer algorithm.
1104
+ *
1105
+ * The divide and conquer algorithm makes very mild assumptions about
1106
+ * floating point arithmetic. It will work on machines with a guard
1107
+ * digit in add/subtract, or on those binary machines without guard
1108
+ * digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
1109
+ * Cray-2. It could conceivably fail on hexadecimal or decimal machines
1110
+ * without guard digits, but we know of none.
1111
+ *
1112
+
1113
+ * Arguments
1114
+ * =========
1115
+ *
1116
+ * ITYPE (input) INTEGER
1117
+ * Specifies the problem type to be solved:
1118
+ * = 1: A*x = (lambda)*B*x
1119
+ * = 2: A*B*x = (lambda)*x
1120
+ * = 3: B*A*x = (lambda)*x
1121
+ *
1122
+ * JOBZ (input) CHARACTER*1
1123
+ * = 'N': Compute eigenvalues only;
1124
+ * = 'V': Compute eigenvalues and eigenvectors.
1125
+ *
1126
+ * UPLO (input) CHARACTER*1
1127
+ * = 'U': Upper triangles of A and B are stored;
1128
+ * = 'L': Lower triangles of A and B are stored.
1129
+ *
1130
+ * N (input) INTEGER
1131
+ * The order of the matrices A and B. N >= 0.
1132
+ *
1133
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
1134
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1135
+ * leading N-by-N upper triangular part of A contains the
1136
+ * upper triangular part of the matrix A. If UPLO = 'L',
1137
+ * the leading N-by-N lower triangular part of A contains
1138
+ * the lower triangular part of the matrix A.
1139
+ *
1140
+ * On exit, if JOBZ = 'V', then if INFO = 0, A contains the
1141
+ * matrix Z of eigenvectors. The eigenvectors are normalized
1142
+ * as follows:
1143
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1144
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1145
+ * If JOBZ = 'N', then on exit the upper triangle (if UPLO='U')
1146
+ * or the lower triangle (if UPLO='L') of A, including the
1147
+ * diagonal, is destroyed.
1148
+ *
1149
+ * LDA (input) INTEGER
1150
+ * The leading dimension of the array A. LDA >= max(1,N).
1151
+ *
1152
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
1153
+ * On entry, the symmetric matrix B. If UPLO = 'U', the
1154
+ * leading N-by-N upper triangular part of B contains the
1155
+ * upper triangular part of the matrix B. If UPLO = 'L',
1156
+ * the leading N-by-N lower triangular part of B contains
1157
+ * the lower triangular part of the matrix B.
1158
+ *
1159
+ * On exit, if INFO <= N, the part of B containing the matrix is
1160
+ * overwritten by the triangular factor U or L from the Cholesky
1161
+ * factorization B = U**T*U or B = L*L**T.
1162
+ *
1163
+ * LDB (input) INTEGER
1164
+ * The leading dimension of the array B. LDB >= max(1,N).
1165
+ *
1166
+ * W (output) DOUBLE PRECISION array, dimension (N)
1167
+ * If INFO = 0, the eigenvalues in ascending order.
1168
+ *
1169
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
1170
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1171
+ *
1172
+ * LWORK (input) INTEGER
1173
+ * The dimension of the array WORK.
1174
+ * If N <= 1, LWORK >= 1.
1175
+ * If JOBZ = 'N' and N > 1, LWORK >= 2*N+1.
1176
+ * If JOBZ = 'V' and N > 1, LWORK >= 1 + 6*N + 2*N**2.
1177
+ *
1178
+ * If LWORK = -1, then a workspace query is assumed; the routine
1179
+ * only calculates the optimal sizes of the WORK and IWORK
1180
+ * arrays, returns these values as the first entries of the WORK
1181
+ * and IWORK arrays, and no error message related to LWORK or
1182
+ * LIWORK is issued by XERBLA.
1183
+ *
1184
+ * IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
1185
+ * On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
1186
+ *
1187
+ * LIWORK (input) INTEGER
1188
+ * The dimension of the array IWORK.
1189
+ * If N <= 1, LIWORK >= 1.
1190
+ * If JOBZ = 'N' and N > 1, LIWORK >= 1.
1191
+ * If JOBZ = 'V' and N > 1, LIWORK >= 3 + 5*N.
1192
+ *
1193
+ * If LIWORK = -1, then a workspace query is assumed; the
1194
+ * routine only calculates the optimal sizes of the WORK and
1195
+ * IWORK arrays, returns these values as the first entries of
1196
+ * the WORK and IWORK arrays, and no error message related to
1197
+ * LWORK or LIWORK is issued by XERBLA.
1198
+ *
1199
+ * INFO (output) INTEGER
1200
+ * = 0: successful exit
1201
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1202
+ * > 0: DPOTRF or DSYEVD returned an error code:
1203
+ * <= N: if INFO = i and JOBZ = 'N', then the algorithm
1204
+ * failed to converge; i off-diagonal elements of an
1205
+ * intermediate tridiagonal form did not converge to
1206
+ * zero;
1207
+ * if INFO = i and JOBZ = 'V', then the algorithm
1208
+ * failed to compute an eigenvalue while working on
1209
+ * the submatrix lying in rows and columns INFO/(N+1)
1210
+ * through mod(INFO,N+1);
1211
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1212
+ * minor of order i of B is not positive definite.
1213
+ * The factorization of B could not be completed and
1214
+ * no eigenvalues or eigenvectors were computed.
1215
+ *
1216
+
1217
+ * Further Details
1218
+ * ===============
1219
+ *
1220
+ * Based on contributions by
1221
+ * Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
1222
+ *
1223
+ * Modified so that no backsubstitution is performed if DSYEVD fails to
1224
+ * converge (NEIG in old code could be greater than N causing out of
1225
+ * bounds reference to A - reported by Ralf Meyer). Also corrected the
1226
+ * description of INFO and the test on ITYPE. Sven, 16 Feb 05.
1227
+ * =====================================================================
1228
+ *
1229
+
1230
+
1231
+ </PRE>
1232
+ <A HREF="#top">go to the page top</A>
1233
+
1234
+ <A NAME="dsygvx"></A>
1235
+ <H2>dsygvx</H2>
1236
+ <PRE>
1237
+ USAGE:
1238
+ m, w, z, work, ifail, info, a, b = NumRu::Lapack.dsygvx( itype, jobz, range, uplo, a, b, vl, vu, il, iu, abstol, [:lwork => lwork, :usage => usage, :help => help])
1239
+
1240
+
1241
+ FORTRAN MANUAL
1242
+ SUBROUTINE DSYGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO )
1243
+
1244
+ * Purpose
1245
+ * =======
1246
+ *
1247
+ * DSYGVX computes selected eigenvalues, and optionally, eigenvectors
1248
+ * of a real generalized symmetric-definite eigenproblem, of the form
1249
+ * A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A
1250
+ * and B are assumed to be symmetric and B is also positive definite.
1251
+ * Eigenvalues and eigenvectors can be selected by specifying either a
1252
+ * range of values or a range of indices for the desired eigenvalues.
1253
+ *
1254
+
1255
+ * Arguments
1256
+ * =========
1257
+ *
1258
+ * ITYPE (input) INTEGER
1259
+ * Specifies the problem type to be solved:
1260
+ * = 1: A*x = (lambda)*B*x
1261
+ * = 2: A*B*x = (lambda)*x
1262
+ * = 3: B*A*x = (lambda)*x
1263
+ *
1264
+ * JOBZ (input) CHARACTER*1
1265
+ * = 'N': Compute eigenvalues only;
1266
+ * = 'V': Compute eigenvalues and eigenvectors.
1267
+ *
1268
+ * RANGE (input) CHARACTER*1
1269
+ * = 'A': all eigenvalues will be found.
1270
+ * = 'V': all eigenvalues in the half-open interval (VL,VU]
1271
+ * will be found.
1272
+ * = 'I': the IL-th through IU-th eigenvalues will be found.
1273
+ *
1274
+ * UPLO (input) CHARACTER*1
1275
+ * = 'U': Upper triangle of A and B are stored;
1276
+ * = 'L': Lower triangle of A and B are stored.
1277
+ *
1278
+ * N (input) INTEGER
1279
+ * The order of the matrix pencil (A,B). N >= 0.
1280
+ *
1281
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA, N)
1282
+ * On entry, the symmetric matrix A. If UPLO = 'U', the
1283
+ * leading N-by-N upper triangular part of A contains the
1284
+ * upper triangular part of the matrix A. If UPLO = 'L',
1285
+ * the leading N-by-N lower triangular part of A contains
1286
+ * the lower triangular part of the matrix A.
1287
+ *
1288
+ * On exit, the lower triangle (if UPLO='L') or the upper
1289
+ * triangle (if UPLO='U') of A, including the diagonal, is
1290
+ * destroyed.
1291
+ *
1292
+ * LDA (input) INTEGER
1293
+ * The leading dimension of the array A. LDA >= max(1,N).
1294
+ *
1295
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB, N)
1296
+ * On entry, the symmetric matrix B. If UPLO = 'U', the
1297
+ * leading N-by-N upper triangular part of B contains the
1298
+ * upper triangular part of the matrix B. If UPLO = 'L',
1299
+ * the leading N-by-N lower triangular part of B contains
1300
+ * the lower triangular part of the matrix B.
1301
+ *
1302
+ * On exit, if INFO <= N, the part of B containing the matrix is
1303
+ * overwritten by the triangular factor U or L from the Cholesky
1304
+ * factorization B = U**T*U or B = L*L**T.
1305
+ *
1306
+ * LDB (input) INTEGER
1307
+ * The leading dimension of the array B. LDB >= max(1,N).
1308
+ *
1309
+ * VL (input) DOUBLE PRECISION
1310
+ * VU (input) DOUBLE PRECISION
1311
+ * If RANGE='V', the lower and upper bounds of the interval to
1312
+ * be searched for eigenvalues. VL < VU.
1313
+ * Not referenced if RANGE = 'A' or 'I'.
1314
+ *
1315
+ * IL (input) INTEGER
1316
+ * IU (input) INTEGER
1317
+ * If RANGE='I', the indices (in ascending order) of the
1318
+ * smallest and largest eigenvalues to be returned.
1319
+ * 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
1320
+ * Not referenced if RANGE = 'A' or 'V'.
1321
+ *
1322
+ * ABSTOL (input) DOUBLE PRECISION
1323
+ * The absolute error tolerance for the eigenvalues.
1324
+ * An approximate eigenvalue is accepted as converged
1325
+ * when it is determined to lie in an interval [a,b]
1326
+ * of width less than or equal to
1327
+ *
1328
+ * ABSTOL + EPS * max( |a|,|b| ) ,
1329
+ *
1330
+ * where EPS is the machine precision. If ABSTOL is less than
1331
+ * or equal to zero, then EPS*|T| will be used in its place,
1332
+ * where |T| is the 1-norm of the tridiagonal matrix obtained
1333
+ * by reducing A to tridiagonal form.
1334
+ *
1335
+ * Eigenvalues will be computed most accurately when ABSTOL is
1336
+ * set to twice the underflow threshold 2*DLAMCH('S'), not zero.
1337
+ * If this routine returns with INFO>0, indicating that some
1338
+ * eigenvectors did not converge, try setting ABSTOL to
1339
+ * 2*DLAMCH('S').
1340
+ *
1341
+ * M (output) INTEGER
1342
+ * The total number of eigenvalues found. 0 <= M <= N.
1343
+ * If RANGE = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
1344
+ *
1345
+ * W (output) DOUBLE PRECISION array, dimension (N)
1346
+ * On normal exit, the first M elements contain the selected
1347
+ * eigenvalues in ascending order.
1348
+ *
1349
+ * Z (output) DOUBLE PRECISION array, dimension (LDZ, max(1,M))
1350
+ * If JOBZ = 'N', then Z is not referenced.
1351
+ * If JOBZ = 'V', then if INFO = 0, the first M columns of Z
1352
+ * contain the orthonormal eigenvectors of the matrix A
1353
+ * corresponding to the selected eigenvalues, with the i-th
1354
+ * column of Z holding the eigenvector associated with W(i).
1355
+ * The eigenvectors are normalized as follows:
1356
+ * if ITYPE = 1 or 2, Z**T*B*Z = I;
1357
+ * if ITYPE = 3, Z**T*inv(B)*Z = I.
1358
+ *
1359
+ * If an eigenvector fails to converge, then that column of Z
1360
+ * contains the latest approximation to the eigenvector, and the
1361
+ * index of the eigenvector is returned in IFAIL.
1362
+ * Note: the user must ensure that at least max(1,M) columns are
1363
+ * supplied in the array Z; if RANGE = 'V', the exact value of M
1364
+ * is not known in advance and an upper bound must be used.
1365
+ *
1366
+ * LDZ (input) INTEGER
1367
+ * The leading dimension of the array Z. LDZ >= 1, and if
1368
+ * JOBZ = 'V', LDZ >= max(1,N).
1369
+ *
1370
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
1371
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1372
+ *
1373
+ * LWORK (input) INTEGER
1374
+ * The length of the array WORK. LWORK >= max(1,8*N).
1375
+ * For optimal efficiency, LWORK >= (NB+3)*N,
1376
+ * where NB is the blocksize for DSYTRD returned by ILAENV.
1377
+ *
1378
+ * If LWORK = -1, then a workspace query is assumed; the routine
1379
+ * only calculates the optimal size of the WORK array, returns
1380
+ * this value as the first entry of the WORK array, and no error
1381
+ * message related to LWORK is issued by XERBLA.
1382
+ *
1383
+ * IWORK (workspace) INTEGER array, dimension (5*N)
1384
+ *
1385
+ * IFAIL (output) INTEGER array, dimension (N)
1386
+ * If JOBZ = 'V', then if INFO = 0, the first M elements of
1387
+ * IFAIL are zero. If INFO > 0, then IFAIL contains the
1388
+ * indices of the eigenvectors that failed to converge.
1389
+ * If JOBZ = 'N', then IFAIL is not referenced.
1390
+ *
1391
+ * INFO (output) INTEGER
1392
+ * = 0: successful exit
1393
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1394
+ * > 0: DPOTRF or DSYEVX returned an error code:
1395
+ * <= N: if INFO = i, DSYEVX failed to converge;
1396
+ * i eigenvectors failed to converge. Their indices
1397
+ * are stored in array IFAIL.
1398
+ * > N: if INFO = N + i, for 1 <= i <= N, then the leading
1399
+ * minor of order i of B is not positive definite.
1400
+ * The factorization of B could not be completed and
1401
+ * no eigenvalues or eigenvectors were computed.
1402
+ *
1403
+
1404
+ * Further Details
1405
+ * ===============
1406
+ *
1407
+ * Based on contributions by
1408
+ * Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
1409
+ *
1410
+ * =====================================================================
1411
+ *
1412
+
1413
+
1414
+ </PRE>
1415
+ <A HREF="#top">go to the page top</A>
1416
+
1417
+ <A NAME="dsyrfs"></A>
1418
+ <H2>dsyrfs</H2>
1419
+ <PRE>
1420
+ USAGE:
1421
+ ferr, berr, info, x = NumRu::Lapack.dsyrfs( uplo, a, af, ipiv, b, x, [:usage => usage, :help => help])
1422
+
1423
+
1424
+ FORTRAN MANUAL
1425
+ SUBROUTINE DSYRFS( UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO )
1426
+
1427
+ * Purpose
1428
+ * =======
1429
+ *
1430
+ * DSYRFS improves the computed solution to a system of linear
1431
+ * equations when the coefficient matrix is symmetric indefinite, and
1432
+ * provides error bounds and backward error estimates for the solution.
1433
+ *
1434
+
1435
+ * Arguments
1436
+ * =========
1437
+ *
1438
+ * UPLO (input) CHARACTER*1
1439
+ * = 'U': Upper triangle of A is stored;
1440
+ * = 'L': Lower triangle of A is stored.
1441
+ *
1442
+ * N (input) INTEGER
1443
+ * The order of the matrix A. N >= 0.
1444
+ *
1445
+ * NRHS (input) INTEGER
1446
+ * The number of right hand sides, i.e., the number of columns
1447
+ * of the matrices B and X. NRHS >= 0.
1448
+ *
1449
+ * A (input) DOUBLE PRECISION array, dimension (LDA,N)
1450
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
1451
+ * upper triangular part of A contains the upper triangular part
1452
+ * of the matrix A, and the strictly lower triangular part of A
1453
+ * is not referenced. If UPLO = 'L', the leading N-by-N lower
1454
+ * triangular part of A contains the lower triangular part of
1455
+ * the matrix A, and the strictly upper triangular part of A is
1456
+ * not referenced.
1457
+ *
1458
+ * LDA (input) INTEGER
1459
+ * The leading dimension of the array A. LDA >= max(1,N).
1460
+ *
1461
+ * AF (input) DOUBLE PRECISION array, dimension (LDAF,N)
1462
+ * The factored form of the matrix A. AF contains the block
1463
+ * diagonal matrix D and the multipliers used to obtain the
1464
+ * factor U or L from the factorization A = U*D*U**T or
1465
+ * A = L*D*L**T as computed by DSYTRF.
1466
+ *
1467
+ * LDAF (input) INTEGER
1468
+ * The leading dimension of the array AF. LDAF >= max(1,N).
1469
+ *
1470
+ * IPIV (input) INTEGER array, dimension (N)
1471
+ * Details of the interchanges and the block structure of D
1472
+ * as determined by DSYTRF.
1473
+ *
1474
+ * B (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
1475
+ * The right hand side matrix B.
1476
+ *
1477
+ * LDB (input) INTEGER
1478
+ * The leading dimension of the array B. LDB >= max(1,N).
1479
+ *
1480
+ * X (input/output) DOUBLE PRECISION array, dimension (LDX,NRHS)
1481
+ * On entry, the solution matrix X, as computed by DSYTRS.
1482
+ * On exit, the improved solution matrix X.
1483
+ *
1484
+ * LDX (input) INTEGER
1485
+ * The leading dimension of the array X. LDX >= max(1,N).
1486
+ *
1487
+ * FERR (output) DOUBLE PRECISION array, dimension (NRHS)
1488
+ * The estimated forward error bound for each solution vector
1489
+ * X(j) (the j-th column of the solution matrix X).
1490
+ * If XTRUE is the true solution corresponding to X(j), FERR(j)
1491
+ * is an estimated upper bound for the magnitude of the largest
1492
+ * element in (X(j) - XTRUE) divided by the magnitude of the
1493
+ * largest element in X(j). The estimate is as reliable as
1494
+ * the estimate for RCOND, and is almost always a slight
1495
+ * overestimate of the true error.
1496
+ *
1497
+ * BERR (output) DOUBLE PRECISION array, dimension (NRHS)
1498
+ * The componentwise relative backward error of each solution
1499
+ * vector X(j) (i.e., the smallest relative change in
1500
+ * any element of A or B that makes X(j) an exact solution).
1501
+ *
1502
+ * WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
1503
+ *
1504
+ * IWORK (workspace) INTEGER array, dimension (N)
1505
+ *
1506
+ * INFO (output) INTEGER
1507
+ * = 0: successful exit
1508
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1509
+ *
1510
+ * Internal Parameters
1511
+ * ===================
1512
+ *
1513
+ * ITMAX is the maximum number of steps of iterative refinement.
1514
+ *
1515
+
1516
+ * =====================================================================
1517
+ *
1518
+
1519
+
1520
+ </PRE>
1521
+ <A HREF="#top">go to the page top</A>
1522
+
1523
+ <A NAME="dsyrfsx"></A>
1524
+ <H2>dsyrfsx</H2>
1525
+ <PRE>
1526
+ USAGE:
1527
+ rcond, berr, err_bnds_norm, err_bnds_comp, info, s, x, params = NumRu::Lapack.dsyrfsx( uplo, equed, a, af, ipiv, s, b, x, params, [:usage => usage, :help => help])
1528
+
1529
+
1530
+ FORTRAN MANUAL
1531
+ SUBROUTINE DSYRFSX( 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 )
1532
+
1533
+ * Purpose
1534
+ * =======
1535
+ *
1536
+ * DSYRFSX improves the computed solution to a system of linear
1537
+ * equations when the coefficient matrix is symmetric indefinite, and
1538
+ * provides error bounds and backward error estimates for the
1539
+ * solution. In addition to normwise error bound, the code provides
1540
+ * maximum componentwise error bound if possible. See comments for
1541
+ * ERR_BNDS_NORM and ERR_BNDS_COMP for details of the error bounds.
1542
+ *
1543
+ * The original system of linear equations may have been equilibrated
1544
+ * before calling this routine, as described by arguments EQUED and S
1545
+ * below. In this case, the solution and error bounds returned are
1546
+ * for the original unequilibrated system.
1547
+ *
1548
+
1549
+ * Arguments
1550
+ * =========
1551
+ *
1552
+ * Some optional parameters are bundled in the PARAMS array. These
1553
+ * settings determine how refinement is performed, but often the
1554
+ * defaults are acceptable. If the defaults are acceptable, users
1555
+ * can pass NPARAMS = 0 which prevents the source code from accessing
1556
+ * the PARAMS argument.
1557
+ *
1558
+ * UPLO (input) CHARACTER*1
1559
+ * = 'U': Upper triangle of A is stored;
1560
+ * = 'L': Lower triangle of A is stored.
1561
+ *
1562
+ * EQUED (input) CHARACTER*1
1563
+ * Specifies the form of equilibration that was done to A
1564
+ * before calling this routine. This is needed to compute
1565
+ * the solution and error bounds correctly.
1566
+ * = 'N': No equilibration
1567
+ * = 'Y': Both row and column equilibration, i.e., A has been
1568
+ * replaced by diag(S) * A * diag(S).
1569
+ * The right hand side B has been changed accordingly.
1570
+ *
1571
+ * N (input) INTEGER
1572
+ * The order of the matrix A. N >= 0.
1573
+ *
1574
+ * NRHS (input) INTEGER
1575
+ * The number of right hand sides, i.e., the number of columns
1576
+ * of the matrices B and X. NRHS >= 0.
1577
+ *
1578
+ * A (input) DOUBLE PRECISION array, dimension (LDA,N)
1579
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
1580
+ * upper triangular part of A contains the upper triangular
1581
+ * part of the matrix A, and the strictly lower triangular
1582
+ * part of A is not referenced. If UPLO = 'L', the leading
1583
+ * N-by-N lower triangular part of A contains the lower
1584
+ * triangular part of the matrix A, and the strictly upper
1585
+ * triangular part of A is not referenced.
1586
+ *
1587
+ * LDA (input) INTEGER
1588
+ * The leading dimension of the array A. LDA >= max(1,N).
1589
+ *
1590
+ * AF (input) DOUBLE PRECISION array, dimension (LDAF,N)
1591
+ * The factored form of the matrix A. AF contains the block
1592
+ * diagonal matrix D and the multipliers used to obtain the
1593
+ * factor U or L from the factorization A = U*D*U**T or A =
1594
+ * L*D*L**T as computed by DSYTRF.
1595
+ *
1596
+ * LDAF (input) INTEGER
1597
+ * The leading dimension of the array AF. LDAF >= max(1,N).
1598
+ *
1599
+ * IPIV (input) INTEGER array, dimension (N)
1600
+ * Details of the interchanges and the block structure of D
1601
+ * as determined by DSYTRF.
1602
+ *
1603
+ * S (input or output) DOUBLE PRECISION array, dimension (N)
1604
+ * The scale factors for A. If EQUED = 'Y', A is multiplied on
1605
+ * the left and right by diag(S). S is an input argument if FACT =
1606
+ * 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED
1607
+ * = 'Y', each element of S must be positive. If S is output, each
1608
+ * element of S is a power of the radix. If S is input, each element
1609
+ * of S should be a power of the radix to ensure a reliable solution
1610
+ * and error estimates. Scaling by powers of the radix does not cause
1611
+ * rounding errors unless the result underflows or overflows.
1612
+ * Rounding errors during scaling lead to refining with a matrix that
1613
+ * is not equivalent to the input matrix, producing error estimates
1614
+ * that may not be reliable.
1615
+ *
1616
+ * B (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
1617
+ * The right hand side matrix B.
1618
+ *
1619
+ * LDB (input) INTEGER
1620
+ * The leading dimension of the array B. LDB >= max(1,N).
1621
+ *
1622
+ * X (input/output) DOUBLE PRECISION array, dimension (LDX,NRHS)
1623
+ * On entry, the solution matrix X, as computed by DGETRS.
1624
+ * On exit, the improved solution matrix X.
1625
+ *
1626
+ * LDX (input) INTEGER
1627
+ * The leading dimension of the array X. LDX >= max(1,N).
1628
+ *
1629
+ * RCOND (output) DOUBLE PRECISION
1630
+ * Reciprocal scaled condition number. This is an estimate of the
1631
+ * reciprocal Skeel condition number of the matrix A after
1632
+ * equilibration (if done). If this is less than the machine
1633
+ * precision (in particular, if it is zero), the matrix is singular
1634
+ * to working precision. Note that the error may still be small even
1635
+ * if this number is very small and the matrix appears ill-
1636
+ * conditioned.
1637
+ *
1638
+ * BERR (output) DOUBLE PRECISION array, dimension (NRHS)
1639
+ * Componentwise relative backward error. This is the
1640
+ * componentwise relative backward error of each solution vector X(j)
1641
+ * (i.e., the smallest relative change in any element of A or B that
1642
+ * makes X(j) an exact solution).
1643
+ *
1644
+ * N_ERR_BNDS (input) INTEGER
1645
+ * Number of error bounds to return for each right hand side
1646
+ * and each type (normwise or componentwise). See ERR_BNDS_NORM and
1647
+ * ERR_BNDS_COMP below.
1648
+ *
1649
+ * ERR_BNDS_NORM (output) DOUBLE PRECISION array, dimension (NRHS, N_ERR_BNDS)
1650
+ * For each right-hand side, this array contains information about
1651
+ * various error bounds and condition numbers corresponding to the
1652
+ * normwise relative error, which is defined as follows:
1653
+ *
1654
+ * Normwise relative error in the ith solution vector:
1655
+ * max_j (abs(XTRUE(j,i) - X(j,i)))
1656
+ * ------------------------------
1657
+ * max_j abs(X(j,i))
1658
+ *
1659
+ * The array is indexed by the type of error information as described
1660
+ * below. There currently are up to three pieces of information
1661
+ * returned.
1662
+ *
1663
+ * The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
1664
+ * right-hand side.
1665
+ *
1666
+ * The second index in ERR_BNDS_NORM(:,err) contains the following
1667
+ * three fields:
1668
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
1669
+ * reciprocal condition number is less than the threshold
1670
+ * sqrt(n) * dlamch('Epsilon').
1671
+ *
1672
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
1673
+ * almost certainly within a factor of 10 of the true error
1674
+ * so long as the next entry is greater than the threshold
1675
+ * sqrt(n) * dlamch('Epsilon'). This error bound should only
1676
+ * be trusted if the previous boolean is true.
1677
+ *
1678
+ * err = 3 Reciprocal condition number: Estimated normwise
1679
+ * reciprocal condition number. Compared with the threshold
1680
+ * sqrt(n) * dlamch('Epsilon') to determine if the error
1681
+ * estimate is "guaranteed". These reciprocal condition
1682
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
1683
+ * appropriately scaled matrix Z.
1684
+ * Let Z = S*A, where S scales each row by a power of the
1685
+ * radix so all absolute row sums of Z are approximately 1.
1686
+ *
1687
+ * See Lapack Working Note 165 for further details and extra
1688
+ * cautions.
1689
+ *
1690
+ * ERR_BNDS_COMP (output) DOUBLE PRECISION array, dimension (NRHS, N_ERR_BNDS)
1691
+ * For each right-hand side, this array contains information about
1692
+ * various error bounds and condition numbers corresponding to the
1693
+ * componentwise relative error, which is defined as follows:
1694
+ *
1695
+ * Componentwise relative error in the ith solution vector:
1696
+ * abs(XTRUE(j,i) - X(j,i))
1697
+ * max_j ----------------------
1698
+ * abs(X(j,i))
1699
+ *
1700
+ * The array is indexed by the right-hand side i (on which the
1701
+ * componentwise relative error depends), and the type of error
1702
+ * information as described below. There currently are up to three
1703
+ * pieces of information returned for each right-hand side. If
1704
+ * componentwise accuracy is not requested (PARAMS(3) = 0.0), then
1705
+ * ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
1706
+ * the first (:,N_ERR_BNDS) entries are returned.
1707
+ *
1708
+ * The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
1709
+ * right-hand side.
1710
+ *
1711
+ * The second index in ERR_BNDS_COMP(:,err) contains the following
1712
+ * three fields:
1713
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
1714
+ * reciprocal condition number is less than the threshold
1715
+ * sqrt(n) * dlamch('Epsilon').
1716
+ *
1717
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
1718
+ * almost certainly within a factor of 10 of the true error
1719
+ * so long as the next entry is greater than the threshold
1720
+ * sqrt(n) * dlamch('Epsilon'). This error bound should only
1721
+ * be trusted if the previous boolean is true.
1722
+ *
1723
+ * err = 3 Reciprocal condition number: Estimated componentwise
1724
+ * reciprocal condition number. Compared with the threshold
1725
+ * sqrt(n) * dlamch('Epsilon') to determine if the error
1726
+ * estimate is "guaranteed". These reciprocal condition
1727
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
1728
+ * appropriately scaled matrix Z.
1729
+ * Let Z = S*(A*diag(x)), where x is the solution for the
1730
+ * current right-hand side and S scales each row of
1731
+ * A*diag(x) by a power of the radix so all absolute row
1732
+ * sums of Z are approximately 1.
1733
+ *
1734
+ * See Lapack Working Note 165 for further details and extra
1735
+ * cautions.
1736
+ *
1737
+ * NPARAMS (input) INTEGER
1738
+ * Specifies the number of parameters set in PARAMS. If .LE. 0, the
1739
+ * PARAMS array is never referenced and default values are used.
1740
+ *
1741
+ * PARAMS (input / output) DOUBLE PRECISION array, dimension (NPARAMS)
1742
+ * Specifies algorithm parameters. If an entry is .LT. 0.0, then
1743
+ * that entry will be filled with default value used for that
1744
+ * parameter. Only positions up to NPARAMS are accessed; defaults
1745
+ * are used for higher-numbered parameters.
1746
+ *
1747
+ * PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
1748
+ * refinement or not.
1749
+ * Default: 1.0D+0
1750
+ * = 0.0 : No refinement is performed, and no error bounds are
1751
+ * computed.
1752
+ * = 1.0 : Use the double-precision refinement algorithm,
1753
+ * possibly with doubled-single computations if the
1754
+ * compilation environment does not support DOUBLE
1755
+ * PRECISION.
1756
+ * (other values are reserved for future use)
1757
+ *
1758
+ * PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual
1759
+ * computations allowed for refinement.
1760
+ * Default: 10
1761
+ * Aggressive: Set to 100 to permit convergence using approximate
1762
+ * factorizations or factorizations other than LU. If
1763
+ * the factorization uses a technique other than
1764
+ * Gaussian elimination, the guarantees in
1765
+ * err_bnds_norm and err_bnds_comp may no longer be
1766
+ * trustworthy.
1767
+ *
1768
+ * PARAMS(LA_LINRX_CWISE_I = 3) : Flag determining if the code
1769
+ * will attempt to find a solution with small componentwise
1770
+ * relative error in the double-precision algorithm. Positive
1771
+ * is true, 0.0 is false.
1772
+ * Default: 1.0 (attempt componentwise convergence)
1773
+ *
1774
+ * WORK (workspace) DOUBLE PRECISION array, dimension (4*N)
1775
+ *
1776
+ * IWORK (workspace) INTEGER array, dimension (N)
1777
+ *
1778
+ * INFO (output) INTEGER
1779
+ * = 0: Successful exit. The solution to every right-hand side is
1780
+ * guaranteed.
1781
+ * < 0: If INFO = -i, the i-th argument had an illegal value
1782
+ * > 0 and <= N: U(INFO,INFO) is exactly zero. The factorization
1783
+ * has been completed, but the factor U is exactly singular, so
1784
+ * the solution and error bounds could not be computed. RCOND = 0
1785
+ * is returned.
1786
+ * = N+J: The solution corresponding to the Jth right-hand side is
1787
+ * not guaranteed. The solutions corresponding to other right-
1788
+ * hand sides K with K > J may not be guaranteed as well, but
1789
+ * only the first such right-hand side is reported. If a small
1790
+ * componentwise error is not requested (PARAMS(3) = 0.0) then
1791
+ * the Jth right-hand side is the first with a normwise error
1792
+ * bound that is not guaranteed (the smallest J such
1793
+ * that ERR_BNDS_NORM(J,1) = 0.0). By default (PARAMS(3) = 1.0)
1794
+ * the Jth right-hand side is the first with either a normwise or
1795
+ * componentwise error bound that is not guaranteed (the smallest
1796
+ * J such that either ERR_BNDS_NORM(J,1) = 0.0 or
1797
+ * ERR_BNDS_COMP(J,1) = 0.0). See the definition of
1798
+ * ERR_BNDS_NORM(:,1) and ERR_BNDS_COMP(:,1). To get information
1799
+ * about all of the right-hand sides check ERR_BNDS_NORM or
1800
+ * ERR_BNDS_COMP.
1801
+ *
1802
+
1803
+ * ==================================================================
1804
+ *
1805
+
1806
+
1807
+ </PRE>
1808
+ <A HREF="#top">go to the page top</A>
1809
+
1810
+ <A NAME="dsysv"></A>
1811
+ <H2>dsysv</H2>
1812
+ <PRE>
1813
+ USAGE:
1814
+ ipiv, work, info, a, b = NumRu::Lapack.dsysv( uplo, a, b, [:lwork => lwork, :usage => usage, :help => help])
1815
+
1816
+
1817
+ FORTRAN MANUAL
1818
+ SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO )
1819
+
1820
+ * Purpose
1821
+ * =======
1822
+ *
1823
+ * DSYSV computes the solution to a real system of linear equations
1824
+ * A * X = B,
1825
+ * where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
1826
+ * matrices.
1827
+ *
1828
+ * The diagonal pivoting method is used to factor A as
1829
+ * A = U * D * U**T, if UPLO = 'U', or
1830
+ * A = L * D * L**T, if UPLO = 'L',
1831
+ * where U (or L) is a product of permutation and unit upper (lower)
1832
+ * triangular matrices, and D is symmetric and block diagonal with
1833
+ * 1-by-1 and 2-by-2 diagonal blocks. The factored form of A is then
1834
+ * used to solve the system of equations A * X = B.
1835
+ *
1836
+
1837
+ * Arguments
1838
+ * =========
1839
+ *
1840
+ * UPLO (input) CHARACTER*1
1841
+ * = 'U': Upper triangle of A is stored;
1842
+ * = 'L': Lower triangle of A is stored.
1843
+ *
1844
+ * N (input) INTEGER
1845
+ * The number of linear equations, i.e., the order of the
1846
+ * matrix A. N >= 0.
1847
+ *
1848
+ * NRHS (input) INTEGER
1849
+ * The number of right hand sides, i.e., the number of columns
1850
+ * of the matrix B. NRHS >= 0.
1851
+ *
1852
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
1853
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
1854
+ * N-by-N upper triangular part of A contains the upper
1855
+ * triangular part of the matrix A, and the strictly lower
1856
+ * triangular part of A is not referenced. If UPLO = 'L', the
1857
+ * leading N-by-N lower triangular part of A contains the lower
1858
+ * triangular part of the matrix A, and the strictly upper
1859
+ * triangular part of A is not referenced.
1860
+ *
1861
+ * On exit, if INFO = 0, the block diagonal matrix D and the
1862
+ * multipliers used to obtain the factor U or L from the
1863
+ * factorization A = U*D*U**T or A = L*D*L**T as computed by
1864
+ * DSYTRF.
1865
+ *
1866
+ * LDA (input) INTEGER
1867
+ * The leading dimension of the array A. LDA >= max(1,N).
1868
+ *
1869
+ * IPIV (output) INTEGER array, dimension (N)
1870
+ * Details of the interchanges and the block structure of D, as
1871
+ * determined by DSYTRF. If IPIV(k) > 0, then rows and columns
1872
+ * k and IPIV(k) were interchanged, and D(k,k) is a 1-by-1
1873
+ * diagonal block. If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0,
1874
+ * then rows and columns k-1 and -IPIV(k) were interchanged and
1875
+ * D(k-1:k,k-1:k) is a 2-by-2 diagonal block. If UPLO = 'L' and
1876
+ * IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and
1877
+ * -IPIV(k) were interchanged and D(k:k+1,k:k+1) is a 2-by-2
1878
+ * diagonal block.
1879
+ *
1880
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
1881
+ * On entry, the N-by-NRHS right hand side matrix B.
1882
+ * On exit, if INFO = 0, the N-by-NRHS solution matrix X.
1883
+ *
1884
+ * LDB (input) INTEGER
1885
+ * The leading dimension of the array B. LDB >= max(1,N).
1886
+ *
1887
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
1888
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
1889
+ *
1890
+ * LWORK (input) INTEGER
1891
+ * The length of WORK. LWORK >= 1, and for best performance
1892
+ * LWORK >= max(1,N*NB), where NB is the optimal blocksize for
1893
+ * DSYTRF.
1894
+ *
1895
+ * If LWORK = -1, then a workspace query is assumed; the routine
1896
+ * only calculates the optimal size of the WORK array, returns
1897
+ * this value as the first entry of the WORK array, and no error
1898
+ * message related to LWORK is issued by XERBLA.
1899
+ *
1900
+ * INFO (output) INTEGER
1901
+ * = 0: successful exit
1902
+ * < 0: if INFO = -i, the i-th argument had an illegal value
1903
+ * > 0: if INFO = i, D(i,i) is exactly zero. The factorization
1904
+ * has been completed, but the block diagonal matrix D is
1905
+ * exactly singular, so the solution could not be computed.
1906
+ *
1907
+
1908
+ * =====================================================================
1909
+ *
1910
+ * .. Local Scalars ..
1911
+ LOGICAL LQUERY
1912
+ INTEGER LWKOPT, NB
1913
+ * ..
1914
+ * .. External Functions ..
1915
+ LOGICAL LSAME
1916
+ INTEGER ILAENV
1917
+ EXTERNAL LSAME, ILAENV
1918
+ * ..
1919
+ * .. External Subroutines ..
1920
+ EXTERNAL DSYTRF, DSYTRS2, XERBLA
1921
+ * ..
1922
+ * .. Intrinsic Functions ..
1923
+ INTRINSIC MAX
1924
+ * ..
1925
+
1926
+
1927
+ </PRE>
1928
+ <A HREF="#top">go to the page top</A>
1929
+
1930
+ <A NAME="dsysvx"></A>
1931
+ <H2>dsysvx</H2>
1932
+ <PRE>
1933
+ USAGE:
1934
+ x, rcond, ferr, berr, work, info, af, ipiv = NumRu::Lapack.dsysvx( fact, uplo, a, af, ipiv, b, [:lwork => lwork, :usage => usage, :help => help])
1935
+
1936
+
1937
+ FORTRAN MANUAL
1938
+ SUBROUTINE DSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, IWORK, INFO )
1939
+
1940
+ * Purpose
1941
+ * =======
1942
+ *
1943
+ * DSYSVX uses the diagonal pivoting factorization to compute the
1944
+ * solution to a real system of linear equations A * X = B,
1945
+ * where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
1946
+ * matrices.
1947
+ *
1948
+ * Error bounds on the solution and a condition estimate are also
1949
+ * provided.
1950
+ *
1951
+ * Description
1952
+ * ===========
1953
+ *
1954
+ * The following steps are performed:
1955
+ *
1956
+ * 1. If FACT = 'N', the diagonal pivoting method is used to factor A.
1957
+ * The form of the factorization is
1958
+ * A = U * D * U**T, if UPLO = 'U', or
1959
+ * A = L * D * L**T, if UPLO = 'L',
1960
+ * where U (or L) is a product of permutation and unit upper (lower)
1961
+ * triangular matrices, and D is symmetric and block diagonal with
1962
+ * 1-by-1 and 2-by-2 diagonal blocks.
1963
+ *
1964
+ * 2. If some D(i,i)=0, so that D is exactly singular, then the routine
1965
+ * returns with INFO = i. Otherwise, the factored form of A is used
1966
+ * to estimate the condition number of the matrix A. If the
1967
+ * reciprocal of the condition number is less than machine precision,
1968
+ * INFO = N+1 is returned as a warning, but the routine still goes on
1969
+ * to solve for X and compute error bounds as described below.
1970
+ *
1971
+ * 3. The system of equations is solved for X using the factored form
1972
+ * of A.
1973
+ *
1974
+ * 4. Iterative refinement is applied to improve the computed solution
1975
+ * matrix and calculate error bounds and backward error estimates
1976
+ * for it.
1977
+ *
1978
+
1979
+ * Arguments
1980
+ * =========
1981
+ *
1982
+ * FACT (input) CHARACTER*1
1983
+ * Specifies whether or not the factored form of A has been
1984
+ * supplied on entry.
1985
+ * = 'F': On entry, AF and IPIV contain the factored form of
1986
+ * A. AF and IPIV will not be modified.
1987
+ * = 'N': The matrix A will be copied to AF and factored.
1988
+ *
1989
+ * UPLO (input) CHARACTER*1
1990
+ * = 'U': Upper triangle of A is stored;
1991
+ * = 'L': Lower triangle of A is stored.
1992
+ *
1993
+ * N (input) INTEGER
1994
+ * The number of linear equations, i.e., the order of the
1995
+ * matrix A. N >= 0.
1996
+ *
1997
+ * NRHS (input) INTEGER
1998
+ * The number of right hand sides, i.e., the number of columns
1999
+ * of the matrices B and X. NRHS >= 0.
2000
+ *
2001
+ * A (input) DOUBLE PRECISION array, dimension (LDA,N)
2002
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
2003
+ * upper triangular part of A contains the upper triangular part
2004
+ * of the matrix A, and the strictly lower triangular part of A
2005
+ * is not referenced. If UPLO = 'L', the leading N-by-N lower
2006
+ * triangular part of A contains the lower triangular part of
2007
+ * the matrix A, and the strictly upper triangular part of A is
2008
+ * not referenced.
2009
+ *
2010
+ * LDA (input) INTEGER
2011
+ * The leading dimension of the array A. LDA >= max(1,N).
2012
+ *
2013
+ * AF (input or output) DOUBLE PRECISION array, dimension (LDAF,N)
2014
+ * If FACT = 'F', then AF is an input argument and on entry
2015
+ * contains the block diagonal matrix D and the multipliers used
2016
+ * to obtain the factor U or L from the factorization
2017
+ * A = U*D*U**T or A = L*D*L**T as computed by DSYTRF.
2018
+ *
2019
+ * If FACT = 'N', then AF is an output argument and on exit
2020
+ * returns the block diagonal matrix D and the multipliers used
2021
+ * to obtain the factor U or L from the factorization
2022
+ * A = U*D*U**T or A = L*D*L**T.
2023
+ *
2024
+ * LDAF (input) INTEGER
2025
+ * The leading dimension of the array AF. LDAF >= max(1,N).
2026
+ *
2027
+ * IPIV (input or output) INTEGER array, dimension (N)
2028
+ * If FACT = 'F', then IPIV is an input argument and on entry
2029
+ * contains details of the interchanges and the block structure
2030
+ * of D, as determined by DSYTRF.
2031
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
2032
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
2033
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
2034
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
2035
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
2036
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
2037
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2038
+ *
2039
+ * If FACT = 'N', then IPIV is an output argument and on exit
2040
+ * contains details of the interchanges and the block structure
2041
+ * of D, as determined by DSYTRF.
2042
+ *
2043
+ * B (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
2044
+ * The N-by-NRHS right hand side matrix B.
2045
+ *
2046
+ * LDB (input) INTEGER
2047
+ * The leading dimension of the array B. LDB >= max(1,N).
2048
+ *
2049
+ * X (output) DOUBLE PRECISION array, dimension (LDX,NRHS)
2050
+ * If INFO = 0 or INFO = N+1, the N-by-NRHS solution matrix X.
2051
+ *
2052
+ * LDX (input) INTEGER
2053
+ * The leading dimension of the array X. LDX >= max(1,N).
2054
+ *
2055
+ * RCOND (output) DOUBLE PRECISION
2056
+ * The estimate of the reciprocal condition number of the matrix
2057
+ * A. If RCOND is less than the machine precision (in
2058
+ * particular, if RCOND = 0), the matrix is singular to working
2059
+ * precision. This condition is indicated by a return code of
2060
+ * INFO > 0.
2061
+ *
2062
+ * FERR (output) DOUBLE PRECISION array, dimension (NRHS)
2063
+ * The estimated forward error bound for each solution vector
2064
+ * X(j) (the j-th column of the solution matrix X).
2065
+ * If XTRUE is the true solution corresponding to X(j), FERR(j)
2066
+ * is an estimated upper bound for the magnitude of the largest
2067
+ * element in (X(j) - XTRUE) divided by the magnitude of the
2068
+ * largest element in X(j). The estimate is as reliable as
2069
+ * the estimate for RCOND, and is almost always a slight
2070
+ * overestimate of the true error.
2071
+ *
2072
+ * BERR (output) DOUBLE PRECISION array, dimension (NRHS)
2073
+ * The componentwise relative backward error of each solution
2074
+ * vector X(j) (i.e., the smallest relative change in
2075
+ * any element of A or B that makes X(j) an exact solution).
2076
+ *
2077
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
2078
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
2079
+ *
2080
+ * LWORK (input) INTEGER
2081
+ * The length of WORK. LWORK >= max(1,3*N), and for best
2082
+ * performance, when FACT = 'N', LWORK >= max(1,3*N,N*NB), where
2083
+ * NB is the optimal blocksize for DSYTRF.
2084
+ *
2085
+ * If LWORK = -1, then a workspace query is assumed; the routine
2086
+ * only calculates the optimal size of the WORK array, returns
2087
+ * this value as the first entry of the WORK array, and no error
2088
+ * message related to LWORK is issued by XERBLA.
2089
+ *
2090
+ * IWORK (workspace) INTEGER array, dimension (N)
2091
+ *
2092
+ * INFO (output) INTEGER
2093
+ * = 0: successful exit
2094
+ * < 0: if INFO = -i, the i-th argument had an illegal value
2095
+ * > 0: if INFO = i, and i is
2096
+ * <= N: D(i,i) is exactly zero. The factorization
2097
+ * has been completed but the factor D is exactly
2098
+ * singular, so the solution and error bounds could
2099
+ * not be computed. RCOND = 0 is returned.
2100
+ * = N+1: D is nonsingular, but RCOND is less than machine
2101
+ * precision, meaning that the matrix is singular
2102
+ * to working precision. Nevertheless, the
2103
+ * solution and error bounds are computed because
2104
+ * there are a number of situations where the
2105
+ * computed solution can be more accurate than the
2106
+ * value of RCOND would suggest.
2107
+ *
2108
+
2109
+ * =====================================================================
2110
+ *
2111
+
2112
+
2113
+ </PRE>
2114
+ <A HREF="#top">go to the page top</A>
2115
+
2116
+ <A NAME="dsysvxx"></A>
2117
+ <H2>dsysvxx</H2>
2118
+ <PRE>
2119
+ USAGE:
2120
+ x, rcond, rpvgrw, berr, err_bnds_norm, err_bnds_comp, info, a, af, ipiv, equed, s, b, params = NumRu::Lapack.dsysvxx( fact, uplo, a, af, ipiv, equed, s, b, params, [:usage => usage, :help => help])
2121
+
2122
+
2123
+ FORTRAN MANUAL
2124
+ SUBROUTINE DSYSVXX( 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 )
2125
+
2126
+ * Purpose
2127
+ * =======
2128
+ *
2129
+ * DSYSVXX uses the diagonal pivoting factorization to compute the
2130
+ * solution to a double precision system of linear equations A * X = B, where A
2131
+ * is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
2132
+ *
2133
+ * If requested, both normwise and maximum componentwise error bounds
2134
+ * are returned. DSYSVXX will return a solution with a tiny
2135
+ * guaranteed error (O(eps) where eps is the working machine
2136
+ * precision) unless the matrix is very ill-conditioned, in which
2137
+ * case a warning is returned. Relevant condition numbers also are
2138
+ * calculated and returned.
2139
+ *
2140
+ * DSYSVXX accepts user-provided factorizations and equilibration
2141
+ * factors; see the definitions of the FACT and EQUED options.
2142
+ * Solving with refinement and using a factorization from a previous
2143
+ * DSYSVXX call will also produce a solution with either O(eps)
2144
+ * errors or warnings, but we cannot make that claim for general
2145
+ * user-provided factorizations and equilibration factors if they
2146
+ * differ from what DSYSVXX would itself produce.
2147
+ *
2148
+ * Description
2149
+ * ===========
2150
+ *
2151
+ * The following steps are performed:
2152
+ *
2153
+ * 1. If FACT = 'E', double precision scaling factors are computed to equilibrate
2154
+ * the system:
2155
+ *
2156
+ * diag(S)*A*diag(S) *inv(diag(S))*X = diag(S)*B
2157
+ *
2158
+ * Whether or not the system will be equilibrated depends on the
2159
+ * scaling of the matrix A, but if equilibration is used, A is
2160
+ * overwritten by diag(S)*A*diag(S) and B by diag(S)*B.
2161
+ *
2162
+ * 2. If FACT = 'N' or 'E', the LU decomposition is used to factor
2163
+ * the matrix A (after equilibration if FACT = 'E') as
2164
+ *
2165
+ * A = U * D * U**T, if UPLO = 'U', or
2166
+ * A = L * D * L**T, if UPLO = 'L',
2167
+ *
2168
+ * where U (or L) is a product of permutation and unit upper (lower)
2169
+ * triangular matrices, and D is symmetric and block diagonal with
2170
+ * 1-by-1 and 2-by-2 diagonal blocks.
2171
+ *
2172
+ * 3. If some D(i,i)=0, so that D is exactly singular, then the
2173
+ * routine returns with INFO = i. Otherwise, the factored form of A
2174
+ * is used to estimate the condition number of the matrix A (see
2175
+ * argument RCOND). If the reciprocal of the condition number is
2176
+ * less than machine precision, the routine still goes on to solve
2177
+ * for X and compute error bounds as described below.
2178
+ *
2179
+ * 4. The system of equations is solved for X using the factored form
2180
+ * of A.
2181
+ *
2182
+ * 5. By default (unless PARAMS(LA_LINRX_ITREF_I) is set to zero),
2183
+ * the routine will use iterative refinement to try to get a small
2184
+ * error and error bounds. Refinement calculates the residual to at
2185
+ * least twice the working precision.
2186
+ *
2187
+ * 6. If equilibration was used, the matrix X is premultiplied by
2188
+ * diag(R) so that it solves the original system before
2189
+ * equilibration.
2190
+ *
2191
+
2192
+ * Arguments
2193
+ * =========
2194
+ *
2195
+ * Some optional parameters are bundled in the PARAMS array. These
2196
+ * settings determine how refinement is performed, but often the
2197
+ * defaults are acceptable. If the defaults are acceptable, users
2198
+ * can pass NPARAMS = 0 which prevents the source code from accessing
2199
+ * the PARAMS argument.
2200
+ *
2201
+ * FACT (input) CHARACTER*1
2202
+ * Specifies whether or not the factored form of the matrix A is
2203
+ * supplied on entry, and if not, whether the matrix A should be
2204
+ * equilibrated before it is factored.
2205
+ * = 'F': On entry, AF and IPIV contain the factored form of A.
2206
+ * If EQUED is not 'N', the matrix A has been
2207
+ * equilibrated with scaling factors given by S.
2208
+ * A, AF, and IPIV are not modified.
2209
+ * = 'N': The matrix A will be copied to AF and factored.
2210
+ * = 'E': The matrix A will be equilibrated if necessary, then
2211
+ * copied to AF and factored.
2212
+ *
2213
+ * UPLO (input) CHARACTER*1
2214
+ * = 'U': Upper triangle of A is stored;
2215
+ * = 'L': Lower triangle of A is stored.
2216
+ *
2217
+ * N (input) INTEGER
2218
+ * The number of linear equations, i.e., the order of the
2219
+ * matrix A. N >= 0.
2220
+ *
2221
+ * NRHS (input) INTEGER
2222
+ * The number of right hand sides, i.e., the number of columns
2223
+ * of the matrices B and X. NRHS >= 0.
2224
+ *
2225
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2226
+ * The symmetric matrix A. If UPLO = 'U', the leading N-by-N
2227
+ * upper triangular part of A contains the upper triangular
2228
+ * part of the matrix A, and the strictly lower triangular
2229
+ * part of A is not referenced. If UPLO = 'L', the leading
2230
+ * N-by-N lower triangular part of A contains the lower
2231
+ * triangular part of the matrix A, and the strictly upper
2232
+ * triangular part of A is not referenced.
2233
+ *
2234
+ * On exit, if FACT = 'E' and EQUED = 'Y', A is overwritten by
2235
+ * diag(S)*A*diag(S).
2236
+ *
2237
+ * LDA (input) INTEGER
2238
+ * The leading dimension of the array A. LDA >= max(1,N).
2239
+ *
2240
+ * AF (input or output) DOUBLE PRECISION array, dimension (LDAF,N)
2241
+ * If FACT = 'F', then AF is an input argument and on entry
2242
+ * contains the block diagonal matrix D and the multipliers
2243
+ * used to obtain the factor U or L from the factorization A =
2244
+ * U*D*U**T or A = L*D*L**T as computed by DSYTRF.
2245
+ *
2246
+ * If FACT = 'N', then AF is an output argument and on exit
2247
+ * returns the block diagonal matrix D and the multipliers
2248
+ * used to obtain the factor U or L from the factorization A =
2249
+ * U*D*U**T or A = L*D*L**T.
2250
+ *
2251
+ * LDAF (input) INTEGER
2252
+ * The leading dimension of the array AF. LDAF >= max(1,N).
2253
+ *
2254
+ * IPIV (input or output) INTEGER array, dimension (N)
2255
+ * If FACT = 'F', then IPIV is an input argument and on entry
2256
+ * contains details of the interchanges and the block
2257
+ * structure of D, as determined by DSYTRF. If IPIV(k) > 0,
2258
+ * then rows and columns k and IPIV(k) were interchanged and
2259
+ * D(k,k) is a 1-by-1 diagonal block. If UPLO = 'U' and
2260
+ * IPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and
2261
+ * -IPIV(k) were interchanged and D(k-1:k,k-1:k) is a 2-by-2
2262
+ * diagonal block. If UPLO = 'L' and IPIV(k) = IPIV(k+1) < 0,
2263
+ * then rows and columns k+1 and -IPIV(k) were interchanged
2264
+ * and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2265
+ *
2266
+ * If FACT = 'N', then IPIV is an output argument and on exit
2267
+ * contains details of the interchanges and the block
2268
+ * structure of D, as determined by DSYTRF.
2269
+ *
2270
+ * EQUED (input or output) CHARACTER*1
2271
+ * Specifies the form of equilibration that was done.
2272
+ * = 'N': No equilibration (always true if FACT = 'N').
2273
+ * = 'Y': Both row and column equilibration, i.e., A has been
2274
+ * replaced by diag(S) * A * diag(S).
2275
+ * EQUED is an input argument if FACT = 'F'; otherwise, it is an
2276
+ * output argument.
2277
+ *
2278
+ * S (input or output) DOUBLE PRECISION array, dimension (N)
2279
+ * The scale factors for A. If EQUED = 'Y', A is multiplied on
2280
+ * the left and right by diag(S). S is an input argument if FACT =
2281
+ * 'F'; otherwise, S is an output argument. If FACT = 'F' and EQUED
2282
+ * = 'Y', each element of S must be positive. If S is output, each
2283
+ * element of S is a power of the radix. If S is input, each element
2284
+ * of S should be a power of the radix to ensure a reliable solution
2285
+ * and error estimates. Scaling by powers of the radix does not cause
2286
+ * rounding errors unless the result underflows or overflows.
2287
+ * Rounding errors during scaling lead to refining with a matrix that
2288
+ * is not equivalent to the input matrix, producing error estimates
2289
+ * that may not be reliable.
2290
+ *
2291
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
2292
+ * On entry, the N-by-NRHS right hand side matrix B.
2293
+ * On exit,
2294
+ * if EQUED = 'N', B is not modified;
2295
+ * if EQUED = 'Y', B is overwritten by diag(S)*B;
2296
+ *
2297
+ * LDB (input) INTEGER
2298
+ * The leading dimension of the array B. LDB >= max(1,N).
2299
+ *
2300
+ * X (output) DOUBLE PRECISION array, dimension (LDX,NRHS)
2301
+ * If INFO = 0, the N-by-NRHS solution matrix X to the original
2302
+ * system of equations. Note that A and B are modified on exit if
2303
+ * EQUED .ne. 'N', and the solution to the equilibrated system is
2304
+ * inv(diag(S))*X.
2305
+ *
2306
+ * LDX (input) INTEGER
2307
+ * The leading dimension of the array X. LDX >= max(1,N).
2308
+ *
2309
+ * RCOND (output) DOUBLE PRECISION
2310
+ * Reciprocal scaled condition number. This is an estimate of the
2311
+ * reciprocal Skeel condition number of the matrix A after
2312
+ * equilibration (if done). If this is less than the machine
2313
+ * precision (in particular, if it is zero), the matrix is singular
2314
+ * to working precision. Note that the error may still be small even
2315
+ * if this number is very small and the matrix appears ill-
2316
+ * conditioned.
2317
+ *
2318
+ * RPVGRW (output) DOUBLE PRECISION
2319
+ * Reciprocal pivot growth. On exit, this contains the reciprocal
2320
+ * pivot growth factor norm(A)/norm(U). The "max absolute element"
2321
+ * norm is used. If this is much less than 1, then the stability of
2322
+ * the LU factorization of the (equilibrated) matrix A could be poor.
2323
+ * This also means that the solution X, estimated condition numbers,
2324
+ * and error bounds could be unreliable. If factorization fails with
2325
+ * 0<INFO<=N, then this contains the reciprocal pivot growth factor
2326
+ * for the leading INFO columns of A.
2327
+ *
2328
+ * BERR (output) DOUBLE PRECISION array, dimension (NRHS)
2329
+ * Componentwise relative backward error. This is the
2330
+ * componentwise relative backward error of each solution vector X(j)
2331
+ * (i.e., the smallest relative change in any element of A or B that
2332
+ * makes X(j) an exact solution).
2333
+ *
2334
+ * N_ERR_BNDS (input) INTEGER
2335
+ * Number of error bounds to return for each right hand side
2336
+ * and each type (normwise or componentwise). See ERR_BNDS_NORM and
2337
+ * ERR_BNDS_COMP below.
2338
+ *
2339
+ * ERR_BNDS_NORM (output) DOUBLE PRECISION array, dimension (NRHS, N_ERR_BNDS)
2340
+ * For each right-hand side, this array contains information about
2341
+ * various error bounds and condition numbers corresponding to the
2342
+ * normwise relative error, which is defined as follows:
2343
+ *
2344
+ * Normwise relative error in the ith solution vector:
2345
+ * max_j (abs(XTRUE(j,i) - X(j,i)))
2346
+ * ------------------------------
2347
+ * max_j abs(X(j,i))
2348
+ *
2349
+ * The array is indexed by the type of error information as described
2350
+ * below. There currently are up to three pieces of information
2351
+ * returned.
2352
+ *
2353
+ * The first index in ERR_BNDS_NORM(i,:) corresponds to the ith
2354
+ * right-hand side.
2355
+ *
2356
+ * The second index in ERR_BNDS_NORM(:,err) contains the following
2357
+ * three fields:
2358
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
2359
+ * reciprocal condition number is less than the threshold
2360
+ * sqrt(n) * dlamch('Epsilon').
2361
+ *
2362
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
2363
+ * almost certainly within a factor of 10 of the true error
2364
+ * so long as the next entry is greater than the threshold
2365
+ * sqrt(n) * dlamch('Epsilon'). This error bound should only
2366
+ * be trusted if the previous boolean is true.
2367
+ *
2368
+ * err = 3 Reciprocal condition number: Estimated normwise
2369
+ * reciprocal condition number. Compared with the threshold
2370
+ * sqrt(n) * dlamch('Epsilon') to determine if the error
2371
+ * estimate is "guaranteed". These reciprocal condition
2372
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
2373
+ * appropriately scaled matrix Z.
2374
+ * Let Z = S*A, where S scales each row by a power of the
2375
+ * radix so all absolute row sums of Z are approximately 1.
2376
+ *
2377
+ * See Lapack Working Note 165 for further details and extra
2378
+ * cautions.
2379
+ *
2380
+ * ERR_BNDS_COMP (output) DOUBLE PRECISION array, dimension (NRHS, N_ERR_BNDS)
2381
+ * For each right-hand side, this array contains information about
2382
+ * various error bounds and condition numbers corresponding to the
2383
+ * componentwise relative error, which is defined as follows:
2384
+ *
2385
+ * Componentwise relative error in the ith solution vector:
2386
+ * abs(XTRUE(j,i) - X(j,i))
2387
+ * max_j ----------------------
2388
+ * abs(X(j,i))
2389
+ *
2390
+ * The array is indexed by the right-hand side i (on which the
2391
+ * componentwise relative error depends), and the type of error
2392
+ * information as described below. There currently are up to three
2393
+ * pieces of information returned for each right-hand side. If
2394
+ * componentwise accuracy is not requested (PARAMS(3) = 0.0), then
2395
+ * ERR_BNDS_COMP is not accessed. If N_ERR_BNDS .LT. 3, then at most
2396
+ * the first (:,N_ERR_BNDS) entries are returned.
2397
+ *
2398
+ * The first index in ERR_BNDS_COMP(i,:) corresponds to the ith
2399
+ * right-hand side.
2400
+ *
2401
+ * The second index in ERR_BNDS_COMP(:,err) contains the following
2402
+ * three fields:
2403
+ * err = 1 "Trust/don't trust" boolean. Trust the answer if the
2404
+ * reciprocal condition number is less than the threshold
2405
+ * sqrt(n) * dlamch('Epsilon').
2406
+ *
2407
+ * err = 2 "Guaranteed" error bound: The estimated forward error,
2408
+ * almost certainly within a factor of 10 of the true error
2409
+ * so long as the next entry is greater than the threshold
2410
+ * sqrt(n) * dlamch('Epsilon'). This error bound should only
2411
+ * be trusted if the previous boolean is true.
2412
+ *
2413
+ * err = 3 Reciprocal condition number: Estimated componentwise
2414
+ * reciprocal condition number. Compared with the threshold
2415
+ * sqrt(n) * dlamch('Epsilon') to determine if the error
2416
+ * estimate is "guaranteed". These reciprocal condition
2417
+ * numbers are 1 / (norm(Z^{-1},inf) * norm(Z,inf)) for some
2418
+ * appropriately scaled matrix Z.
2419
+ * Let Z = S*(A*diag(x)), where x is the solution for the
2420
+ * current right-hand side and S scales each row of
2421
+ * A*diag(x) by a power of the radix so all absolute row
2422
+ * sums of Z are approximately 1.
2423
+ *
2424
+ * See Lapack Working Note 165 for further details and extra
2425
+ * cautions.
2426
+ *
2427
+ * NPARAMS (input) INTEGER
2428
+ * Specifies the number of parameters set in PARAMS. If .LE. 0, the
2429
+ * PARAMS array is never referenced and default values are used.
2430
+ *
2431
+ * PARAMS (input / output) DOUBLE PRECISION array, dimension (NPARAMS)
2432
+ * Specifies algorithm parameters. If an entry is .LT. 0.0, then
2433
+ * that entry will be filled with default value used for that
2434
+ * parameter. Only positions up to NPARAMS are accessed; defaults
2435
+ * are used for higher-numbered parameters.
2436
+ *
2437
+ * PARAMS(LA_LINRX_ITREF_I = 1) : Whether to perform iterative
2438
+ * refinement or not.
2439
+ * Default: 1.0D+0
2440
+ * = 0.0 : No refinement is performed, and no error bounds are
2441
+ * computed.
2442
+ * = 1.0 : Use the extra-precise refinement algorithm.
2443
+ * (other values are reserved for future use)
2444
+ *
2445
+ * PARAMS(LA_LINRX_ITHRESH_I = 2) : Maximum number of residual
2446
+ * computations allowed for refinement.
2447
+ * Default: 10
2448
+ * Aggressive: Set to 100 to permit convergence using approximate
2449
+ * factorizations or factorizations other than LU. If
2450
+ * the factorization uses a technique other than
2451
+ * Gaussian elimination, the guarantees in
2452
+ * err_bnds_norm and err_bnds_comp may no longer be
2453
+ * trustworthy.
2454
+ *
2455
+ * PARAMS(LA_LINRX_CWISE_I = 3) : Flag determining if the code
2456
+ * will attempt to find a solution with small componentwise
2457
+ * relative error in the double-precision algorithm. Positive
2458
+ * is true, 0.0 is false.
2459
+ * Default: 1.0 (attempt componentwise convergence)
2460
+ *
2461
+ * WORK (workspace) DOUBLE PRECISION array, dimension (4*N)
2462
+ *
2463
+ * IWORK (workspace) INTEGER array, dimension (N)
2464
+ *
2465
+ * INFO (output) INTEGER
2466
+ * = 0: Successful exit. The solution to every right-hand side is
2467
+ * guaranteed.
2468
+ * < 0: If INFO = -i, the i-th argument had an illegal value
2469
+ * > 0 and <= N: U(INFO,INFO) is exactly zero. The factorization
2470
+ * has been completed, but the factor U is exactly singular, so
2471
+ * the solution and error bounds could not be computed. RCOND = 0
2472
+ * is returned.
2473
+ * = N+J: The solution corresponding to the Jth right-hand side is
2474
+ * not guaranteed. The solutions corresponding to other right-
2475
+ * hand sides K with K > J may not be guaranteed as well, but
2476
+ * only the first such right-hand side is reported. If a small
2477
+ * componentwise error is not requested (PARAMS(3) = 0.0) then
2478
+ * the Jth right-hand side is the first with a normwise error
2479
+ * bound that is not guaranteed (the smallest J such
2480
+ * that ERR_BNDS_NORM(J,1) = 0.0). By default (PARAMS(3) = 1.0)
2481
+ * the Jth right-hand side is the first with either a normwise or
2482
+ * componentwise error bound that is not guaranteed (the smallest
2483
+ * J such that either ERR_BNDS_NORM(J,1) = 0.0 or
2484
+ * ERR_BNDS_COMP(J,1) = 0.0). See the definition of
2485
+ * ERR_BNDS_NORM(:,1) and ERR_BNDS_COMP(:,1). To get information
2486
+ * about all of the right-hand sides check ERR_BNDS_NORM or
2487
+ * ERR_BNDS_COMP.
2488
+ *
2489
+
2490
+ * ==================================================================
2491
+ *
2492
+
2493
+
2494
+ </PRE>
2495
+ <A HREF="#top">go to the page top</A>
2496
+
2497
+ <A NAME="dsyswapr"></A>
2498
+ <H2>dsyswapr</H2>
2499
+ <PRE>
2500
+ USAGE:
2501
+ a = NumRu::Lapack.dsyswapr( uplo, a, i1, i2, [:usage => usage, :help => help])
2502
+
2503
+
2504
+ FORTRAN MANUAL
2505
+ SUBROUTINE DSYSWAPR( UPLO, N, A, I1, I2)
2506
+
2507
+ * Purpose
2508
+ * =======
2509
+ *
2510
+ * DSYSWAPR applies an elementary permutation on the rows and the columns of
2511
+ * a symmetric matrix.
2512
+ *
2513
+
2514
+ * Arguments
2515
+ * =========
2516
+ *
2517
+ * UPLO (input) CHARACTER*1
2518
+ * Specifies whether the details of the factorization are stored
2519
+ * as an upper or lower triangular matrix.
2520
+ * = 'U': Upper triangular, form is A = U*D*U**T;
2521
+ * = 'L': Lower triangular, form is A = L*D*L**T.
2522
+ *
2523
+ * N (input) INTEGER
2524
+ * The order of the matrix A. N >= 0.
2525
+ *
2526
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2527
+ * On entry, the NB diagonal matrix D and the multipliers
2528
+ * used to obtain the factor U or L as computed by DSYTRF.
2529
+ *
2530
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
2531
+ * matrix. If UPLO = 'U', the upper triangular part of the
2532
+ * inverse is formed and the part of A below the diagonal is not
2533
+ * referenced; if UPLO = 'L' the lower triangular part of the
2534
+ * inverse is formed and the part of A above the diagonal is
2535
+ * not referenced.
2536
+ *
2537
+ * I1 (input) INTEGER
2538
+ * Index of the first row to swap
2539
+ *
2540
+ * I2 (input) INTEGER
2541
+ * Index of the second row to swap
2542
+ *
2543
+
2544
+ * =====================================================================
2545
+ *
2546
+ * ..
2547
+ * .. Local Scalars ..
2548
+ LOGICAL UPPER
2549
+ INTEGER I
2550
+ DOUBLE PRECISION TMP
2551
+ *
2552
+ * .. External Functions ..
2553
+ LOGICAL LSAME
2554
+ EXTERNAL LSAME
2555
+ * ..
2556
+ * .. External Subroutines ..
2557
+ EXTERNAL DSWAP
2558
+ * ..
2559
+
2560
+
2561
+ </PRE>
2562
+ <A HREF="#top">go to the page top</A>
2563
+
2564
+ <A NAME="dsytd2"></A>
2565
+ <H2>dsytd2</H2>
2566
+ <PRE>
2567
+ USAGE:
2568
+ d, e, tau, info, a = NumRu::Lapack.dsytd2( uplo, a, [:usage => usage, :help => help])
2569
+
2570
+
2571
+ FORTRAN MANUAL
2572
+ SUBROUTINE DSYTD2( UPLO, N, A, LDA, D, E, TAU, INFO )
2573
+
2574
+ * Purpose
2575
+ * =======
2576
+ *
2577
+ * DSYTD2 reduces a real symmetric matrix A to symmetric tridiagonal
2578
+ * form T by an orthogonal similarity transformation: Q' * A * Q = T.
2579
+ *
2580
+
2581
+ * Arguments
2582
+ * =========
2583
+ *
2584
+ * UPLO (input) CHARACTER*1
2585
+ * Specifies whether the upper or lower triangular part of the
2586
+ * symmetric matrix A is stored:
2587
+ * = 'U': Upper triangular
2588
+ * = 'L': Lower triangular
2589
+ *
2590
+ * N (input) INTEGER
2591
+ * The order of the matrix A. N >= 0.
2592
+ *
2593
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2594
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2595
+ * n-by-n upper triangular part of A contains the upper
2596
+ * triangular part of the matrix A, and the strictly lower
2597
+ * triangular part of A is not referenced. If UPLO = 'L', the
2598
+ * leading n-by-n lower triangular part of A contains the lower
2599
+ * triangular part of the matrix A, and the strictly upper
2600
+ * triangular part of A is not referenced.
2601
+ * On exit, if UPLO = 'U', the diagonal and first superdiagonal
2602
+ * of A are overwritten by the corresponding elements of the
2603
+ * tridiagonal matrix T, and the elements above the first
2604
+ * superdiagonal, with the array TAU, represent the orthogonal
2605
+ * matrix Q as a product of elementary reflectors; if UPLO
2606
+ * = 'L', the diagonal and first subdiagonal of A are over-
2607
+ * written by the corresponding elements of the tridiagonal
2608
+ * matrix T, and the elements below the first subdiagonal, with
2609
+ * the array TAU, represent the orthogonal matrix Q as a product
2610
+ * of elementary reflectors. See Further Details.
2611
+ *
2612
+ * LDA (input) INTEGER
2613
+ * The leading dimension of the array A. LDA >= max(1,N).
2614
+ *
2615
+ * D (output) DOUBLE PRECISION array, dimension (N)
2616
+ * The diagonal elements of the tridiagonal matrix T:
2617
+ * D(i) = A(i,i).
2618
+ *
2619
+ * E (output) DOUBLE PRECISION array, dimension (N-1)
2620
+ * The off-diagonal elements of the tridiagonal matrix T:
2621
+ * E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
2622
+ *
2623
+ * TAU (output) DOUBLE PRECISION array, dimension (N-1)
2624
+ * The scalar factors of the elementary reflectors (see Further
2625
+ * Details).
2626
+ *
2627
+ * INFO (output) INTEGER
2628
+ * = 0: successful exit
2629
+ * < 0: if INFO = -i, the i-th argument had an illegal value.
2630
+ *
2631
+
2632
+ * Further Details
2633
+ * ===============
2634
+ *
2635
+ * If UPLO = 'U', the matrix Q is represented as a product of elementary
2636
+ * reflectors
2637
+ *
2638
+ * Q = H(n-1) . . . H(2) H(1).
2639
+ *
2640
+ * Each H(i) has the form
2641
+ *
2642
+ * H(i) = I - tau * v * v'
2643
+ *
2644
+ * where tau is a real scalar, and v is a real vector with
2645
+ * v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
2646
+ * A(1:i-1,i+1), and tau in TAU(i).
2647
+ *
2648
+ * If UPLO = 'L', the matrix Q is represented as a product of elementary
2649
+ * reflectors
2650
+ *
2651
+ * Q = H(1) H(2) . . . H(n-1).
2652
+ *
2653
+ * Each H(i) has the form
2654
+ *
2655
+ * H(i) = I - tau * v * v'
2656
+ *
2657
+ * where tau is a real scalar, and v is a real vector with
2658
+ * v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
2659
+ * and tau in TAU(i).
2660
+ *
2661
+ * The contents of A on exit are illustrated by the following examples
2662
+ * with n = 5:
2663
+ *
2664
+ * if UPLO = 'U': if UPLO = 'L':
2665
+ *
2666
+ * ( d e v2 v3 v4 ) ( d )
2667
+ * ( d e v3 v4 ) ( e d )
2668
+ * ( d e v4 ) ( v1 e d )
2669
+ * ( d e ) ( v1 v2 e d )
2670
+ * ( d ) ( v1 v2 v3 e d )
2671
+ *
2672
+ * where d and e denote diagonal and off-diagonal elements of T, and vi
2673
+ * denotes an element of the vector defining H(i).
2674
+ *
2675
+ * =====================================================================
2676
+ *
2677
+
2678
+
2679
+ </PRE>
2680
+ <A HREF="#top">go to the page top</A>
2681
+
2682
+ <A NAME="dsytf2"></A>
2683
+ <H2>dsytf2</H2>
2684
+ <PRE>
2685
+ USAGE:
2686
+ ipiv, info, a = NumRu::Lapack.dsytf2( uplo, a, [:usage => usage, :help => help])
2687
+
2688
+
2689
+ FORTRAN MANUAL
2690
+ SUBROUTINE DSYTF2( UPLO, N, A, LDA, IPIV, INFO )
2691
+
2692
+ * Purpose
2693
+ * =======
2694
+ *
2695
+ * DSYTF2 computes the factorization of a real symmetric matrix A using
2696
+ * the Bunch-Kaufman diagonal pivoting method:
2697
+ *
2698
+ * A = U*D*U' or A = L*D*L'
2699
+ *
2700
+ * where U (or L) is a product of permutation and unit upper (lower)
2701
+ * triangular matrices, U' is the transpose of U, and D is symmetric and
2702
+ * block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
2703
+ *
2704
+ * This is the unblocked version of the algorithm, calling Level 2 BLAS.
2705
+ *
2706
+
2707
+ * Arguments
2708
+ * =========
2709
+ *
2710
+ * UPLO (input) CHARACTER*1
2711
+ * Specifies whether the upper or lower triangular part of the
2712
+ * symmetric matrix A is stored:
2713
+ * = 'U': Upper triangular
2714
+ * = 'L': Lower triangular
2715
+ *
2716
+ * N (input) INTEGER
2717
+ * The order of the matrix A. N >= 0.
2718
+ *
2719
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2720
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2721
+ * n-by-n upper triangular part of A contains the upper
2722
+ * triangular part of the matrix A, and the strictly lower
2723
+ * triangular part of A is not referenced. If UPLO = 'L', the
2724
+ * leading n-by-n lower triangular part of A contains the lower
2725
+ * triangular part of the matrix A, and the strictly upper
2726
+ * triangular part of A is not referenced.
2727
+ *
2728
+ * On exit, the block diagonal matrix D and the multipliers used
2729
+ * to obtain the factor U or L (see below for further details).
2730
+ *
2731
+ * LDA (input) INTEGER
2732
+ * The leading dimension of the array A. LDA >= max(1,N).
2733
+ *
2734
+ * IPIV (output) INTEGER array, dimension (N)
2735
+ * Details of the interchanges and the block structure of D.
2736
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
2737
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
2738
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
2739
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
2740
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
2741
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
2742
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
2743
+ *
2744
+ * INFO (output) INTEGER
2745
+ * = 0: successful exit
2746
+ * < 0: if INFO = -k, the k-th argument had an illegal value
2747
+ * > 0: if INFO = k, D(k,k) is exactly zero. The factorization
2748
+ * has been completed, but the block diagonal matrix D is
2749
+ * exactly singular, and division by zero will occur if it
2750
+ * is used to solve a system of equations.
2751
+ *
2752
+
2753
+ * Further Details
2754
+ * ===============
2755
+ *
2756
+ * 09-29-06 - patch from
2757
+ * Bobby Cheng, MathWorks
2758
+ *
2759
+ * Replace l.204 and l.372
2760
+ * IF( MAX( ABSAKK, COLMAX ).EQ.ZERO ) THEN
2761
+ * by
2762
+ * IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. DISNAN(ABSAKK) ) THEN
2763
+ *
2764
+ * 01-01-96 - Based on modifications by
2765
+ * J. Lewis, Boeing Computer Services Company
2766
+ * A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
2767
+ * 1-96 - Based on modifications by J. Lewis, Boeing Computer Services
2768
+ * Company
2769
+ *
2770
+ * If UPLO = 'U', then A = U*D*U', where
2771
+ * U = P(n)*U(n)* ... *P(k)U(k)* ...,
2772
+ * i.e., U is a product of terms P(k)*U(k), where k decreases from n to
2773
+ * 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
2774
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
2775
+ * defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
2776
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
2777
+ *
2778
+ * ( I v 0 ) k-s
2779
+ * U(k) = ( 0 I 0 ) s
2780
+ * ( 0 0 I ) n-k
2781
+ * k-s s n-k
2782
+ *
2783
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
2784
+ * If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
2785
+ * and A(k,k), and v overwrites A(1:k-2,k-1:k).
2786
+ *
2787
+ * If UPLO = 'L', then A = L*D*L', where
2788
+ * L = P(1)*L(1)* ... *P(k)*L(k)* ...,
2789
+ * i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
2790
+ * n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
2791
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
2792
+ * defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
2793
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
2794
+ *
2795
+ * ( I 0 0 ) k-1
2796
+ * L(k) = ( 0 I 0 ) s
2797
+ * ( 0 v I ) n-k-s+1
2798
+ * k-1 s n-k-s+1
2799
+ *
2800
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
2801
+ * If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
2802
+ * and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
2803
+ *
2804
+ * =====================================================================
2805
+ *
2806
+
2807
+
2808
+ </PRE>
2809
+ <A HREF="#top">go to the page top</A>
2810
+
2811
+ <A NAME="dsytrd"></A>
2812
+ <H2>dsytrd</H2>
2813
+ <PRE>
2814
+ USAGE:
2815
+ d, e, tau, work, info, a = NumRu::Lapack.dsytrd( uplo, a, lwork, [:usage => usage, :help => help])
2816
+
2817
+
2818
+ FORTRAN MANUAL
2819
+ SUBROUTINE DSYTRD( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO )
2820
+
2821
+ * Purpose
2822
+ * =======
2823
+ *
2824
+ * DSYTRD reduces a real symmetric matrix A to real symmetric
2825
+ * tridiagonal form T by an orthogonal similarity transformation:
2826
+ * Q**T * A * Q = T.
2827
+ *
2828
+
2829
+ * Arguments
2830
+ * =========
2831
+ *
2832
+ * UPLO (input) CHARACTER*1
2833
+ * = 'U': Upper triangle of A is stored;
2834
+ * = 'L': Lower triangle of A is stored.
2835
+ *
2836
+ * N (input) INTEGER
2837
+ * The order of the matrix A. N >= 0.
2838
+ *
2839
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2840
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2841
+ * N-by-N upper triangular part of A contains the upper
2842
+ * triangular part of the matrix A, and the strictly lower
2843
+ * triangular part of A is not referenced. If UPLO = 'L', the
2844
+ * leading N-by-N lower triangular part of A contains the lower
2845
+ * triangular part of the matrix A, and the strictly upper
2846
+ * triangular part of A is not referenced.
2847
+ * On exit, if UPLO = 'U', the diagonal and first superdiagonal
2848
+ * of A are overwritten by the corresponding elements of the
2849
+ * tridiagonal matrix T, and the elements above the first
2850
+ * superdiagonal, with the array TAU, represent the orthogonal
2851
+ * matrix Q as a product of elementary reflectors; if UPLO
2852
+ * = 'L', the diagonal and first subdiagonal of A are over-
2853
+ * written by the corresponding elements of the tridiagonal
2854
+ * matrix T, and the elements below the first subdiagonal, with
2855
+ * the array TAU, represent the orthogonal matrix Q as a product
2856
+ * of elementary reflectors. See Further Details.
2857
+ *
2858
+ * LDA (input) INTEGER
2859
+ * The leading dimension of the array A. LDA >= max(1,N).
2860
+ *
2861
+ * D (output) DOUBLE PRECISION array, dimension (N)
2862
+ * The diagonal elements of the tridiagonal matrix T:
2863
+ * D(i) = A(i,i).
2864
+ *
2865
+ * E (output) DOUBLE PRECISION array, dimension (N-1)
2866
+ * The off-diagonal elements of the tridiagonal matrix T:
2867
+ * E(i) = A(i,i+1) if UPLO = 'U', E(i) = A(i+1,i) if UPLO = 'L'.
2868
+ *
2869
+ * TAU (output) DOUBLE PRECISION array, dimension (N-1)
2870
+ * The scalar factors of the elementary reflectors (see Further
2871
+ * Details).
2872
+ *
2873
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
2874
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
2875
+ *
2876
+ * LWORK (input) INTEGER
2877
+ * The dimension of the array WORK. LWORK >= 1.
2878
+ * For optimum performance LWORK >= N*NB, where NB is the
2879
+ * optimal blocksize.
2880
+ *
2881
+ * If LWORK = -1, then a workspace query is assumed; the routine
2882
+ * only calculates the optimal size of the WORK array, returns
2883
+ * this value as the first entry of the WORK array, and no error
2884
+ * message related to LWORK is issued by XERBLA.
2885
+ *
2886
+ * INFO (output) INTEGER
2887
+ * = 0: successful exit
2888
+ * < 0: if INFO = -i, the i-th argument had an illegal value
2889
+ *
2890
+
2891
+ * Further Details
2892
+ * ===============
2893
+ *
2894
+ * If UPLO = 'U', the matrix Q is represented as a product of elementary
2895
+ * reflectors
2896
+ *
2897
+ * Q = H(n-1) . . . H(2) H(1).
2898
+ *
2899
+ * Each H(i) has the form
2900
+ *
2901
+ * H(i) = I - tau * v * v'
2902
+ *
2903
+ * where tau is a real scalar, and v is a real vector with
2904
+ * v(i+1:n) = 0 and v(i) = 1; v(1:i-1) is stored on exit in
2905
+ * A(1:i-1,i+1), and tau in TAU(i).
2906
+ *
2907
+ * If UPLO = 'L', the matrix Q is represented as a product of elementary
2908
+ * reflectors
2909
+ *
2910
+ * Q = H(1) H(2) . . . H(n-1).
2911
+ *
2912
+ * Each H(i) has the form
2913
+ *
2914
+ * H(i) = I - tau * v * v'
2915
+ *
2916
+ * where tau is a real scalar, and v is a real vector with
2917
+ * v(1:i) = 0 and v(i+1) = 1; v(i+2:n) is stored on exit in A(i+2:n,i),
2918
+ * and tau in TAU(i).
2919
+ *
2920
+ * The contents of A on exit are illustrated by the following examples
2921
+ * with n = 5:
2922
+ *
2923
+ * if UPLO = 'U': if UPLO = 'L':
2924
+ *
2925
+ * ( d e v2 v3 v4 ) ( d )
2926
+ * ( d e v3 v4 ) ( e d )
2927
+ * ( d e v4 ) ( v1 e d )
2928
+ * ( d e ) ( v1 v2 e d )
2929
+ * ( d ) ( v1 v2 v3 e d )
2930
+ *
2931
+ * where d and e denote diagonal and off-diagonal elements of T, and vi
2932
+ * denotes an element of the vector defining H(i).
2933
+ *
2934
+ * =====================================================================
2935
+ *
2936
+
2937
+
2938
+ </PRE>
2939
+ <A HREF="#top">go to the page top</A>
2940
+
2941
+ <A NAME="dsytrf"></A>
2942
+ <H2>dsytrf</H2>
2943
+ <PRE>
2944
+ USAGE:
2945
+ ipiv, work, info, a = NumRu::Lapack.dsytrf( uplo, a, lwork, [:usage => usage, :help => help])
2946
+
2947
+
2948
+ FORTRAN MANUAL
2949
+ SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
2950
+
2951
+ * Purpose
2952
+ * =======
2953
+ *
2954
+ * DSYTRF computes the factorization of a real symmetric matrix A using
2955
+ * the Bunch-Kaufman diagonal pivoting method. The form of the
2956
+ * factorization is
2957
+ *
2958
+ * A = U*D*U**T or A = L*D*L**T
2959
+ *
2960
+ * where U (or L) is a product of permutation and unit upper (lower)
2961
+ * triangular matrices, and D is symmetric and block diagonal with
2962
+ * 1-by-1 and 2-by-2 diagonal blocks.
2963
+ *
2964
+ * This is the blocked version of the algorithm, calling Level 3 BLAS.
2965
+ *
2966
+
2967
+ * Arguments
2968
+ * =========
2969
+ *
2970
+ * UPLO (input) CHARACTER*1
2971
+ * = 'U': Upper triangle of A is stored;
2972
+ * = 'L': Lower triangle of A is stored.
2973
+ *
2974
+ * N (input) INTEGER
2975
+ * The order of the matrix A. N >= 0.
2976
+ *
2977
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
2978
+ * On entry, the symmetric matrix A. If UPLO = 'U', the leading
2979
+ * N-by-N upper triangular part of A contains the upper
2980
+ * triangular part of the matrix A, and the strictly lower
2981
+ * triangular part of A is not referenced. If UPLO = 'L', the
2982
+ * leading N-by-N lower triangular part of A contains the lower
2983
+ * triangular part of the matrix A, and the strictly upper
2984
+ * triangular part of A is not referenced.
2985
+ *
2986
+ * On exit, the block diagonal matrix D and the multipliers used
2987
+ * to obtain the factor U or L (see below for further details).
2988
+ *
2989
+ * LDA (input) INTEGER
2990
+ * The leading dimension of the array A. LDA >= max(1,N).
2991
+ *
2992
+ * IPIV (output) INTEGER array, dimension (N)
2993
+ * Details of the interchanges and the block structure of D.
2994
+ * If IPIV(k) > 0, then rows and columns k and IPIV(k) were
2995
+ * interchanged and D(k,k) is a 1-by-1 diagonal block.
2996
+ * If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0, then rows and
2997
+ * columns k-1 and -IPIV(k) were interchanged and D(k-1:k,k-1:k)
2998
+ * is a 2-by-2 diagonal block. If UPLO = 'L' and IPIV(k) =
2999
+ * IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were
3000
+ * interchanged and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
3001
+ *
3002
+ * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
3003
+ * On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
3004
+ *
3005
+ * LWORK (input) INTEGER
3006
+ * The length of WORK. LWORK >=1. For best performance
3007
+ * LWORK >= N*NB, where NB is the block size returned by ILAENV.
3008
+ *
3009
+ * If LWORK = -1, then a workspace query is assumed; the routine
3010
+ * only calculates the optimal size of the WORK array, returns
3011
+ * this value as the first entry of the WORK array, and no error
3012
+ * message related to LWORK is issued by XERBLA.
3013
+ *
3014
+ * INFO (output) INTEGER
3015
+ * = 0: successful exit
3016
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3017
+ * > 0: if INFO = i, D(i,i) is exactly zero. The factorization
3018
+ * has been completed, but the block diagonal matrix D is
3019
+ * exactly singular, and division by zero will occur if it
3020
+ * is used to solve a system of equations.
3021
+ *
3022
+
3023
+ * Further Details
3024
+ * ===============
3025
+ *
3026
+ * If UPLO = 'U', then A = U*D*U', where
3027
+ * U = P(n)*U(n)* ... *P(k)U(k)* ...,
3028
+ * i.e., U is a product of terms P(k)*U(k), where k decreases from n to
3029
+ * 1 in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
3030
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
3031
+ * defined by IPIV(k), and U(k) is a unit upper triangular matrix, such
3032
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
3033
+ *
3034
+ * ( I v 0 ) k-s
3035
+ * U(k) = ( 0 I 0 ) s
3036
+ * ( 0 0 I ) n-k
3037
+ * k-s s n-k
3038
+ *
3039
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).
3040
+ * If s = 2, the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k),
3041
+ * and A(k,k), and v overwrites A(1:k-2,k-1:k).
3042
+ *
3043
+ * If UPLO = 'L', then A = L*D*L', where
3044
+ * L = P(1)*L(1)* ... *P(k)*L(k)* ...,
3045
+ * i.e., L is a product of terms P(k)*L(k), where k increases from 1 to
3046
+ * n in steps of 1 or 2, and D is a block diagonal matrix with 1-by-1
3047
+ * and 2-by-2 diagonal blocks D(k). P(k) is a permutation matrix as
3048
+ * defined by IPIV(k), and L(k) is a unit lower triangular matrix, such
3049
+ * that if the diagonal block D(k) is of order s (s = 1 or 2), then
3050
+ *
3051
+ * ( I 0 0 ) k-1
3052
+ * L(k) = ( 0 I 0 ) s
3053
+ * ( 0 v I ) n-k-s+1
3054
+ * k-1 s n-k-s+1
3055
+ *
3056
+ * If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).
3057
+ * If s = 2, the lower triangle of D(k) overwrites A(k,k), A(k+1,k),
3058
+ * and A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).
3059
+ *
3060
+ * =====================================================================
3061
+ *
3062
+ * .. Local Scalars ..
3063
+ LOGICAL LQUERY, UPPER
3064
+ INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
3065
+ * ..
3066
+ * .. External Functions ..
3067
+ LOGICAL LSAME
3068
+ INTEGER ILAENV
3069
+ EXTERNAL LSAME, ILAENV
3070
+ * ..
3071
+ * .. External Subroutines ..
3072
+ EXTERNAL DLASYF, DSYTF2, XERBLA
3073
+ * ..
3074
+ * .. Intrinsic Functions ..
3075
+ INTRINSIC MAX
3076
+ * ..
3077
+
3078
+
3079
+ </PRE>
3080
+ <A HREF="#top">go to the page top</A>
3081
+
3082
+ <A NAME="dsytri"></A>
3083
+ <H2>dsytri</H2>
3084
+ <PRE>
3085
+ USAGE:
3086
+ info, a = NumRu::Lapack.dsytri( uplo, a, ipiv, [:usage => usage, :help => help])
3087
+
3088
+
3089
+ FORTRAN MANUAL
3090
+ SUBROUTINE DSYTRI( UPLO, N, A, LDA, IPIV, WORK, INFO )
3091
+
3092
+ * Purpose
3093
+ * =======
3094
+ *
3095
+ * DSYTRI computes the inverse of a real symmetric indefinite matrix
3096
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3097
+ * DSYTRF.
3098
+ *
3099
+
3100
+ * Arguments
3101
+ * =========
3102
+ *
3103
+ * UPLO (input) CHARACTER*1
3104
+ * Specifies whether the details of the factorization are stored
3105
+ * as an upper or lower triangular matrix.
3106
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3107
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3108
+ *
3109
+ * N (input) INTEGER
3110
+ * The order of the matrix A. N >= 0.
3111
+ *
3112
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
3113
+ * On entry, the block diagonal matrix D and the multipliers
3114
+ * used to obtain the factor U or L as computed by DSYTRF.
3115
+ *
3116
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3117
+ * matrix. If UPLO = 'U', the upper triangular part of the
3118
+ * inverse is formed and the part of A below the diagonal is not
3119
+ * referenced; if UPLO = 'L' the lower triangular part of the
3120
+ * inverse is formed and the part of A above the diagonal is
3121
+ * not referenced.
3122
+ *
3123
+ * LDA (input) INTEGER
3124
+ * The leading dimension of the array A. LDA >= max(1,N).
3125
+ *
3126
+ * IPIV (input) INTEGER array, dimension (N)
3127
+ * Details of the interchanges and the block structure of D
3128
+ * as determined by DSYTRF.
3129
+ *
3130
+ * WORK (workspace) DOUBLE PRECISION array, dimension (N)
3131
+ *
3132
+ * INFO (output) INTEGER
3133
+ * = 0: successful exit
3134
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3135
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3136
+ * inverse could not be computed.
3137
+ *
3138
+
3139
+ * =====================================================================
3140
+ *
3141
+
3142
+
3143
+ </PRE>
3144
+ <A HREF="#top">go to the page top</A>
3145
+
3146
+ <A NAME="dsytri2"></A>
3147
+ <H2>dsytri2</H2>
3148
+ <PRE>
3149
+ USAGE:
3150
+ info, a = NumRu::Lapack.dsytri2( uplo, a, ipiv, [:lwork => lwork, :usage => usage, :help => help])
3151
+
3152
+
3153
+ FORTRAN MANUAL
3154
+ SUBROUTINE DSYTRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
3155
+
3156
+ * Purpose
3157
+ * =======
3158
+ *
3159
+ * DSYTRI2 computes the inverse of a real symmetric indefinite matrix
3160
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3161
+ * DSYTRF. DSYTRI2 sets the LEADING DIMENSION of the workspace
3162
+ * before calling DSYTRI2X that actually computes the inverse.
3163
+ *
3164
+
3165
+ * Arguments
3166
+ * =========
3167
+ *
3168
+ * UPLO (input) CHARACTER*1
3169
+ * Specifies whether the details of the factorization are stored
3170
+ * as an upper or lower triangular matrix.
3171
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3172
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3173
+ *
3174
+ * N (input) INTEGER
3175
+ * The order of the matrix A. N >= 0.
3176
+ *
3177
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
3178
+ * On entry, the NB diagonal matrix D and the multipliers
3179
+ * used to obtain the factor U or L as computed by DSYTRF.
3180
+ *
3181
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3182
+ * matrix. If UPLO = 'U', the upper triangular part of the
3183
+ * inverse is formed and the part of A below the diagonal is not
3184
+ * referenced; if UPLO = 'L' the lower triangular part of the
3185
+ * inverse is formed and the part of A above the diagonal is
3186
+ * not referenced.
3187
+ *
3188
+ * LDA (input) INTEGER
3189
+ * The leading dimension of the array A. LDA >= max(1,N).
3190
+ *
3191
+ * IPIV (input) INTEGER array, dimension (N)
3192
+ * Details of the interchanges and the NB structure of D
3193
+ * as determined by DSYTRF.
3194
+ *
3195
+ * WORK (workspace) DOUBLE PRECISION array, dimension (N+NB+1)*(NB+3)
3196
+ *
3197
+ * LWORK (input) INTEGER
3198
+ * The dimension of the array WORK.
3199
+ * WORK is size >= (N+NB+1)*(NB+3)
3200
+ * If LDWORK = -1, then a workspace query is assumed; the routine
3201
+ * calculates:
3202
+ * - the optimal size of the WORK array, returns
3203
+ * this value as the first entry of the WORK array,
3204
+ * - and no error message related to LDWORK is issued by XERBLA.
3205
+ *
3206
+ * INFO (output) INTEGER
3207
+ * = 0: successful exit
3208
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3209
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3210
+ * inverse could not be computed.
3211
+ *
3212
+
3213
+ * =====================================================================
3214
+ *
3215
+ * .. Local Scalars ..
3216
+ LOGICAL UPPER, LQUERY
3217
+ INTEGER MINSIZE, NBMAX
3218
+ * ..
3219
+ * .. External Functions ..
3220
+ LOGICAL LSAME
3221
+ INTEGER ILAENV
3222
+ EXTERNAL LSAME, ILAENV
3223
+ * ..
3224
+ * .. External Subroutines ..
3225
+ EXTERNAL DSYTRI2X
3226
+ * ..
3227
+
3228
+
3229
+ </PRE>
3230
+ <A HREF="#top">go to the page top</A>
3231
+
3232
+ <A NAME="dsytri2x"></A>
3233
+ <H2>dsytri2x</H2>
3234
+ <PRE>
3235
+ USAGE:
3236
+ info, a = NumRu::Lapack.dsytri2x( uplo, a, ipiv, nb, [:usage => usage, :help => help])
3237
+
3238
+
3239
+ FORTRAN MANUAL
3240
+ SUBROUTINE DSYTRI2X( UPLO, N, A, LDA, IPIV, WORK, NB, INFO )
3241
+
3242
+ * Purpose
3243
+ * =======
3244
+ *
3245
+ * DSYTRI2X computes the inverse of a real symmetric indefinite matrix
3246
+ * A using the factorization A = U*D*U**T or A = L*D*L**T computed by
3247
+ * DSYTRF.
3248
+ *
3249
+
3250
+ * Arguments
3251
+ * =========
3252
+ *
3253
+ * UPLO (input) CHARACTER*1
3254
+ * Specifies whether the details of the factorization are stored
3255
+ * as an upper or lower triangular matrix.
3256
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3257
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3258
+ *
3259
+ * N (input) INTEGER
3260
+ * The order of the matrix A. N >= 0.
3261
+ *
3262
+ * A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
3263
+ * On entry, the NNB diagonal matrix D and the multipliers
3264
+ * used to obtain the factor U or L as computed by DSYTRF.
3265
+ *
3266
+ * On exit, if INFO = 0, the (symmetric) inverse of the original
3267
+ * matrix. If UPLO = 'U', the upper triangular part of the
3268
+ * inverse is formed and the part of A below the diagonal is not
3269
+ * referenced; if UPLO = 'L' the lower triangular part of the
3270
+ * inverse is formed and the part of A above the diagonal is
3271
+ * not referenced.
3272
+ *
3273
+ * LDA (input) INTEGER
3274
+ * The leading dimension of the array A. LDA >= max(1,N).
3275
+ *
3276
+ * IPIV (input) INTEGER array, dimension (N)
3277
+ * Details of the interchanges and the NNB structure of D
3278
+ * as determined by DSYTRF.
3279
+ *
3280
+ * WORK (workspace) DOUBLE PRECISION array, dimension (N+NNB+1,NNB+3)
3281
+ *
3282
+ * NB (input) INTEGER
3283
+ * Block size
3284
+ *
3285
+ * INFO (output) INTEGER
3286
+ * = 0: successful exit
3287
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3288
+ * > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its
3289
+ * inverse could not be computed.
3290
+ *
3291
+
3292
+ * =====================================================================
3293
+ *
3294
+
3295
+
3296
+ </PRE>
3297
+ <A HREF="#top">go to the page top</A>
3298
+
3299
+ <A NAME="dsytrs"></A>
3300
+ <H2>dsytrs</H2>
3301
+ <PRE>
3302
+ USAGE:
3303
+ info, b = NumRu::Lapack.dsytrs( uplo, a, ipiv, b, [:usage => usage, :help => help])
3304
+
3305
+
3306
+ FORTRAN MANUAL
3307
+ SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
3308
+
3309
+ * Purpose
3310
+ * =======
3311
+ *
3312
+ * DSYTRS solves a system of linear equations A*X = B with a real
3313
+ * symmetric matrix A using the factorization A = U*D*U**T or
3314
+ * A = L*D*L**T computed by DSYTRF.
3315
+ *
3316
+
3317
+ * Arguments
3318
+ * =========
3319
+ *
3320
+ * UPLO (input) CHARACTER*1
3321
+ * Specifies whether the details of the factorization are stored
3322
+ * as an upper or lower triangular matrix.
3323
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3324
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3325
+ *
3326
+ * N (input) INTEGER
3327
+ * The order of the matrix A. N >= 0.
3328
+ *
3329
+ * NRHS (input) INTEGER
3330
+ * The number of right hand sides, i.e., the number of columns
3331
+ * of the matrix B. NRHS >= 0.
3332
+ *
3333
+ * A (input) DOUBLE PRECISION array, dimension (LDA,N)
3334
+ * The block diagonal matrix D and the multipliers used to
3335
+ * obtain the factor U or L as computed by DSYTRF.
3336
+ *
3337
+ * LDA (input) INTEGER
3338
+ * The leading dimension of the array A. LDA >= max(1,N).
3339
+ *
3340
+ * IPIV (input) INTEGER array, dimension (N)
3341
+ * Details of the interchanges and the block structure of D
3342
+ * as determined by DSYTRF.
3343
+ *
3344
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
3345
+ * On entry, the right hand side matrix B.
3346
+ * On exit, the solution matrix X.
3347
+ *
3348
+ * LDB (input) INTEGER
3349
+ * The leading dimension of the array B. LDB >= max(1,N).
3350
+ *
3351
+ * INFO (output) INTEGER
3352
+ * = 0: successful exit
3353
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3354
+ *
3355
+
3356
+ * =====================================================================
3357
+ *
3358
+
3359
+
3360
+ </PRE>
3361
+ <A HREF="#top">go to the page top</A>
3362
+
3363
+ <A NAME="dsytrs2"></A>
3364
+ <H2>dsytrs2</H2>
3365
+ <PRE>
3366
+ USAGE:
3367
+ info, b = NumRu::Lapack.dsytrs2( uplo, a, ipiv, b, [:usage => usage, :help => help])
3368
+
3369
+
3370
+ FORTRAN MANUAL
3371
+ SUBROUTINE DSYTRS2( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, INFO )
3372
+
3373
+ * Purpose
3374
+ * =======
3375
+ *
3376
+ * DSYTRS2 solves a system of linear equations A*X = B with a real
3377
+ * symmetric matrix A using the factorization A = U*D*U**T or
3378
+ * A = L*D*L**T computed by DSYTRF and converted by DSYCONV.
3379
+ *
3380
+
3381
+ * Arguments
3382
+ * =========
3383
+ *
3384
+ * UPLO (input) CHARACTER*1
3385
+ * Specifies whether the details of the factorization are stored
3386
+ * as an upper or lower triangular matrix.
3387
+ * = 'U': Upper triangular, form is A = U*D*U**T;
3388
+ * = 'L': Lower triangular, form is A = L*D*L**T.
3389
+ *
3390
+ * N (input) INTEGER
3391
+ * The order of the matrix A. N >= 0.
3392
+ *
3393
+ * NRHS (input) INTEGER
3394
+ * The number of right hand sides, i.e., the number of columns
3395
+ * of the matrix B. NRHS >= 0.
3396
+ *
3397
+ * A (input) DOUBLE PRECISION array, dimension (LDA,N)
3398
+ * The block diagonal matrix D and the multipliers used to
3399
+ * obtain the factor U or L as computed by DSYTRF.
3400
+ *
3401
+ * LDA (input) INTEGER
3402
+ * The leading dimension of the array A. LDA >= max(1,N).
3403
+ *
3404
+ * IPIV (input) INTEGER array, dimension (N)
3405
+ * Details of the interchanges and the block structure of D
3406
+ * as determined by DSYTRF.
3407
+ *
3408
+ * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
3409
+ * On entry, the right hand side matrix B.
3410
+ * On exit, the solution matrix X.
3411
+ *
3412
+ * LDB (input) INTEGER
3413
+ * The leading dimension of the array B. LDB >= max(1,N).
3414
+ *
3415
+ * WORK (workspace) REAL array, dimension (N)
3416
+ *
3417
+ * INFO (output) INTEGER
3418
+ * = 0: successful exit
3419
+ * < 0: if INFO = -i, the i-th argument had an illegal value
3420
+ *
3421
+
3422
+ * =====================================================================
3423
+ *
3424
+
3425
+
3426
+ </PRE>
3427
+ <A HREF="#top">go to the page top</A>
3428
+
3429
+ <HR />
3430
+ <A HREF="d.html">back to matrix types</A><BR>
3431
+ <A HREF="d.html">back to data types</A>
3432
+ </BODY>
3433
+ </HTML>