mkl_solvers_ee.fi 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. !===============================================================================
  2. ! Copyright 2012-2022 Intel Corporation.
  3. !
  4. ! This software and the related documents are Intel copyrighted materials, and
  5. ! your use of them is governed by the express license under which they were
  6. ! provided to you (License). Unless the License provides otherwise, you may not
  7. ! use, modify, copy, publish, distribute, disclose or transmit this software or
  8. ! the related documents without Intel's prior written permission.
  9. !
  10. ! This software and the related documents are provided as is, with no express
  11. ! or implied warranties, other than those that are expressly stated in the
  12. ! License.
  13. !===============================================================================
  14. ! Content:
  15. ! Intel(R) oneAPI Math Kernel Library (oneMKL) Fortran interface for
  16. ! oneMKL Extended Eigensolvers routines
  17. !*******************************************************************************
  18. !!!!!!!!!!!!! RCI interfaces
  19. interface
  20. subroutine dfeast_srci(ijob,N,Ze,work,workc,Aq,Sq,fpm, &
  21. & epsout,loop,Emin,Emax,M0,lambda,q,M,res,info)
  22. integer ijob,N,M0
  23. complex*16 Ze
  24. double precision work(N, *)
  25. complex*16 workc(N, *)
  26. double precision Aq(M0,*), Sq(M0,*)
  27. integer fpm(*)
  28. double precision epsout
  29. integer loop
  30. double precision Emin,Emax
  31. double precision lambda(*)
  32. double precision q(N,*)
  33. integer M
  34. double precision res(*)
  35. integer info
  36. end
  37. end interface
  38. interface
  39. subroutine zfeast_hrci(ijob,N,Ze,work,workc,zAq,zSq,fpm,epsout, &
  40. & loop,Emin,Emax,M0,lambda,q,M,res,info)
  41. integer ijob,N,M0
  42. complex*16 Ze
  43. complex*16 work(N, *)
  44. complex*16 workc(N, *)
  45. complex*16 zAq(M0,*), zSq(M0,*)
  46. integer fpm(*)
  47. double precision epsout
  48. integer loop
  49. double precision Emin,Emax
  50. double precision lambda(*)
  51. complex*16 q(N,*)
  52. integer M
  53. double precision res(*)
  54. integer info
  55. end
  56. end interface
  57. interface
  58. subroutine sfeast_srci(ijob,N,Ze,work,workc,Aq,Sq,fpm, &
  59. & epsout,loop,Emin,Emax,M0,lambda,q,M,res,info)
  60. integer ijob,N,M0
  61. complex Ze
  62. real work(N, *)
  63. complex workc(N, *)
  64. real Aq(M0,*), Sq(M0,*)
  65. integer fpm(*)
  66. real epsout
  67. integer loop
  68. real Emin, Emax
  69. real lambda(*)
  70. real q(N,*)
  71. integer M
  72. real res(*)
  73. integer info
  74. end
  75. end interface
  76. interface
  77. subroutine cfeast_hrci(ijob,N,Ze,work,workc,zAq,zSq,fpm,epsout, &
  78. & loop,Emin,Emax,M0,lambda,q,M,res,info)
  79. integer ijob,N,M0
  80. complex Ze
  81. complex work(N, *)
  82. complex workc(N, *)
  83. complex zAq(M0,*), zSq(M0,*)
  84. integer fpm(*)
  85. real epsout
  86. integer loop
  87. real Emin,Emax
  88. real lambda(*)
  89. complex q(N,*)
  90. integer M
  91. real res(*)
  92. integer info
  93. end
  94. end interface
  95. !!!!!!!!!! DENSE interfaces
  96. interface
  97. subroutine dfeast_sygv(UPLO,N,A,LDA,B,LDB,fpm,epsout,loop, &
  98. & Emin,Emax,M0,E,X,M,res,info)
  99. character UPLO
  100. integer N,LDA,LDB
  101. double precision A(LDA,*)
  102. double precision B(LDB,*)
  103. integer fpm(*)
  104. double precision epsout
  105. integer loop
  106. double precision Emin,Emax
  107. integer M0
  108. double precision E(*)
  109. double precision X(N,*)
  110. integer M
  111. double precision res(*)
  112. integer info
  113. end
  114. end interface
  115. interface
  116. subroutine dfeast_syev(UPLO,N,A,LDA,fpm,epsout,loop,Emin,Emax, &
  117. & M0,E,X,M,res,info)
  118. character UPLO
  119. integer N,LDA
  120. double precision A(LDA,*)
  121. integer fpm(*)
  122. double precision epsout
  123. integer loop
  124. double precision Emin,Emax
  125. integer M0
  126. double precision E(*)
  127. double precision X(N,*)
  128. integer M
  129. double precision res(*)
  130. integer info
  131. end
  132. end interface
  133. interface
  134. subroutine sfeast_sygv(UPLO,N,A,LDA,B,LDB,fpm,epsout,loop, &
  135. & Emin,Emax,M0,E,X,M,res,info)
  136. character UPLO
  137. integer N,LDA,LDB
  138. real A(LDA,*)
  139. real B(LDB,*)
  140. integer fpm(*)
  141. real epsout
  142. integer loop
  143. real Emin,Emax
  144. integer M0
  145. real E(*)
  146. real X(N,*)
  147. integer M
  148. real res(*)
  149. integer info
  150. end
  151. end interface
  152. interface
  153. subroutine sfeast_syev(UPLO,N,A,LDA,fpm,epsout,loop, &
  154. & Emin,Emax,M0,E,X,M,res,info)
  155. character UPLO
  156. integer N,LDA
  157. real A(LDA,*)
  158. integer fpm(*)
  159. real epsout
  160. integer loop
  161. real Emin,Emax
  162. integer M0
  163. real E(*)
  164. real X(N,*)
  165. integer M
  166. real res(*)
  167. integer info
  168. end
  169. end interface
  170. interface
  171. subroutine zfeast_hegv(UPLO,N,A,LDA,B,LDB,fpm,epsout,loop, &
  172. & Emin,Emax,M0,E,X,M,res,info)
  173. character UPLO
  174. integer N, LDA, LDB
  175. complex*16 A(LDA,*)
  176. complex*16 B(LDB,*)
  177. integer fpm(*)
  178. double precision epsout
  179. integer loop
  180. double precision Emin,Emax
  181. integer M0
  182. double precision E(*)
  183. complex X(N,*)
  184. integer M
  185. double precision res(*)
  186. integer info
  187. end
  188. end interface
  189. interface
  190. subroutine zfeast_heev(UPLO,N,A,LDA,fpm,epsout,loop,Emin,Emax, &
  191. & M0,E,X,M,res,info)
  192. character UPLO
  193. integer N,LDA
  194. complex A(LDA,*)
  195. integer fpm(*)
  196. double precision epsout
  197. integer loop
  198. double precision Emin,Emax
  199. integer M0
  200. double precision E(*)
  201. complex X(N,*)
  202. integer M
  203. double precision res(*)
  204. integer info
  205. end
  206. end interface
  207. interface
  208. subroutine cfeast_hegv(UPLO,N,A,LDA,B,LDB,fpm,epsout,loop, &
  209. & Emin,Emax,M0,E,X,M,res,info)
  210. character UPLO
  211. integer N,LDA,LDB
  212. complex A(LDA,*)
  213. complex B(LDB,*)
  214. integer fpm(*)
  215. real epsout
  216. integer loop
  217. real Emin,Emax
  218. integer M0
  219. real E(*)
  220. complex X(N,*)
  221. integer M
  222. real res(*)
  223. integer info
  224. end
  225. end interface
  226. interface
  227. subroutine cfeast_heev(UPLO,N,A,LDA,fpm,epsout,loop,Emin,Emax, &
  228. & M0,E,X,M,res,info)
  229. character UPLO
  230. integer N,LDA
  231. complex A(LDA,*)
  232. integer fpm(*)
  233. real epsout
  234. integer loop
  235. real Emin,Emax
  236. integer M0
  237. real E(*)
  238. complex X(N,*)
  239. integer M
  240. real res(*)
  241. integer info
  242. end
  243. end interface
  244. !!!!!!!!!! BANDED interfaces
  245. interface
  246. subroutine dfeast_sbgv(UPLO,N,kla,A,LDA,klb,B,LDB,fpm,epsout, &
  247. & loop,Emin,Emax,M0,E,X,M,res,info)
  248. character UPLO
  249. integer N,LDA,LDB,kla,klb
  250. double precision A(LDA,*)
  251. double precision B(LDB,*)
  252. integer fpm(*)
  253. double precision epsout
  254. integer loop
  255. double precision Emin,Emax
  256. integer M0
  257. double precision E(*)
  258. double precision X(N,*)
  259. integer M
  260. double precision res(*)
  261. integer info
  262. end
  263. end interface
  264. interface
  265. subroutine dfeast_sbev(UPLO,N,kla,A,LDA,fpm,epsout,loop, &
  266. & Emin,Emax,M0,E,X,M,res,info)
  267. character UPLO
  268. integer N,LDA,kla
  269. double precision A(LDA,*)
  270. integer fpm(*)
  271. double precision epsout
  272. integer loop
  273. double precision Emin,Emax
  274. integer M0
  275. double precision E(*)
  276. double precision X(N,*)
  277. integer M
  278. double precision res(*)
  279. integer info
  280. end
  281. end interface
  282. interface
  283. subroutine sfeast_sbgv(UPLO,N,kla,A,LDA,klb,B,LDB,fpm,epsout, &
  284. & loop,Emin,Emax,M0,E,X,M,res,info)
  285. character UPLO
  286. integer N,LDA,LDB,kla,klb
  287. real A(LDA,*)
  288. real B(LDB,*)
  289. integer fpm(*)
  290. real epsout
  291. integer loop
  292. real Emin,Emax
  293. integer M0
  294. real E(*)
  295. real X(N,*)
  296. integer M
  297. real res(*)
  298. integer info
  299. end
  300. end interface
  301. interface
  302. subroutine sfeast_sbev(UPLO,N,kla,A,LDA,fpm,epsout,loop, &
  303. & Emin,Emax,M0,E,X,M,res,info)
  304. character UPLO
  305. integer N,LDA,kla
  306. real A(LDA,*)
  307. integer fpm(*)
  308. real epsout
  309. integer loop
  310. real Emin,Emax
  311. integer M0
  312. real E(*)
  313. real X(N,*)
  314. integer M
  315. real res(*)
  316. integer info
  317. end
  318. end interface
  319. interface
  320. subroutine cfeast_hbgv(UPLO,N,kla,A,LDA,klb,B,LDB,fpm,epsout, &
  321. & loop,Emin,Emax,M0,E,X,M,res,info)
  322. character UPLO
  323. integer N,LDA,LDB,kla,klb
  324. complex A(LDA,*)
  325. complex B(LDB,*)
  326. integer fpm(*)
  327. real epsout
  328. integer loop
  329. real Emin,Emax
  330. integer M0
  331. real E(*)
  332. complex X(N,*)
  333. integer M
  334. real res(*)
  335. integer info
  336. end
  337. end interface
  338. interface
  339. subroutine cfeast_hbev(UPLO,N,kla,A,LDA,fpm,epsout,loop, &
  340. & Emin,Emax,M0,E,X,M,res,info)
  341. character UPLO
  342. integer N,LDA,kla
  343. complex A(LDA,*)
  344. integer fpm(*)
  345. real epsout
  346. integer loop
  347. real Emin,Emax
  348. integer M0
  349. real E(*)
  350. complex X(N,*)
  351. integer M
  352. real res(*)
  353. integer info
  354. end
  355. end interface
  356. interface
  357. subroutine zfeast_hbgv(UPLO,N,kla,A,LDA,klb,B,LDB,fpm,epsout, &
  358. & loop,Emin,Emax,M0,E,X,M,res,info)
  359. character UPLO
  360. integer N,LDA,LDB,kla,klb
  361. complex*16 A(LDA,*)
  362. complex*16 B(LDB,*)
  363. integer fpm(*)
  364. double precision epsout
  365. integer loop
  366. double precision Emin,Emax
  367. integer M0
  368. double precision E(*)
  369. complex X(N,*)
  370. integer M
  371. double precision res(*)
  372. integer info
  373. end
  374. end interface
  375. interface
  376. subroutine zfeast_hbev(UPLO,N,kla,A,LDA,fpm,epsout,loop, &
  377. & Emin,Emax,M0,E,X,M,res,info)
  378. character UPLO
  379. integer N,LDA,kla
  380. complex*16 A(LDA,*)
  381. integer fpm(*)
  382. double precision epsout
  383. integer loop
  384. double precision Emin,Emax
  385. integer M0
  386. double precision E(*)
  387. complex*16 X(N,*)
  388. integer M
  389. double precision res(*)
  390. integer info
  391. end
  392. end interface
  393. !!!!!!!!!! SPARSE interfaces
  394. interface
  395. subroutine dfeast_scsrgv(UPLO,N,sa,isa,jsa,sb,isb,jsb,fpm, &
  396. & epsout,loop,Emin,Emax,M0,E,X,M,res,info)
  397. character UPLO
  398. integer N
  399. double precision sa(*),sb(*)
  400. integer isa(*),jsa(*),isb(*),jsb(*)
  401. integer fpm(*)
  402. double precision epsout
  403. integer loop
  404. double precision Emin,Emax
  405. integer M0
  406. double precision E(*)
  407. double precision X(N,*)
  408. integer M
  409. double precision res(*)
  410. integer info
  411. end
  412. end interface
  413. interface
  414. subroutine dfeast_scsrev(UPLO,N,sa,isa,jsa,fpm,epsout,loop, &
  415. & Emin,Emax,M0,E,X,M,res,info)
  416. character UPLO
  417. integer N
  418. double precision sa(*)
  419. integer isa(*),jsa(*)
  420. integer fpm(*)
  421. double precision epsout
  422. integer loop
  423. double precision Emin,Emax
  424. integer M0
  425. double precision E(*)
  426. double precision X(N,*)
  427. integer M
  428. double precision res(*)
  429. integer info
  430. end
  431. end interface
  432. interface
  433. subroutine sfeast_scsrgv(UPLO,N,sa,isa,jsa,sb,isb,jsb,fpm, &
  434. & epsout,loop,Emin,Emax,M0,E,X,M,res,info)
  435. character UPLO
  436. integer N
  437. real sa(*),sb(*)
  438. integer isa(*),jsa(*),isb(*),jsb(*)
  439. integer fpm(*)
  440. real epsout
  441. integer loop
  442. real Emin,Emax
  443. integer M0
  444. real E(*)
  445. real X(N,*)
  446. integer M
  447. real res(*)
  448. integer info
  449. end
  450. end interface
  451. interface
  452. subroutine sfeast_scsrev(UPLO,N,sa,isa,jsa,fpm,epsout,loop, &
  453. & Emin,Emax,M0,E,X,M,res,info)
  454. character UPLO
  455. integer N
  456. real sa(*)
  457. integer isa(*),jsa(*)
  458. integer fpm(*)
  459. real epsout
  460. integer loop
  461. real Emin,Emax
  462. integer M0
  463. real E(*)
  464. real X(N,*)
  465. integer M
  466. real res(*)
  467. integer info
  468. end
  469. end interface
  470. interface
  471. subroutine zfeast_hcsrgv(UPLO,N,sa,isa,jsa,sb,isb,jsb,fpm, &
  472. & epsout,loop,Emin,Emax,M0,E,X,M,res,info)
  473. character UPLO
  474. integer N
  475. complex*16 sa(*),sb(*)
  476. integer isa(*),jsa(*),isb(*),jsb(*)
  477. integer fpm(*)
  478. double precision epsout
  479. integer loop
  480. double precision Emin,Emax
  481. integer M0
  482. double precision E(*)
  483. complex*16 X(N,*)
  484. integer M
  485. double precision res(*)
  486. integer info
  487. end
  488. end interface
  489. interface
  490. subroutine zfeast_hcsrev(UPLO,N,sa,isa,jsa,fpm,epsout,loop, &
  491. & Emin,Emax,M0,E,X,M,res,info)
  492. character UPLO
  493. integer N
  494. complex*16 sa(*)
  495. integer isa(*),jsa(*)
  496. integer fpm(*)
  497. double precision epsout
  498. integer loop
  499. double precision Emin,Emax
  500. integer M0
  501. double precision E(*)
  502. complex*16 X(N,*)
  503. integer M
  504. double precision res(*)
  505. integer info
  506. end
  507. end interface
  508. interface
  509. subroutine cfeast_hcsrgv(UPLO,N,sa,isa,jsa,sb,isb,jsb,fpm, &
  510. & epsout,loop,Emin,Emax,M0,E,X,M,res,info)
  511. character UPLO
  512. integer N
  513. complex sa(*),sb(*)
  514. integer isa(*),jsa(*),isb(*),jsb(*)
  515. integer fpm(*)
  516. real epsout
  517. integer loop
  518. real Emin,Emax
  519. integer M0
  520. real E(*)
  521. complex X(N,*)
  522. integer M
  523. real res(*)
  524. integer info
  525. end
  526. end interface
  527. interface
  528. subroutine cfeast_hcsrev(UPLO,N,sa,isa,jsa,fpm,epsout,loop, &
  529. & Emin,Emax,M0,E,X,M,res,info)
  530. character UPLO
  531. integer N
  532. complex sa(*)
  533. integer isa(*),jsa(*)
  534. integer fpm(*)
  535. real epsout
  536. integer loop
  537. real Emin,Emax
  538. integer M0
  539. real E(*)
  540. complex X(N,*)
  541. integer M
  542. real res(*)
  543. integer info
  544. end
  545. end interface