ruby-lapack 1.4.1a → 1.5

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