TABLE OF CONTENTS
ABINIT/m_linalg_interfaces [ Modules ]
NAME
m_linalg_interfaces
FUNCTION
Interfaces for the BLAS and LAPACK linear algebra routines.
COPYRIGHT
Copyright (C) 2011-2024 ABINIT group (Yann Pouillon) This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt . WARNING These routines are used both by real and complex arrays and are commented (no interface): - ztrsm, zgemm, zgemv, zhemm, zherk, zher, zgerc - zcopy, zaxpy, zdscal, zscal, zdotc - zhpev, zgsev, zheev, zgetrf, zpotrf, zhegv, zhpevx - zhpgv, zhegst
SOURCE
24 #if defined HAVE_CONFIG_H 25 #include "config.h" 26 #endif 27 28 module m_linalg_interfaces 29 30 implicit none 31 32 interface 33 subroutine caxpy(n,ca,cx,incx,cy,incy) 34 implicit none 35 integer :: incx 36 integer :: incy 37 integer :: n 38 complex :: ca 39 complex :: cx(*) 40 complex :: cy(*) 41 end subroutine caxpy 42 end interface 43 44 interface 45 subroutine ccopy(n,cx,incx,cy,incy) 46 implicit none 47 integer, intent(in) :: incx, incy, n !vz_i 48 complex, intent(in) :: cx(*) !vz_i 49 complex, intent(inout) :: cy(*) !vz_i 50 end subroutine ccopy 51 end interface 52 53 interface 54 complex function cdotc(n,cx,incx,cy,incy) 55 implicit none 56 integer, intent(in) :: incx, incy, n !vz_i 57 complex, intent(in) :: cx(*), cy(*) !vz_i 58 end function cdotc 59 end interface 60 61 interface 62 complex function cdotu(n,cx,incx,cy,incy) 63 implicit none 64 integer, intent(in) :: incx, incy, n !vz_i 65 complex, intent(in) :: cx(*), cy(*) !vz_i 66 end function cdotu 67 end interface 68 69 interface 70 subroutine cgbmv ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,& 71 BETA, Y, INCY ) 72 implicit none 73 integer :: INCX 74 integer :: INCY 75 integer :: KL 76 integer :: KU 77 integer :: LDA 78 integer :: M 79 integer :: N 80 complex :: A( LDA, * ) 81 complex :: ALPHA 82 complex :: BETA 83 character*1 :: TRANS 84 complex :: X( * ) 85 complex :: Y( * ) 86 end subroutine cgbmv 87 end interface 88 89 interface 90 subroutine cgemm ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,& 91 BETA, C, LDC ) 92 implicit none 93 integer,intent(in) :: K,lda,ldb,ldc,m,n !vz_i 94 complex,intent(in) :: A( LDA, * ) !vz_i 95 complex,intent(in) :: ALPHA !vz_i 96 complex,intent(in) :: B( LDB, * ) !vz_i 97 complex,intent(in) :: BETA !vz_i 98 complex,intent(inout) :: C( LDC, * ) !vz_i 99 character*1,intent(in) :: TRANSA !vz_i 100 character*1,intent(in) :: TRANSB !vz_i 101 end subroutine cgemm 102 end interface 103 104 interface 105 subroutine cgemv ( TRANS, M, N, ALPHA, A, LDA, X, INCX,& 106 BETA, Y, INCY ) 107 implicit none 108 integer, intent(in) :: INCX, incy, lda, m, n !vz_i 109 complex, intent(in) :: A( LDA, * ) !vz_i 110 complex, intent(in) :: ALPHA, beta !vz_i 111 character*1, intent(in) :: TRANS !vz_i 112 complex, intent(in) :: X( * ) !vz_i 113 complex, intent(inout) :: Y( * ) !vz_i 114 end subroutine cgemv 115 end interface 116 117 interface 118 subroutine cgerc ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 119 implicit none 120 integer, intent(in) :: INCX, incy, lda, m, n !vz_i 121 complex, intent(inout) :: A( LDA, * ) !vz_i 122 complex, intent(in) :: ALPHA !vz_i 123 complex, intent(in) :: X( * ), Y( * ) !vz_i 124 end subroutine cgerc 125 end interface 126 127 interface 128 subroutine cgeru ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 129 implicit none 130 integer :: INCX 131 integer :: INCY 132 integer :: LDA 133 integer :: M 134 integer :: N 135 complex :: A( LDA, * ) 136 complex :: ALPHA 137 complex :: X( * ) 138 complex :: Y( * ) 139 end subroutine cgeru 140 end interface 141 142 interface 143 subroutine chbmv ( UPLO, N, K, ALPHA, A, LDA, X, INCX,& 144 BETA, Y, INCY ) 145 implicit none 146 integer :: INCX 147 integer :: INCY 148 integer :: K 149 integer :: LDA 150 integer :: N 151 complex :: A( LDA, * ) 152 complex :: ALPHA 153 complex :: BETA 154 character*1 :: UPLO 155 complex :: X( * ) 156 complex :: Y( * ) 157 end subroutine chbmv 158 end interface 159 160 interface 161 subroutine chemm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,& 162 BETA, C, LDC ) 163 implicit none 164 integer :: LDA 165 integer :: LDB 166 integer :: LDC 167 integer :: M 168 integer :: N 169 complex :: A( LDA, * ) 170 complex :: ALPHA 171 complex :: B( LDB, * ) 172 complex :: BETA 173 complex :: C( LDC, * ) 174 character*1 :: SIDE 175 character*1 :: UPLO 176 end subroutine chemm 177 end interface 178 179 interface 180 subroutine chemv ( UPLO, N, ALPHA, A, LDA, X, INCX,& 181 BETA, Y, INCY ) 182 implicit none 183 integer :: INCX 184 integer :: INCY 185 integer :: LDA 186 integer :: N 187 complex :: A( LDA, * ) 188 complex :: ALPHA 189 complex :: BETA 190 character*1 :: UPLO 191 complex :: X( * ) 192 complex :: Y( * ) 193 end subroutine chemv 194 end interface 195 196 interface 197 subroutine cher ( UPLO, N, ALPHA, X, INCX, A, LDA ) 198 implicit none 199 integer :: INCX 200 integer :: LDA 201 integer :: N 202 complex :: A( LDA, * ) 203 real :: ALPHA 204 character*1 :: UPLO 205 complex :: X( * ) 206 end subroutine cher 207 end interface 208 209 interface 210 subroutine cher2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 211 implicit none 212 integer :: INCX 213 integer :: INCY 214 integer :: LDA 215 integer :: N 216 complex :: A( LDA, * ) 217 complex :: ALPHA 218 character*1 :: UPLO 219 complex :: X( * ) 220 complex :: Y( * ) 221 end subroutine cher2 222 end interface 223 224 interface 225 subroutine cher2k( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,& 226 BETA, C, LDC ) 227 implicit none 228 integer :: K 229 integer :: LDA 230 integer :: LDB 231 integer :: LDC 232 integer :: N 233 complex :: A( LDA, * ) 234 complex :: ALPHA 235 complex :: B( LDB, * ) 236 real :: BETA 237 complex :: C( LDC, * ) 238 character*1 :: TRANS 239 character*1 :: UPLO 240 end subroutine cher2k 241 end interface 242 243 interface 244 subroutine cherk ( UPLO, TRANS, N, K, ALPHA, A, LDA,& 245 BETA, C, LDC ) 246 implicit none 247 integer, intent(in) :: K,lda,ldc,n !vz_i 248 complex,intent(in) :: A( LDA, * ) !vz_i 249 real,intent(in) :: ALPHA !vz_i 250 real,intent(in) :: BETA !vz_i 251 complex,intent(inout) :: C( LDC, * ) !vz_i 252 character*1,intent(in) :: TRANS !vz_i 253 character*1,intent(in) :: UPLO !vz_i 254 end subroutine cherk 255 end interface 256 257 interface 258 subroutine chpmv ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY ) 259 implicit none 260 integer :: INCX 261 integer :: INCY 262 integer :: N 263 complex :: ALPHA 264 complex :: AP( * ) 265 complex :: BETA 266 character*1 :: UPLO 267 complex :: X( * ) 268 complex :: Y( * ) 269 end subroutine chpmv 270 end interface 271 272 interface 273 subroutine chpr ( UPLO, N, ALPHA, X, INCX, AP ) 274 implicit none 275 integer :: INCX 276 integer :: N 277 real :: ALPHA 278 complex :: AP( * ) 279 character*1 :: UPLO 280 complex :: X( * ) 281 end subroutine chpr 282 end interface 283 284 interface 285 subroutine chpr2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP ) 286 implicit none 287 integer :: INCX 288 integer :: INCY 289 integer :: N 290 complex :: ALPHA 291 complex :: AP( * ) 292 character*1 :: UPLO 293 complex :: X( * ) 294 complex :: Y( * ) 295 end subroutine chpr2 296 end interface 297 298 interface 299 subroutine crotg(ca,cb,c,s) 300 implicit none 301 real :: c 302 complex :: ca 303 complex :: cb 304 complex :: s 305 end subroutine crotg 306 end interface 307 308 interface 309 subroutine cscal(n,ca,cx,incx) 310 implicit none 311 integer :: incx 312 integer :: n 313 complex :: ca 314 complex :: cx(*) 315 end subroutine cscal 316 end interface 317 318 interface 319 subroutine csrot (n,cx,incx,cy,incy,c,s) 320 implicit none 321 integer :: incx 322 integer :: incy 323 integer :: n 324 real :: c 325 real :: s 326 complex :: cx(1) 327 complex :: cy(1) 328 end subroutine csrot 329 end interface 330 331 interface 332 subroutine csscal(n,sa,cx,incx) 333 implicit none 334 integer :: incx 335 integer :: n 336 real :: sa 337 complex :: cx(*) 338 end subroutine csscal 339 end interface 340 341 interface 342 subroutine cswap (n,cx,incx,cy,incy) 343 implicit none 344 integer :: incx 345 integer :: incy 346 integer :: n 347 complex :: cx(*) 348 complex :: cy(*) 349 end subroutine cswap 350 end interface 351 352 interface 353 subroutine csymm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,& 354 BETA, C, LDC ) 355 implicit none 356 integer :: LDA 357 integer :: LDB 358 integer :: LDC 359 integer :: M 360 integer :: N 361 complex :: A( LDA, * ) 362 complex :: ALPHA 363 complex :: B( LDB, * ) 364 complex :: BETA 365 complex :: C( LDC, * ) 366 character*1 :: SIDE 367 character*1 :: UPLO 368 end subroutine csymm 369 end interface 370 371 interface 372 subroutine csyr2k( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,& 373 BETA, C, LDC ) 374 implicit none 375 integer :: K 376 integer :: LDA 377 integer :: LDB 378 integer :: LDC 379 integer :: N 380 complex :: A( LDA, * ) 381 complex :: ALPHA 382 complex :: B( LDB, * ) 383 complex :: BETA 384 complex :: C( LDC, * ) 385 character*1 :: TRANS 386 character*1 :: UPLO 387 end subroutine csyr2k 388 end interface 389 390 interface 391 subroutine csyrk ( UPLO, TRANS, N, K, ALPHA, A, LDA,& 392 BETA, C, LDC ) 393 implicit none 394 integer :: K 395 integer :: LDA 396 integer :: LDC 397 integer :: N 398 complex :: A( LDA, * ) 399 complex :: ALPHA 400 complex :: BETA 401 complex :: C( LDC, * ) 402 character*1 :: TRANS 403 character*1 :: UPLO 404 end subroutine csyrk 405 end interface 406 407 interface 408 subroutine ctbmv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 409 implicit none 410 integer :: INCX 411 integer :: K 412 integer :: LDA 413 integer :: N 414 complex :: A( LDA, * ) 415 character*1 :: DIAG 416 character*1 :: TRANS 417 character*1 :: UPLO 418 complex :: X( * ) 419 end subroutine ctbmv 420 end interface 421 422 interface 423 subroutine ctbsv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 424 implicit none 425 integer :: INCX 426 integer :: K 427 integer :: LDA 428 integer :: N 429 complex :: A( LDA, * ) 430 character*1 :: DIAG 431 character*1 :: TRANS 432 character*1 :: UPLO 433 complex :: X( * ) 434 end subroutine ctbsv 435 end interface 436 437 interface 438 subroutine ctpmv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 439 implicit none 440 integer :: INCX 441 integer :: N 442 complex :: AP( * ) 443 character*1 :: DIAG 444 character*1 :: TRANS 445 character*1 :: UPLO 446 complex :: X( * ) 447 end subroutine ctpmv 448 end interface 449 450 interface 451 subroutine ctpsv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 452 implicit none 453 integer :: INCX 454 integer :: N 455 complex :: AP( * ) 456 character*1 :: DIAG 457 character*1 :: TRANS 458 character*1 :: UPLO 459 complex :: X( * ) 460 end subroutine ctpsv 461 end interface 462 463 interface 464 subroutine ctrmm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 465 B, LDB ) 466 implicit none 467 integer :: LDA 468 integer :: LDB 469 integer :: M 470 integer :: N 471 complex :: A( LDA, * ) 472 complex :: ALPHA 473 complex :: B( LDB, * ) 474 character*1 :: DIAG 475 character*1 :: SIDE 476 character*1 :: TRANSA 477 character*1 :: UPLO 478 end subroutine ctrmm 479 end interface 480 481 interface 482 subroutine ctrmv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 483 implicit none 484 integer :: INCX 485 integer :: LDA 486 integer :: N 487 complex :: A( LDA, * ) 488 character*1 :: DIAG 489 character*1 :: TRANS 490 character*1 :: UPLO 491 complex :: X( * ) 492 end subroutine ctrmv 493 end interface 494 495 interface 496 subroutine ctrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 497 B, LDB ) 498 implicit none 499 integer :: LDA 500 integer :: LDB 501 integer :: M 502 integer :: N 503 complex :: A( LDA, * ) 504 complex :: ALPHA 505 complex :: B( LDB, * ) 506 character*1 :: DIAG 507 character*1 :: SIDE 508 character*1 :: TRANSA 509 character*1 :: UPLO 510 end subroutine ctrsm 511 end interface 512 513 interface 514 subroutine ctrsv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 515 implicit none 516 integer :: INCX 517 integer :: LDA 518 integer :: N 519 complex :: A( LDA, * ) 520 character*1 :: DIAG 521 character*1 :: TRANS 522 character*1 :: UPLO 523 complex :: X( * ) 524 end subroutine ctrsv 525 end interface 526 527 interface 528 double precision function dasum(n,dx,incx) 529 implicit none 530 integer :: incx 531 integer :: n 532 double precision :: dx(*) 533 end function dasum 534 end interface 535 536 interface 537 subroutine daxpy(n,da,dx,incx,dy,incy) 538 implicit none 539 integer :: incx 540 integer :: incy 541 integer :: n 542 double precision :: da 543 double precision :: dx(*) 544 double precision :: dy(*) 545 end subroutine daxpy 546 end interface 547 548 interface 549 double precision function dcabs1(z) 550 implicit none 551 double complex :: z 552 end function dcabs1 553 end interface 554 555 !interface 556 ! subroutine dcopy(n,dx,incx,dy,incy) 557 ! implicit none 558 ! integer :: incx 559 ! integer :: incy 560 ! integer :: n 561 ! double precision :: dx(*) 562 ! double precision :: dy(*) 563 ! end subroutine dcopy 564 !end interface 565 566 interface 567 double precision function ddot(n,dx,incx,dy,incy) 568 implicit none 569 integer,intent(in) :: incx 570 integer,intent(in) :: incy 571 integer,intent(in) :: n 572 double precision,intent(in) :: dx(*) 573 double precision,intent(in) :: dy(*) 574 end function ddot 575 end interface 576 577 interface 578 subroutine dgbmv ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,& 579 BETA, Y, INCY ) 580 implicit none 581 integer :: INCX 582 integer :: INCY 583 integer :: KL 584 integer :: KU 585 integer :: LDA 586 integer :: M 587 integer :: N 588 double precision :: A( LDA, * ) 589 double precision :: ALPHA 590 double precision :: BETA 591 character*1 :: TRANS 592 double precision :: X( * ) 593 double precision :: Y( * ) 594 end subroutine dgbmv 595 end interface 596 597 interface 598 subroutine dgemm ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,& 599 BETA, C, LDC ) 600 implicit none 601 integer,intent(in) :: K,lda,ldb,ldc,m,n !vz_i 602 double precision, intent(in) :: A( LDA, * ) !vz_i 603 double precision,intent(in) :: ALPHA !vz_i 604 double precision,intent(in) :: B( LDB, * ) !vz_i 605 double precision,intent(in) :: BETA !vz_i 606 double precision,intent(inout) :: C( LDC, * ) !vz_i 607 character*1,intent(in) :: TRANSA !vz_i 608 character*1,intent(in) :: TRANSB !vz_i 609 end subroutine dgemm 610 end interface 611 612 interface 613 subroutine dgemv ( TRANS, M, N, ALPHA, A, LDA, X, INCX,& 614 BETA, Y, INCY ) 615 implicit none 616 integer, intent(in) :: INCX,incy,lda,m,n !vz_i 617 double precision, intent(in) :: A( LDA, * ) !vz_i 618 double precision, intent(in) :: ALPHA !vz_i 619 double precision, intent(in) :: BETA !vz_i 620 character*1, intent(in) :: TRANS !vz_i 621 double precision, intent(in) :: X( * ) !vz_i 622 double precision, intent(inout) :: Y( * ) !vz_i 623 end subroutine dgemv 624 end interface 625 626 interface 627 subroutine dger ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 628 implicit none 629 integer :: INCX 630 integer :: INCY 631 integer :: LDA 632 integer :: M 633 integer :: N 634 double precision :: A( LDA, * ) 635 double precision :: ALPHA 636 double precision :: X( * ) 637 double precision :: Y( * ) 638 end subroutine dger 639 end interface 640 641 interface 642 double precision function dnrm2 ( N, X, INCX ) 643 implicit none 644 integer, intent(in) :: INCX, n !vz_i 645 double precision,intent(in) :: X( * ) !vz_i 646 end function dnrm2 647 end interface 648 649 interface 650 subroutine drot (n,dx,incx,dy,incy,c,s) 651 implicit none 652 integer :: incx 653 integer :: incy 654 integer :: n 655 double precision :: c 656 double precision :: s 657 double precision :: dx(*) 658 double precision :: dy(*) 659 end subroutine drot 660 end interface 661 662 interface 663 subroutine drotg(da,db,c,s) 664 implicit none 665 double precision :: c 666 double precision :: da 667 double precision :: db 668 double precision :: s 669 end subroutine drotg 670 end interface 671 672 interface 673 subroutine drotm (N,DX,INCX,DY,INCY,DPARAM) 674 implicit none 675 integer :: INCX 676 integer :: INCY 677 integer :: N 678 double precision :: DPARAM(5) 679 double precision :: DX(1) 680 double precision :: DY(1) 681 end subroutine drotm 682 end interface 683 684 interface 685 subroutine drotmg (DD1,DD2,DX1,DY1,DPARAM) 686 implicit none 687 double precision :: DD1 688 double precision :: DD2 689 double precision :: DPARAM(5) 690 double precision :: DX1 691 double precision :: DY1 692 end subroutine drotmg 693 end interface 694 695 interface 696 subroutine dsbmv ( UPLO, N, K, ALPHA, A, LDA, X, INCX,& 697 BETA, Y, INCY ) 698 implicit none 699 integer :: INCX 700 integer :: INCY 701 integer :: K 702 integer :: LDA 703 integer :: N 704 double precision :: A( LDA, * ) 705 double precision :: ALPHA 706 double precision :: BETA 707 character*1 :: UPLO 708 double precision :: X( * ) 709 double precision :: Y( * ) 710 end subroutine dsbmv 711 end interface 712 713 interface 714 subroutine dscal(n,da,dx,incx) 715 implicit none 716 integer :: incx 717 integer :: n 718 double precision :: da 719 double precision :: dx(*) 720 end subroutine dscal 721 end interface 722 723 interface 724 double precision function dsdot (N, SX, INCX, SY, INCY) 725 implicit none 726 integer :: INCX 727 integer :: INCY 728 integer :: N 729 real :: SX(*) 730 real :: SY(*) 731 end function dsdot 732 end interface 733 734 interface 735 subroutine dswap (n,dx,incx,dy,incy) 736 implicit none 737 integer :: incx 738 integer :: incy 739 integer :: n 740 double precision :: dx(*) 741 double precision :: dy(*) 742 end subroutine dswap 743 end interface 744 745 interface 746 subroutine dsymm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,& 747 BETA, C, LDC ) 748 implicit none 749 integer :: LDA 750 integer :: LDB 751 integer :: LDC 752 integer :: M 753 integer :: N 754 double precision :: A( LDA, * ) 755 double precision :: ALPHA 756 double precision :: B( LDB, * ) 757 double precision :: BETA 758 double precision :: C( LDC, * ) 759 character*1 :: SIDE 760 character*1 :: UPLO 761 end subroutine dsymm 762 end interface 763 764 interface 765 subroutine dsymv ( UPLO, N, ALPHA, A, LDA, X, INCX,& 766 BETA, Y, INCY ) 767 implicit none 768 integer :: INCX 769 integer :: INCY 770 integer :: LDA 771 integer :: N 772 double precision :: A( LDA, * ) 773 double precision :: ALPHA 774 double precision :: BETA 775 character*1 :: UPLO 776 double precision :: X( * ) 777 double precision :: Y( * ) 778 end subroutine dsymv 779 end interface 780 781 interface 782 subroutine dtrmm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 783 B, LDB ) 784 implicit none 785 integer :: LDA 786 integer :: LDB 787 integer :: M 788 integer :: N 789 double precision :: A( LDA, * ) 790 double precision :: ALPHA 791 double precision :: B( LDB, * ) 792 character*1 :: DIAG 793 character*1 :: SIDE 794 character*1 :: TRANSA 795 character*1 :: UPLO 796 end subroutine dtrmm 797 end interface 798 799 interface 800 subroutine dtrmv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 801 implicit none 802 integer :: INCX 803 integer :: LDA 804 integer :: N 805 double precision :: A( LDA, * ) 806 character*1 :: DIAG 807 character*1 :: TRANS 808 character*1 :: UPLO 809 double precision :: X( * ) 810 end subroutine dtrmv 811 end interface 812 813 interface 814 subroutine dtrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 815 B, LDB ) 816 implicit none 817 integer :: LDA 818 integer :: LDB 819 integer :: M 820 integer :: N 821 double precision :: A( LDA, * ) 822 double precision :: ALPHA 823 double precision :: B( LDB, * ) 824 character*1 :: DIAG 825 character*1 :: SIDE 826 character*1 :: TRANSA 827 character*1 :: UPLO 828 end subroutine dtrsm 829 end interface 830 831 interface 832 subroutine dtrsv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 833 implicit none 834 integer :: INCX 835 integer :: LDA 836 integer :: N 837 double precision :: A( LDA, * ) 838 character*1 :: DIAG 839 character*1 :: TRANS 840 character*1 :: UPLO 841 double precision :: X( * ) 842 end subroutine dtrsv 843 end interface 844 845 interface 846 double precision function dzasum(n,zx,incx) 847 implicit none 848 integer :: incx 849 integer :: n 850 double complex :: zx(*) 851 end function dzasum 852 end interface 853 854 interface 855 double precision function dznrm2( N, X, INCX ) 856 implicit none 857 integer, intent(in) :: INCX, n !vz_i 858 complex*16,intent(in) :: X( * ) !vz_i 859 end function dznrm2 860 end interface 861 862 interface 863 integer function icamax(n,cx,incx) 864 implicit none 865 integer :: incx 866 integer :: n 867 complex :: cx(*) 868 end function icamax 869 end interface 870 871 interface 872 integer function idamax(n,dx,incx) 873 implicit none 874 integer :: incx 875 integer :: n 876 double precision :: dx(*) 877 end function idamax 878 end interface 879 880 interface 881 integer function isamax(n,sx,incx) 882 implicit none 883 integer :: incx 884 integer :: n 885 real :: sx(*) 886 end function isamax 887 end interface 888 889 interface 890 integer function izamax(n,zx,incx) 891 implicit none 892 integer :: incx 893 integer :: n 894 double complex :: zx(*) 895 end function izamax 896 end interface 897 898 interface 899 real function sasum(n,sx,incx) 900 implicit none 901 integer :: incx 902 integer :: n 903 real :: sx(*) 904 end function sasum 905 end interface 906 907 interface 908 subroutine saxpy(n,sa,sx,incx,sy,incy) 909 implicit none 910 integer :: incx 911 integer :: incy 912 integer :: n 913 real :: sa 914 real :: sx(*) 915 real :: sy(*) 916 end subroutine saxpy 917 end interface 918 919 interface 920 real function scasum(n,cx,incx) 921 implicit none 922 integer :: incx 923 integer :: n 924 complex :: cx(*) 925 end function scasum 926 end interface 927 928 interface 929 real function scnrm2( N, X, INCX ) 930 implicit none 931 integer, intent(in) :: INCX, n !vz_i 932 complex, intent(in) :: X( * ) !vz_i 933 end function scnrm2 934 end interface 935 936 interface 937 subroutine scopy(n,sx,incx,sy,incy) 938 implicit none 939 integer, intent(in) :: incx,incy,n !vz_i 940 real, intent(in) :: sx(*) !vz_i 941 real, intent(inout) :: sy(*) !vz_i 942 end subroutine scopy 943 end interface 944 945 interface 946 real function sdot(n,sx,incx,sy,incy) 947 implicit none 948 integer :: incx 949 integer :: incy 950 integer :: n 951 real :: sx(*) 952 real :: sy(*) 953 end function sdot 954 end interface 955 956 interface 957 real function sdsdot (N, SB, SX, INCX, SY, INCY) 958 implicit none 959 integer :: INCX 960 integer :: INCY 961 integer :: N 962 real :: SB 963 real :: SX(*) 964 real :: SY(*) 965 end function sdsdot 966 end interface 967 968 interface 969 subroutine sgbmv ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,& 970 BETA, Y, INCY ) 971 implicit none 972 integer :: INCX 973 integer :: INCY 974 integer :: KL 975 integer :: KU 976 integer :: LDA 977 integer :: M 978 integer :: N 979 real :: A( LDA, * ) 980 real :: ALPHA 981 real :: BETA 982 character*1 :: TRANS 983 real :: X( * ) 984 real :: Y( * ) 985 end subroutine sgbmv 986 end interface 987 988 interface 989 subroutine sgemm ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB,& 990 BETA, C, LDC ) 991 implicit none 992 integer, intent(in) :: K,lda,ldb,ldc,m,n !vz_i 993 real,intent(in) :: A( LDA, * ) !vz_i 994 real,intent(in) :: ALPHA !vz_i 995 real,intent(in) :: B( LDB, * ) !vz_i 996 real,intent(in) :: BETA !vz_i 997 real,intent(inout) :: C( LDC, * ) !vz_i 998 character*1,intent(in) :: TRANSA !vz_i 999 character*1,intent(in) :: TRANSB !vz_i 1000 end subroutine sgemm 1001 end interface 1002 1003 interface 1004 subroutine sgemv ( TRANS, M, N, ALPHA, A, LDA, X, INCX,& 1005 BETA, Y, INCY ) 1006 implicit none 1007 integer,intent(in) :: INCX, incy, lda,m,n !vz_i 1008 real,intent(in) :: A( LDA, * ) !vz_i 1009 real,intent(in) :: ALPHA !vz_i 1010 real,intent(in) :: BETA !vz_i 1011 character*1,intent(in) :: TRANS !vz_i 1012 real,intent(in) :: X( * ) !vz_i 1013 real,intent(inout) :: Y( * ) !vz_i 1014 end subroutine sgemv 1015 end interface 1016 1017 interface 1018 subroutine sger ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 1019 implicit none 1020 integer :: INCX 1021 integer :: INCY 1022 integer :: LDA 1023 integer :: M 1024 integer :: N 1025 real :: A( LDA, * ) 1026 real :: ALPHA 1027 real :: X( * ) 1028 real :: Y( * ) 1029 end subroutine sger 1030 end interface 1031 1032 interface 1033 real function snrm2 ( N, X, INCX ) 1034 implicit none 1035 integer,intent(in) :: INCX,n !vz_i 1036 real,intent(in) :: X( * ) !vz_i 1037 end function snrm2 1038 end interface 1039 1040 interface 1041 subroutine srot (n,sx,incx,sy,incy,c,s) 1042 implicit none 1043 integer :: incx 1044 integer :: incy 1045 integer :: n 1046 real :: c 1047 real :: s 1048 real :: sx(*) 1049 real :: sy(*) 1050 end subroutine srot 1051 end interface 1052 1053 interface 1054 subroutine srotg(sa,sb,c,s) 1055 implicit none 1056 real :: c 1057 real :: s 1058 real :: sa 1059 real :: sb 1060 end subroutine srotg 1061 end interface 1062 1063 interface 1064 subroutine srotm (N,SX,INCX,SY,INCY,SPARAM) 1065 implicit none 1066 integer :: INCX 1067 integer :: INCY 1068 integer :: N 1069 real :: SPARAM(5) 1070 real :: SX(1) 1071 real :: SY(1) 1072 end subroutine srotm 1073 end interface 1074 1075 interface 1076 subroutine srotmg (SD1,SD2,SX1,SY1,SPARAM) 1077 implicit none 1078 real :: SD1 1079 real :: SD2 1080 real :: SPARAM(5) 1081 real :: SX1 1082 real :: SY1 1083 end subroutine srotmg 1084 end interface 1085 1086 interface 1087 subroutine ssbmv ( UPLO, N, K, ALPHA, A, LDA, X, INCX,& 1088 BETA, Y, INCY ) 1089 implicit none 1090 integer :: INCX 1091 integer :: INCY 1092 integer :: K 1093 integer :: LDA 1094 integer :: N 1095 real :: A( LDA, * ) 1096 real :: ALPHA 1097 real :: BETA 1098 character*1 :: UPLO 1099 real :: X( * ) 1100 real :: Y( * ) 1101 end subroutine ssbmv 1102 end interface 1103 1104 interface 1105 subroutine sscal(n,sa,sx,incx) 1106 implicit none 1107 integer :: incx 1108 integer :: n 1109 real :: sa 1110 real :: sx(*) 1111 end subroutine sscal 1112 end interface 1113 1114 interface 1115 subroutine sspmv ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY ) 1116 implicit none 1117 integer :: INCX 1118 integer :: INCY 1119 integer :: N 1120 real :: ALPHA 1121 real :: AP( * ) 1122 real :: BETA 1123 character*1 :: UPLO 1124 real :: X( * ) 1125 real :: Y( * ) 1126 end subroutine sspmv 1127 end interface 1128 1129 interface 1130 subroutine sspr ( UPLO, N, ALPHA, X, INCX, AP ) 1131 implicit none 1132 integer :: INCX 1133 integer :: N 1134 real :: ALPHA 1135 real :: AP( * ) 1136 character*1 :: UPLO 1137 real :: X( * ) 1138 end subroutine sspr 1139 end interface 1140 1141 interface 1142 subroutine sspr2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP ) 1143 implicit none 1144 integer :: INCX 1145 integer :: INCY 1146 integer :: N 1147 real :: ALPHA 1148 real :: AP( * ) 1149 character*1 :: UPLO 1150 real :: X( * ) 1151 real :: Y( * ) 1152 end subroutine sspr2 1153 end interface 1154 1155 interface 1156 subroutine sswap (n,sx,incx,sy,incy) 1157 implicit none 1158 integer :: incx 1159 integer :: incy 1160 integer :: n 1161 real :: sx(*) 1162 real :: sy(*) 1163 end subroutine sswap 1164 end interface 1165 1166 interface 1167 subroutine ssymm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,& 1168 BETA, C, LDC ) 1169 implicit none 1170 integer :: LDA 1171 integer :: LDB 1172 integer :: LDC 1173 integer :: M 1174 integer :: N 1175 real :: A( LDA, * ) 1176 real :: ALPHA 1177 real :: B( LDB, * ) 1178 real :: BETA 1179 real :: C( LDC, * ) 1180 character*1 :: SIDE 1181 character*1 :: UPLO 1182 end subroutine ssymm 1183 end interface 1184 1185 interface 1186 subroutine ssymv ( UPLO, N, ALPHA, A, LDA, X, INCX,& 1187 BETA, Y, INCY ) 1188 implicit none 1189 integer :: INCX 1190 integer :: INCY 1191 integer :: LDA 1192 integer :: N 1193 real :: A( LDA, * ) 1194 real :: ALPHA 1195 real :: BETA 1196 character*1 :: UPLO 1197 real :: X( * ) 1198 real :: Y( * ) 1199 end subroutine ssymv 1200 end interface 1201 1202 interface 1203 subroutine ssyr ( UPLO, N, ALPHA, X, INCX, A, LDA ) 1204 implicit none 1205 integer :: INCX 1206 integer :: LDA 1207 integer :: N 1208 real :: A( LDA, * ) 1209 real :: ALPHA 1210 character*1 :: UPLO 1211 real :: X( * ) 1212 end subroutine ssyr 1213 end interface 1214 1215 interface 1216 subroutine ssyr2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 1217 implicit none 1218 integer :: INCX 1219 integer :: INCY 1220 integer :: LDA 1221 integer :: N 1222 real :: A( LDA, * ) 1223 real :: ALPHA 1224 character*1 :: UPLO 1225 real :: X( * ) 1226 real :: Y( * ) 1227 end subroutine ssyr2 1228 end interface 1229 1230 interface 1231 subroutine ssyr2k( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,& 1232 BETA, C, LDC ) 1233 implicit none 1234 integer :: K 1235 integer :: LDA 1236 integer :: LDB 1237 integer :: LDC 1238 integer :: N 1239 real :: A( LDA, * ) 1240 real :: ALPHA 1241 real :: B( LDB, * ) 1242 real :: BETA 1243 real :: C( LDC, * ) 1244 character*1 :: TRANS 1245 character*1 :: UPLO 1246 end subroutine ssyr2k 1247 end interface 1248 1249 interface 1250 subroutine ssyrk ( UPLO, TRANS, N, K, ALPHA, A, LDA,& 1251 BETA, C, LDC ) 1252 implicit none 1253 integer :: K 1254 integer :: LDA 1255 integer :: LDC 1256 integer :: N 1257 real :: A( LDA, * ) 1258 real :: ALPHA 1259 real :: BETA 1260 real :: C( LDC, * ) 1261 character*1 :: TRANS 1262 character*1 :: UPLO 1263 end subroutine ssyrk 1264 end interface 1265 1266 interface 1267 subroutine stbmv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 1268 implicit none 1269 integer :: INCX 1270 integer :: K 1271 integer :: LDA 1272 integer :: N 1273 real :: A( LDA, * ) 1274 character*1 :: DIAG 1275 character*1 :: TRANS 1276 character*1 :: UPLO 1277 real :: X( * ) 1278 end subroutine stbmv 1279 end interface 1280 1281 interface 1282 subroutine stbsv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 1283 implicit none 1284 integer :: INCX 1285 integer :: K 1286 integer :: LDA 1287 integer :: N 1288 real :: A( LDA, * ) 1289 character*1 :: DIAG 1290 character*1 :: TRANS 1291 character*1 :: UPLO 1292 real :: X( * ) 1293 end subroutine stbsv 1294 end interface 1295 1296 interface 1297 subroutine stpmv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 1298 implicit none 1299 integer :: INCX 1300 integer :: N 1301 real :: AP( * ) 1302 character*1 :: DIAG 1303 character*1 :: TRANS 1304 character*1 :: UPLO 1305 real :: X( * ) 1306 end subroutine stpmv 1307 end interface 1308 1309 interface 1310 subroutine stpsv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 1311 implicit none 1312 integer :: INCX 1313 integer :: N 1314 real :: AP( * ) 1315 character*1 :: DIAG 1316 character*1 :: TRANS 1317 character*1 :: UPLO 1318 real :: X( * ) 1319 end subroutine stpsv 1320 end interface 1321 1322 interface 1323 subroutine strmm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 1324 B, LDB ) 1325 implicit none 1326 integer :: LDA 1327 integer :: LDB 1328 integer :: M 1329 integer :: N 1330 real :: A( LDA, * ) 1331 real :: ALPHA 1332 real :: B( LDB, * ) 1333 character*1 :: DIAG 1334 character*1 :: SIDE 1335 character*1 :: TRANSA 1336 character*1 :: UPLO 1337 end subroutine strmm 1338 end interface 1339 1340 interface 1341 subroutine strmv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 1342 implicit none 1343 integer :: INCX 1344 integer :: LDA 1345 integer :: N 1346 real :: A( LDA, * ) 1347 character*1 :: DIAG 1348 character*1 :: TRANS 1349 character*1 :: UPLO 1350 real :: X( * ) 1351 end subroutine strmv 1352 end interface 1353 1354 interface 1355 subroutine strsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 1356 B, LDB ) 1357 implicit none 1358 integer :: LDA 1359 integer :: LDB 1360 integer :: M 1361 integer :: N 1362 real :: A( LDA, * ) 1363 real :: ALPHA 1364 real :: B( LDB, * ) 1365 character*1 :: DIAG 1366 character*1 :: SIDE 1367 character*1 :: TRANSA 1368 character*1 :: UPLO 1369 end subroutine strsm 1370 end interface 1371 1372 interface 1373 subroutine strsv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 1374 implicit none 1375 integer :: INCX 1376 integer :: LDA 1377 integer :: N 1378 real :: A( LDA, * ) 1379 character*1 :: DIAG 1380 character*1 :: TRANS 1381 character*1 :: UPLO 1382 real :: X( * ) 1383 end subroutine strsv 1384 end interface 1385 1386 !interface 1387 ! subroutine zaxpy(n,za,zx,incx,zy,incy) 1388 ! implicit none 1389 ! integer :: incx 1390 ! integer :: incy 1391 ! integer :: n 1392 ! double complex :: za 1393 ! double complex :: zx(*) 1394 ! double complex :: zy(*) 1395 ! end subroutine zaxpy 1396 !end interface 1397 1398 !interface 1399 ! subroutine zcopy(n,zx,incx,zy,incy) 1400 ! implicit none 1401 ! integer :: incx 1402 ! integer :: incy 1403 ! integer :: n 1404 ! double complex :: zx(*) 1405 ! double complex :: zy(*) 1406 ! end subroutine zcopy 1407 !end interface 1408 1409 !interface 1410 ! double complex function zdotc(n,zx,incx,zy,incy) 1411 ! implicit none 1412 ! integer :: incx 1413 ! integer :: incy 1414 ! integer :: n 1415 ! double complex :: zx(*) 1416 ! double complex :: zy(*) 1417 ! end function zdotc 1418 !end interface 1419 1420 interface 1421 double complex function zdotu(n,zx,incx,zy,incy) 1422 implicit none 1423 integer, intent(in) :: incx, incy, n !vz_i 1424 double complex, intent(in) :: zx(*), zy(*) !vz_i 1425 end function zdotu 1426 end interface 1427 1428 interface 1429 subroutine zdrot( N, CX, INCX, CY, INCY, C, S ) 1430 implicit none 1431 integer :: INCX 1432 integer :: INCY 1433 integer :: N 1434 double precision :: C 1435 complex*16 :: CX( * ) 1436 complex*16 :: CY( * ) 1437 double precision :: S 1438 end subroutine zdrot 1439 end interface 1440 1441 !interface 1442 ! subroutine zdscal(n,da,zx,incx) 1443 ! implicit none 1444 ! integer :: incx 1445 ! integer :: n 1446 ! double precision :: da 1447 ! double complex :: zx(*) 1448 ! end subroutine zdscal 1449 !end interface 1450 1451 interface 1452 subroutine zgbmv ( TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX,& 1453 BETA, Y, INCY ) 1454 implicit none 1455 integer :: INCX 1456 integer :: INCY 1457 integer :: KL 1458 integer :: KU 1459 integer :: LDA 1460 integer :: M 1461 integer :: N 1462 complex*16 :: A( LDA, * ) 1463 complex*16 :: ALPHA 1464 complex*16 :: BETA 1465 character*1 :: TRANS 1466 complex*16 :: X( * ) 1467 complex*16 :: Y( * ) 1468 end subroutine zgbmv 1469 end interface 1470 1471 !interface 1472 ! subroutine zgemm ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC ) 1473 ! implicit none 1474 ! integer :: K 1475 ! integer :: LDA 1476 ! integer :: LDB 1477 ! integer :: LDC 1478 ! integer :: M 1479 ! integer :: N 1480 ! complex*16 :: A( LDA, * ) 1481 ! complex*16 :: ALPHA 1482 ! complex*16 :: B( LDB, * ) 1483 ! complex*16 :: BETA 1484 ! complex*16 :: C( LDC, * ) 1485 ! character*1 :: TRANSA 1486 ! character*1 :: TRANSB 1487 ! end subroutine zgemm 1488 !end interface 1489 1490 !interface 1491 ! subroutine zgemv ( TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY ) 1492 ! implicit none 1493 ! integer :: INCX 1494 ! integer :: INCY 1495 ! integer :: LDA 1496 ! integer :: M 1497 ! integer :: N 1498 ! complex*16 :: A( LDA, * ) 1499 ! complex*16 :: ALPHA 1500 ! complex*16 :: BETA 1501 ! character*1 :: TRANS 1502 ! complex*16 :: X( * ) 1503 ! complex*16 :: Y( * ) 1504 ! end subroutine zgemv 1505 !end interface 1506 1507 !interface 1508 ! subroutine zgerc ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 1509 ! implicit none 1510 ! integer :: INCX 1511 ! integer :: INCY 1512 ! integer :: LDA 1513 ! integer :: M 1514 ! integer :: N 1515 ! complex*16 :: A( LDA, * ) 1516 ! complex*16 :: ALPHA 1517 ! complex*16 :: X( * ) 1518 ! complex*16 :: Y( * ) 1519 ! end subroutine zgerc 1520 !end interface 1521 1522 interface 1523 subroutine zgeru ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 1524 implicit none 1525 integer :: INCX 1526 integer :: INCY 1527 integer :: LDA 1528 integer :: M 1529 integer :: N 1530 complex*16 :: A( LDA, * ) 1531 complex*16 :: ALPHA 1532 complex*16 :: X( * ) 1533 complex*16 :: Y( * ) 1534 end subroutine zgeru 1535 end interface 1536 1537 interface 1538 subroutine zhbmv ( UPLO, N, K, ALPHA, A, LDA, X, INCX,& 1539 BETA, Y, INCY ) 1540 implicit none 1541 integer :: INCX 1542 integer :: INCY 1543 integer :: K 1544 integer :: LDA 1545 integer :: N 1546 complex*16 :: A( LDA, * ) 1547 complex*16 :: ALPHA 1548 complex*16 :: BETA 1549 character*1 :: UPLO 1550 complex*16 :: X( * ) 1551 complex*16 :: Y( * ) 1552 end subroutine zhbmv 1553 end interface 1554 1555 !interface 1556 ! subroutine zhemm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC ) 1557 ! implicit none 1558 ! integer :: LDA 1559 ! integer :: LDB 1560 ! integer :: LDC 1561 ! integer :: M 1562 ! integer :: N 1563 ! complex*16 :: A( LDA, * ) 1564 ! complex*16 :: ALPHA 1565 ! complex*16 :: B( LDB, * ) 1566 ! complex*16 :: BETA 1567 ! complex*16 :: C( LDC, * ) 1568 ! character*1 :: SIDE 1569 ! character*1 :: UPLO 1570 ! end subroutine zhemm 1571 !end interface 1572 1573 interface 1574 subroutine zhemv ( UPLO, N, ALPHA, A, LDA, X, INCX,& 1575 BETA, Y, INCY ) 1576 implicit none 1577 integer :: INCX 1578 integer :: INCY 1579 integer :: LDA 1580 integer :: N 1581 complex*16 :: A( LDA, * ) 1582 complex*16 :: ALPHA 1583 complex*16 :: BETA 1584 character*1 :: UPLO 1585 complex*16 :: X( * ) 1586 complex*16 :: Y( * ) 1587 end subroutine zhemv 1588 end interface 1589 1590 !interface 1591 ! subroutine zher ( UPLO, N, ALPHA, X, INCX, A, LDA ) 1592 ! implicit none 1593 ! integer :: INCX 1594 ! integer :: LDA 1595 ! integer :: N 1596 ! complex*16 :: A( LDA, * ) 1597 ! double precision :: ALPHA 1598 ! character*1 :: UPLO 1599 ! complex*16 :: X( * ) 1600 ! end subroutine zher 1601 !end interface 1602 1603 interface 1604 subroutine zher2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 1605 implicit none 1606 integer :: INCX 1607 integer :: INCY 1608 integer :: LDA 1609 integer :: N 1610 complex*16 :: A( LDA, * ) 1611 complex*16 :: ALPHA 1612 character*1 :: UPLO 1613 complex*16 :: X( * ) 1614 complex*16 :: Y( * ) 1615 end subroutine zher2 1616 end interface 1617 1618 interface 1619 subroutine zher2k( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA,& 1620 C, LDC ) 1621 implicit none 1622 integer :: K 1623 integer :: LDA 1624 integer :: LDB 1625 integer :: LDC 1626 integer :: N 1627 complex*16 :: A( LDA, * ) 1628 complex*16 :: ALPHA 1629 complex*16 :: B( LDB, * ) 1630 double precision :: BETA 1631 complex*16 :: C( LDC, * ) 1632 character :: TRANS 1633 character :: UPLO 1634 end subroutine zher2k 1635 end interface 1636 1637 !interface 1638 ! subroutine zherk( UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC ) 1639 ! implicit none 1640 ! integer :: K 1641 ! integer :: LDA 1642 ! integer :: LDC 1643 ! integer :: N 1644 ! complex*16 :: A( LDA, * ) 1645 ! double precision :: ALPHA 1646 ! double precision :: BETA 1647 ! complex*16 :: C( LDC, * ) 1648 ! character :: TRANS 1649 ! character :: UPLO 1650 ! end subroutine zherk 1651 !end interface 1652 1653 interface 1654 subroutine zhpmv ( UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY ) 1655 implicit none 1656 integer :: INCX 1657 integer :: INCY 1658 integer :: N 1659 complex*16 :: ALPHA 1660 complex*16 :: AP( * ) 1661 complex*16 :: BETA 1662 character*1 :: UPLO 1663 complex*16 :: X( * ) 1664 complex*16 :: Y( * ) 1665 end subroutine zhpmv 1666 end interface 1667 1668 interface 1669 subroutine zhpr ( UPLO, N, ALPHA, X, INCX, AP ) 1670 implicit none 1671 integer :: INCX 1672 integer :: N 1673 double precision :: ALPHA 1674 complex*16 :: AP( * ) 1675 character*1 :: UPLO 1676 complex*16 :: X( * ) 1677 end subroutine zhpr 1678 end interface 1679 1680 interface 1681 subroutine zhpr2 ( UPLO, N, ALPHA, X, INCX, Y, INCY, AP ) 1682 implicit none 1683 integer :: INCX 1684 integer :: INCY 1685 integer :: N 1686 complex*16 :: ALPHA 1687 complex*16 :: AP( * ) 1688 character*1 :: UPLO 1689 complex*16 :: X( * ) 1690 complex*16 :: Y( * ) 1691 end subroutine zhpr2 1692 end interface 1693 1694 interface 1695 subroutine zrotg(ca,cb,c,s) 1696 implicit none 1697 double precision :: c 1698 double complex :: ca 1699 double complex :: cb 1700 double complex :: s 1701 end subroutine zrotg 1702 end interface 1703 1704 !interface 1705 ! subroutine zscal(n,za,zx,incx) 1706 ! implicit none 1707 ! integer :: incx 1708 ! integer :: n 1709 ! double complex :: za 1710 ! double complex :: zx(*) 1711 ! end subroutine zscal 1712 !end interface 1713 1714 interface 1715 subroutine zswap (n,zx,incx,zy,incy) 1716 implicit none 1717 integer :: incx 1718 integer :: incy 1719 integer :: n 1720 double complex :: zx(*) 1721 double complex :: zy(*) 1722 end subroutine zswap 1723 end interface 1724 1725 interface 1726 subroutine zsymm ( SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB,& 1727 BETA, C, LDC ) 1728 implicit none 1729 integer :: LDA 1730 integer :: LDB 1731 integer :: LDC 1732 integer :: M 1733 integer :: N 1734 complex*16 :: A( LDA, * ) 1735 complex*16 :: ALPHA 1736 complex*16 :: B( LDB, * ) 1737 complex*16 :: BETA 1738 complex*16 :: C( LDC, * ) 1739 character*1 :: SIDE 1740 character*1 :: UPLO 1741 end subroutine zsymm 1742 end interface 1743 1744 interface 1745 subroutine zsyr2k( UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB,& 1746 BETA, C, LDC ) 1747 implicit none 1748 integer :: K 1749 integer :: LDA 1750 integer :: LDB 1751 integer :: LDC 1752 integer :: N 1753 complex*16 :: A( LDA, * ) 1754 complex*16 :: ALPHA 1755 complex*16 :: B( LDB, * ) 1756 complex*16 :: BETA 1757 complex*16 :: C( LDC, * ) 1758 character*1 :: TRANS 1759 character*1 :: UPLO 1760 end subroutine zsyr2k 1761 end interface 1762 1763 interface 1764 subroutine zsyrk ( UPLO, TRANS, N, K, ALPHA, A, LDA,& 1765 BETA, C, LDC ) 1766 implicit none 1767 integer :: K 1768 integer :: LDA 1769 integer :: LDC 1770 integer :: N 1771 complex*16 :: A( LDA, * ) 1772 complex*16 :: ALPHA 1773 complex*16 :: BETA 1774 complex*16 :: C( LDC, * ) 1775 character*1 :: TRANS 1776 character*1 :: UPLO 1777 end subroutine zsyrk 1778 end interface 1779 1780 interface 1781 subroutine ztbmv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 1782 implicit none 1783 integer :: INCX 1784 integer :: K 1785 integer :: LDA 1786 integer :: N 1787 complex*16 :: A( LDA, * ) 1788 character*1 :: DIAG 1789 character*1 :: TRANS 1790 character*1 :: UPLO 1791 complex*16 :: X( * ) 1792 end subroutine ztbmv 1793 end interface 1794 1795 interface 1796 subroutine ztbsv ( UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX ) 1797 implicit none 1798 integer :: INCX 1799 integer :: K 1800 integer :: LDA 1801 integer :: N 1802 complex*16 :: A( LDA, * ) 1803 character*1 :: DIAG 1804 character*1 :: TRANS 1805 character*1 :: UPLO 1806 complex*16 :: X( * ) 1807 end subroutine ztbsv 1808 end interface 1809 1810 interface 1811 subroutine ztpmv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 1812 implicit none 1813 integer :: INCX 1814 integer :: N 1815 complex*16 :: AP( * ) 1816 character*1 :: DIAG 1817 character*1 :: TRANS 1818 character*1 :: UPLO 1819 complex*16 :: X( * ) 1820 end subroutine ztpmv 1821 end interface 1822 1823 interface 1824 subroutine ztpsv ( UPLO, TRANS, DIAG, N, AP, X, INCX ) 1825 implicit none 1826 integer :: INCX 1827 integer :: N 1828 complex*16 :: AP( * ) 1829 character*1 :: DIAG 1830 character*1 :: TRANS 1831 character*1 :: UPLO 1832 complex*16 :: X( * ) 1833 end subroutine ztpsv 1834 end interface 1835 1836 interface 1837 subroutine ztrmm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,& 1838 B, LDB ) 1839 implicit none 1840 integer :: LDA 1841 integer :: LDB 1842 integer :: M 1843 integer :: N 1844 complex*16 :: A( LDA, * ) 1845 complex*16 :: ALPHA 1846 complex*16 :: B( LDB, * ) 1847 character*1 :: DIAG 1848 character*1 :: SIDE 1849 character*1 :: TRANSA 1850 character*1 :: UPLO 1851 end subroutine ztrmm 1852 end interface 1853 1854 interface 1855 subroutine ztrmv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 1856 implicit none 1857 integer :: INCX 1858 integer :: LDA 1859 integer :: N 1860 complex*16 :: A( LDA, * ) 1861 character*1 :: DIAG 1862 character*1 :: TRANS 1863 character*1 :: UPLO 1864 complex*16 :: X( * ) 1865 end subroutine ztrmv 1866 end interface 1867 1868 !interface 1869 ! subroutine ztrsm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB ) 1870 ! implicit none 1871 ! integer :: LDA 1872 ! integer :: LDB 1873 ! integer :: M 1874 ! integer :: N 1875 ! complex*16 :: A( LDA, * ) 1876 ! complex*16 :: ALPHA 1877 ! complex*16 :: B( LDB, * ) 1878 ! character*1 :: DIAG 1879 ! character*1 :: SIDE 1880 ! character*1 :: TRANSA 1881 ! character*1 :: UPLO 1882 ! end subroutine ztrsm 1883 !end interface 1884 1885 interface 1886 subroutine ztrsv ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 1887 implicit none 1888 integer :: INCX 1889 integer :: LDA 1890 integer :: N 1891 complex*16 :: A( LDA, * ) 1892 character*1 :: DIAG 1893 character*1 :: TRANS 1894 character*1 :: UPLO 1895 complex*16 :: X( * ) 1896 end subroutine ztrsv 1897 end interface 1898 1899 interface 1900 subroutine cgetf2( M, N, A, LDA, IPIV, INFO ) 1901 implicit none 1902 integer :: INFO 1903 integer :: IPIV( * ) 1904 integer :: LDA 1905 integer :: M 1906 integer :: N 1907 complex :: A( LDA, * ) 1908 end subroutine cgetf2 1909 end interface 1910 1911 interface 1912 subroutine cgetrf( M, N, A, LDA, IPIV, INFO ) 1913 implicit none 1914 integer :: INFO 1915 integer :: IPIV( * ) 1916 integer :: LDA 1917 integer :: M 1918 integer :: N 1919 complex :: A( LDA, * ) 1920 end subroutine cgetrf 1921 end interface 1922 1923 interface 1924 subroutine cgetri( N, A, LDA, IPIV, WORK, LWORK, INFO ) 1925 implicit none 1926 integer :: INFO 1927 integer :: IPIV( * ) 1928 integer :: LDA 1929 integer :: LWORK 1930 integer :: N 1931 complex :: A( LDA, * ) 1932 complex :: WORK( * ) 1933 end subroutine cgetri 1934 end interface 1935 1936 interface 1937 subroutine chpev( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK,& 1938 INFO ) 1939 implicit none 1940 integer :: INFO 1941 integer :: LDZ 1942 integer :: N 1943 complex :: AP( * ) 1944 character :: JOBZ 1945 real :: RWORK( * ) 1946 character :: UPLO 1947 real :: W( * ) 1948 complex :: WORK( * ) 1949 complex :: Z( LDZ, * ) 1950 end subroutine chpev 1951 end interface 1952 1953 interface 1954 subroutine chptrd( UPLO, N, AP, D, E, TAU, INFO ) 1955 implicit none 1956 integer :: INFO 1957 integer :: N 1958 complex :: AP( * ) 1959 real :: D( * ) 1960 real :: E( * ) 1961 complex :: TAU( * ) 1962 character :: UPLO 1963 end subroutine chptrd 1964 end interface 1965 1966 interface 1967 complex function cladiv( X, Y ) 1968 implicit none 1969 complex :: X 1970 complex :: Y 1971 end function cladiv 1972 end interface 1973 1974 interface 1975 real function clanhp( NORM, UPLO, N, AP, WORK ) 1976 implicit none 1977 integer :: N 1978 complex :: AP( * ) 1979 character :: NORM 1980 character :: UPLO 1981 real :: WORK( * ) 1982 end function clanhp 1983 end interface 1984 1985 interface 1986 subroutine clarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) 1987 implicit none 1988 integer :: INCV 1989 integer :: LDC 1990 integer :: M 1991 integer :: N 1992 complex :: C( LDC, * ) 1993 character :: SIDE 1994 complex :: TAU 1995 complex :: V( * ) 1996 complex :: WORK( * ) 1997 end subroutine clarf 1998 end interface 1999 2000 interface 2001 subroutine clarfg( N, ALPHA, X, INCX, TAU ) 2002 implicit none 2003 integer :: INCX 2004 integer :: N 2005 complex :: ALPHA 2006 complex :: TAU 2007 complex :: X( * ) 2008 end subroutine clarfg 2009 end interface 2010 2011 interface 2012 subroutine clasr( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) 2013 implicit none 2014 integer :: LDA 2015 integer :: M 2016 integer :: N 2017 complex :: A( LDA, * ) 2018 real :: C( * ) 2019 character :: DIRECT 2020 character :: PIVOT 2021 real :: S( * ) 2022 character :: SIDE 2023 end subroutine clasr 2024 end interface 2025 2026 interface 2027 subroutine classq( N, X, INCX, SCALE, SUMSQ ) 2028 implicit none 2029 integer :: INCX 2030 integer :: N 2031 real :: SCALE 2032 real :: SUMSQ 2033 complex :: X( * ) 2034 end subroutine classq 2035 end interface 2036 2037 interface 2038 subroutine claswp( N, A, LDA, K1, K2, IPIV, INCX ) 2039 implicit none 2040 integer :: INCX 2041 integer :: IPIV( * ) 2042 integer :: K1 2043 integer :: K2 2044 integer :: LDA 2045 integer :: N 2046 complex :: A( LDA, * ) 2047 end subroutine claswp 2048 end interface 2049 2050 interface 2051 subroutine clazro( M, N, ALPHA, BETA, A, LDA ) 2052 implicit none 2053 integer :: LDA 2054 integer :: M 2055 integer :: N 2056 complex :: A( LDA, * ) 2057 complex :: ALPHA 2058 complex :: BETA 2059 end subroutine clazro 2060 end interface 2061 2062 interface 2063 subroutine csteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) 2064 implicit none 2065 integer :: INFO 2066 integer :: LDZ 2067 integer :: N 2068 character :: COMPZ 2069 real :: D( * ) 2070 real :: E( * ) 2071 real :: WORK( * ) 2072 complex :: Z( LDZ, * ) 2073 end subroutine csteqr 2074 end interface 2075 2076 interface 2077 subroutine ctrtri( UPLO, DIAG, N, A, LDA, INFO ) 2078 implicit none 2079 integer :: INFO 2080 integer :: LDA 2081 integer :: N 2082 complex :: A( LDA, * ) 2083 character :: DIAG 2084 character :: UPLO 2085 end subroutine ctrtri 2086 end interface 2087 2088 interface 2089 subroutine cung2l( M, N, K, A, LDA, TAU, WORK, INFO ) 2090 implicit none 2091 integer :: INFO 2092 integer :: K 2093 integer :: LDA 2094 integer :: M 2095 integer :: N 2096 complex :: A( LDA, * ) 2097 complex :: TAU( * ) 2098 complex :: WORK( * ) 2099 end subroutine cung2l 2100 end interface 2101 2102 interface 2103 subroutine cung2r( M, N, K, A, LDA, TAU, WORK, INFO ) 2104 implicit none 2105 integer :: INFO 2106 integer :: K 2107 integer :: LDA 2108 integer :: M 2109 integer :: N 2110 complex :: A( LDA, * ) 2111 complex :: TAU( * ) 2112 complex :: WORK( * ) 2113 end subroutine cung2r 2114 end interface 2115 2116 interface 2117 subroutine cupgtr( UPLO, N, AP, TAU, Q, LDQ, WORK, INFO ) 2118 implicit none 2119 integer :: INFO 2120 integer :: LDQ 2121 integer :: N 2122 complex :: AP( * ) 2123 complex :: Q( LDQ, * ) 2124 complex :: TAU( * ) 2125 character :: UPLO 2126 complex :: WORK( * ) 2127 end subroutine cupgtr 2128 end interface 2129 2130 interface 2131 subroutine dbdsqr( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,& 2132 LDU, C, LDC, WORK, INFO ) 2133 implicit none 2134 integer :: INFO 2135 integer :: LDC 2136 integer :: LDU 2137 integer :: LDVT 2138 integer :: N 2139 integer :: NCC 2140 integer :: NCVT 2141 integer :: NRU 2142 double precision :: C( LDC, * ) 2143 double precision :: D( * ) 2144 double precision :: E( * ) 2145 double precision :: U( LDU, * ) 2146 character :: UPLO 2147 double precision :: VT( LDVT, * ) 2148 double precision :: WORK( * ) 2149 end subroutine dbdsqr 2150 end interface 2151 2152 interface 2153 subroutine dgebd2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO ) 2154 implicit none 2155 integer :: INFO 2156 integer :: LDA 2157 integer :: M 2158 integer :: N 2159 double precision :: A( LDA, * ) 2160 double precision :: D( * ) 2161 double precision :: E( * ) 2162 double precision :: TAUP( * ) 2163 double precision :: TAUQ( * ) 2164 double precision :: WORK( * ) 2165 end subroutine dgebd2 2166 end interface 2167 2168 interface 2169 subroutine dgebrd( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,& 2170 INFO ) 2171 implicit none 2172 integer :: INFO 2173 integer :: LDA 2174 integer :: LWORK 2175 integer :: M 2176 integer :: N 2177 double precision :: A( LDA, * ) 2178 double precision :: D( * ) 2179 double precision :: E( * ) 2180 double precision :: TAUP( * ) 2181 double precision :: TAUQ( * ) 2182 double precision :: WORK( * ) 2183 end subroutine dgebrd 2184 end interface 2185 2186 interface 2187 subroutine dgelq2( M, N, A, LDA, TAU, WORK, INFO ) 2188 implicit none 2189 integer :: INFO 2190 integer :: LDA 2191 integer :: M 2192 integer :: N 2193 double precision :: A( LDA, * ) 2194 double precision :: TAU( * ) 2195 double precision :: WORK( * ) 2196 end subroutine dgelq2 2197 end interface 2198 2199 interface 2200 subroutine dgelqf( M, N, A, LDA, TAU, WORK, LWORK, INFO ) 2201 implicit none 2202 integer :: INFO 2203 integer :: LDA 2204 integer :: LWORK 2205 integer :: M 2206 integer :: N 2207 double precision :: A( LDA, * ) 2208 double precision :: TAU( * ) 2209 double precision :: WORK( * ) 2210 end subroutine dgelqf 2211 end interface 2212 2213 interface 2214 subroutine dgelss( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,& 2215 WORK, LWORK, INFO ) 2216 implicit none 2217 integer :: INFO 2218 integer :: LDA 2219 integer :: LDB 2220 integer :: LWORK 2221 integer :: M 2222 integer :: N 2223 integer :: NRHS 2224 integer :: RANK 2225 double precision :: A( LDA, * ) 2226 double precision :: B( LDB, * ) 2227 double precision :: RCOND 2228 double precision :: S( * ) 2229 double precision :: WORK( * ) 2230 end subroutine dgelss 2231 end interface 2232 2233 interface 2234 subroutine dgeqr2( M, N, A, LDA, TAU, WORK, INFO ) 2235 implicit none 2236 integer :: INFO 2237 integer :: LDA 2238 integer :: M 2239 integer :: N 2240 double precision :: A( LDA, * ) 2241 double precision :: TAU( * ) 2242 double precision :: WORK( * ) 2243 end subroutine dgeqr2 2244 end interface 2245 2246 interface 2247 subroutine dgeqrf( M, N, A, LDA, TAU, WORK, LWORK, INFO ) 2248 implicit none 2249 integer :: INFO 2250 integer :: LDA 2251 integer :: LWORK 2252 integer :: M 2253 integer :: N 2254 double precision :: A( LDA, * ) 2255 double precision :: TAU( * ) 2256 double precision :: WORK( * ) 2257 end subroutine dgeqrf 2258 end interface 2259 2260 interface 2261 subroutine dgesvd( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,& 2262 WORK, LWORK, INFO ) 2263 implicit none 2264 integer :: INFO 2265 integer :: LDA 2266 integer :: LDU 2267 integer :: LDVT 2268 integer :: LWORK 2269 integer :: M 2270 integer :: N 2271 double precision :: A( LDA, * ) 2272 character :: JOBU 2273 character :: JOBVT 2274 double precision :: S( * ) 2275 double precision :: U( LDU, * ) 2276 double precision :: VT( LDVT, * ) 2277 double precision :: WORK( * ) 2278 end subroutine dgesvd 2279 end interface 2280 2281 interface 2282 subroutine dgetf2( M, N, A, LDA, IPIV, INFO ) 2283 implicit none 2284 integer :: INFO 2285 integer :: IPIV( * ) 2286 integer :: LDA 2287 integer :: M 2288 integer :: N 2289 double precision :: A( LDA, * ) 2290 end subroutine dgetf2 2291 end interface 2292 2293 interface 2294 subroutine dgetrf( M, N, A, LDA, IPIV, INFO ) 2295 implicit none 2296 integer :: INFO 2297 integer :: IPIV( * ) 2298 integer :: LDA 2299 integer :: M 2300 integer :: N 2301 double precision :: A( LDA, * ) 2302 end subroutine dgetrf 2303 end interface 2304 2305 interface 2306 subroutine dgetri( N, A, LDA, IPIV, WORK, LWORK, INFO ) 2307 implicit none 2308 integer :: INFO 2309 integer :: IPIV( * ) 2310 integer :: LDA 2311 integer :: LWORK 2312 integer :: N 2313 double precision :: A( LDA, * ) 2314 double precision :: WORK( * ) 2315 end subroutine dgetri 2316 end interface 2317 2318 interface 2319 subroutine dopgtr( UPLO, N, AP, TAU, Q, LDQ, WORK, INFO ) 2320 implicit none 2321 integer :: INFO 2322 integer :: LDQ 2323 integer :: N 2324 double precision :: AP( * ) 2325 double precision :: Q( LDQ, * ) 2326 double precision :: TAU( * ) 2327 character :: UPLO 2328 double precision :: WORK( * ) 2329 end subroutine dopgtr 2330 end interface 2331 2332 interface 2333 subroutine dorg2l( M, N, K, A, LDA, TAU, WORK, INFO ) 2334 implicit none 2335 integer :: INFO 2336 integer :: K 2337 integer :: LDA 2338 integer :: M 2339 integer :: N 2340 double precision :: A( LDA, * ) 2341 double precision :: TAU( * ) 2342 double precision :: WORK( * ) 2343 end subroutine dorg2l 2344 end interface 2345 2346 interface 2347 subroutine dorg2r( M, N, K, A, LDA, TAU, WORK, INFO ) 2348 implicit none 2349 integer :: INFO 2350 integer :: K 2351 integer :: LDA 2352 integer :: M 2353 integer :: N 2354 double precision :: A( LDA, * ) 2355 double precision :: TAU( * ) 2356 double precision :: WORK( * ) 2357 end subroutine dorg2r 2358 end interface 2359 2360 interface 2361 subroutine dorgbr( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) 2362 implicit none 2363 integer :: INFO 2364 integer :: K 2365 integer :: LDA 2366 integer :: LWORK 2367 integer :: M 2368 integer :: N 2369 double precision :: A( LDA, * ) 2370 double precision :: TAU( * ) 2371 character :: VECT 2372 double precision :: WORK( * ) 2373 end subroutine dorgbr 2374 end interface 2375 2376 interface 2377 subroutine dorgl2( M, N, K, A, LDA, TAU, WORK, INFO ) 2378 implicit none 2379 integer :: INFO 2380 integer :: K 2381 integer :: LDA 2382 integer :: M 2383 integer :: N 2384 double precision :: A( LDA, * ) 2385 double precision :: TAU( * ) 2386 double precision :: WORK( * ) 2387 end subroutine dorgl2 2388 end interface 2389 2390 interface 2391 subroutine dorglq( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) 2392 implicit none 2393 integer :: INFO 2394 integer :: K 2395 integer :: LDA 2396 integer :: LWORK 2397 integer :: M 2398 integer :: N 2399 double precision :: A( LDA, * ) 2400 double precision :: TAU( * ) 2401 double precision :: WORK( * ) 2402 end subroutine dorglq 2403 end interface 2404 2405 interface 2406 subroutine dorgql( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) 2407 implicit none 2408 integer :: INFO 2409 integer :: K 2410 integer :: LDA 2411 integer :: LWORK 2412 integer :: M 2413 integer :: N 2414 double precision :: A( LDA, * ) 2415 double precision :: TAU( * ) 2416 double precision :: WORK( * ) 2417 end subroutine dorgql 2418 end interface 2419 2420 interface 2421 subroutine dorgqr( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) 2422 implicit none 2423 integer :: INFO 2424 integer :: K 2425 integer :: LDA 2426 integer :: LWORK 2427 integer :: M 2428 integer :: N 2429 double precision :: A( LDA, * ) 2430 double precision :: TAU( * ) 2431 double precision :: WORK( * ) 2432 end subroutine dorgqr 2433 end interface 2434 2435 interface 2436 subroutine dorgtr( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) 2437 implicit none 2438 integer :: INFO 2439 integer :: LDA 2440 integer :: LWORK 2441 integer :: N 2442 double precision :: A( LDA, * ) 2443 double precision :: TAU( * ) 2444 character :: UPLO 2445 double precision :: WORK( LWORK ) 2446 end subroutine dorgtr 2447 end interface 2448 2449 interface 2450 subroutine dorm2r( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,& 2451 WORK, INFO ) 2452 implicit none 2453 integer :: INFO 2454 integer :: K 2455 integer :: LDA 2456 integer :: LDC 2457 integer :: M 2458 integer :: N 2459 double precision :: A( LDA, * ) 2460 double precision :: C( LDC, * ) 2461 character :: SIDE 2462 double precision :: TAU( * ) 2463 character :: TRANS 2464 double precision :: WORK( * ) 2465 end subroutine dorm2r 2466 end interface 2467 2468 interface 2469 subroutine dormbr( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,& 2470 LDC, WORK, LWORK, INFO ) 2471 implicit none 2472 integer :: INFO 2473 integer :: K 2474 integer :: LDA 2475 integer :: LDC 2476 integer :: LWORK 2477 integer :: M 2478 integer :: N 2479 double precision :: A( LDA, * ) 2480 double precision :: C( LDC, * ) 2481 character :: SIDE 2482 double precision :: TAU( * ) 2483 character :: TRANS 2484 character :: VECT 2485 double precision :: WORK( * ) 2486 end subroutine dormbr 2487 end interface 2488 2489 interface 2490 subroutine dorml2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,& 2491 WORK, INFO ) 2492 implicit none 2493 integer :: INFO 2494 integer :: K 2495 integer :: LDA 2496 integer :: LDC 2497 integer :: M 2498 integer :: N 2499 double precision :: A( LDA, * ) 2500 double precision :: C( LDC, * ) 2501 character :: SIDE 2502 double precision :: TAU( * ) 2503 character :: TRANS 2504 double precision :: WORK( * ) 2505 end subroutine dorml2 2506 end interface 2507 2508 interface 2509 subroutine dormlq( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,& 2510 WORK, LWORK, INFO ) 2511 implicit none 2512 integer :: INFO 2513 integer :: K 2514 integer :: LDA 2515 integer :: LDC 2516 integer :: LWORK 2517 integer :: M 2518 integer :: N 2519 double precision :: A( LDA, * ) 2520 double precision :: C( LDC, * ) 2521 character :: SIDE 2522 double precision :: TAU( * ) 2523 character :: TRANS 2524 double precision :: WORK( * ) 2525 end subroutine dormlq 2526 end interface 2527 2528 interface 2529 subroutine dormqr( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,& 2530 WORK, LWORK, INFO ) 2531 implicit none 2532 integer :: INFO 2533 integer :: K 2534 integer :: LDA 2535 integer :: LDC 2536 integer :: LWORK 2537 integer :: M 2538 integer :: N 2539 double precision :: A( LDA, * ) 2540 double precision :: C( LDC, * ) 2541 character :: SIDE 2542 double precision :: TAU( * ) 2543 character :: TRANS 2544 double precision :: WORK( * ) 2545 end subroutine dormqr 2546 end interface 2547 2548 interface 2549 subroutine dposv( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) 2550 implicit none 2551 integer :: INFO 2552 integer :: LDA 2553 integer :: LDB 2554 integer :: N 2555 integer :: NRHS 2556 double precision :: A( LDA, * ) 2557 double precision :: B( LDB, * ) 2558 character :: UPLO 2559 end subroutine dposv 2560 end interface 2561 2562 interface 2563 subroutine dpotf2( UPLO, N, A, LDA, INFO ) 2564 implicit none 2565 integer :: INFO 2566 integer :: LDA 2567 integer :: N 2568 double precision :: A( LDA, * ) 2569 character :: UPLO 2570 end subroutine dpotf2 2571 end interface 2572 2573 interface 2574 subroutine dpotrf( UPLO, N, A, LDA, INFO ) 2575 implicit none 2576 integer :: INFO 2577 integer :: LDA 2578 integer :: N 2579 double precision :: A( LDA, * ) 2580 character :: UPLO 2581 end subroutine dpotrf 2582 end interface 2583 2584 interface 2585 subroutine dpotrs( UPLO, N, NRHS, A, LDA, B, LDB, INFO ) 2586 implicit none 2587 integer :: INFO 2588 integer :: LDA 2589 integer :: LDB 2590 integer :: N 2591 integer :: NRHS 2592 double precision :: A( LDA, * ) 2593 double precision :: B( LDB, * ) 2594 character :: UPLO 2595 end subroutine dpotrs 2596 end interface 2597 2598 interface 2599 subroutine dpptrf( UPLO, N, AP, INFO ) 2600 implicit none 2601 integer :: INFO 2602 integer :: N 2603 double precision :: AP( * ) 2604 character :: UPLO 2605 end subroutine dpptrf 2606 end interface 2607 2608 interface 2609 subroutine dspgst( ITYPE, UPLO, N, AP, BP, INFO ) 2610 implicit none 2611 integer :: INFO 2612 integer :: ITYPE 2613 integer :: N 2614 double precision :: AP( * ) 2615 double precision :: BP( * ) 2616 character :: UPLO 2617 end subroutine dspgst 2618 end interface 2619 2620 interface 2621 subroutine dspgv( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,& 2622 INFO ) 2623 implicit none 2624 integer :: INFO 2625 integer :: ITYPE 2626 integer :: LDZ 2627 integer :: N 2628 double precision :: AP( * ) 2629 double precision :: BP( * ) 2630 double precision :: W( * ) 2631 double precision :: WORK( * ) 2632 double precision :: Z( LDZ, * ) 2633 character :: JOBZ 2634 character :: UPLO 2635 end subroutine dspgv 2636 end interface 2637 2638 interface 2639 subroutine drscl( N, SA, SX, INCX ) 2640 implicit none 2641 integer :: INCX 2642 integer :: N 2643 double precision :: SA 2644 double precision :: SX( * ) 2645 end subroutine drscl 2646 end interface 2647 2648 interface 2649 subroutine dspev( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, INFO ) 2650 implicit none 2651 integer :: INFO 2652 integer :: LDZ 2653 integer :: N 2654 double precision :: AP( * ) 2655 character :: JOBZ 2656 character :: UPLO 2657 double precision :: W( * ) 2658 double precision :: WORK( * ) 2659 double precision :: Z( LDZ, * ) 2660 end subroutine dspev 2661 end interface 2662 2663 interface 2664 subroutine dsptrd( UPLO, N, AP, D, E, TAU, INFO ) 2665 implicit none 2666 integer :: INFO 2667 integer :: N 2668 double precision :: AP( * ) 2669 double precision :: D( * ) 2670 double precision :: E( * ) 2671 double precision :: TAU( * ) 2672 character :: UPLO 2673 end subroutine dsptrd 2674 end interface 2675 2676 interface 2677 subroutine dstebz( RANGE, ORDER, N, VL, VU, IL, IU, ABSTOL, D, E,& 2678 M, NSPLIT, W, IBLOCK, ISPLIT, WORK, IWORK,& 2679 INFO ) 2680 implicit none 2681 integer :: IBLOCK( * ) 2682 integer :: IL 2683 integer :: INFO 2684 integer :: ISPLIT( * ) 2685 integer :: IU 2686 integer :: IWORK( * ) 2687 integer :: M 2688 integer :: N 2689 integer :: NSPLIT 2690 double precision :: ABSTOL 2691 double precision :: D( * ) 2692 double precision :: E( * ) 2693 character :: ORDER 2694 character :: RANGE 2695 double precision :: VL 2696 double precision :: VU 2697 double precision :: W( * ) 2698 double precision :: WORK( * ) 2699 end subroutine dstebz 2700 end interface 2701 2702 interface 2703 subroutine dsteqr( COMPZ, N, D, E, Z, LDZ, WORK, INFO ) 2704 implicit none 2705 integer :: INFO 2706 integer :: LDZ 2707 integer :: N 2708 character :: COMPZ 2709 double precision :: D( * ) 2710 double precision :: E( * ) 2711 double precision :: WORK( * ) 2712 double precision :: Z( LDZ, * ) 2713 end subroutine dsteqr 2714 end interface 2715 2716 interface 2717 subroutine dsterf( N, D, E, INFO ) 2718 implicit none 2719 integer :: INFO 2720 integer :: N 2721 double precision :: D( * ) 2722 double precision :: E( * ) 2723 end subroutine dsterf 2724 end interface 2725 2726 interface 2727 subroutine dsyev( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO ) 2728 implicit none 2729 integer :: INFO 2730 integer :: LDA 2731 integer :: LWORK 2732 integer :: N 2733 double precision :: A( LDA, * ) 2734 character :: JOBZ 2735 character :: UPLO 2736 double precision :: W( * ) 2737 double precision :: WORK( * ) 2738 end subroutine dsyev 2739 end interface 2740 2741 interface 2742 subroutine dsygs2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) 2743 implicit none 2744 integer :: INFO 2745 integer :: ITYPE 2746 integer :: LDA 2747 integer :: LDB 2748 integer :: N 2749 double precision :: A( LDA, * ) 2750 double precision :: B( LDB, * ) 2751 character :: UPLO 2752 end subroutine dsygs2 2753 end interface 2754 2755 interface 2756 subroutine dsygst( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) 2757 implicit none 2758 integer :: INFO 2759 integer :: ITYPE 2760 integer :: LDA 2761 integer :: LDB 2762 integer :: N 2763 double precision :: A( LDA, * ) 2764 double precision :: B( LDB, * ) 2765 character :: UPLO 2766 end subroutine dsygst 2767 end interface 2768 2769 interface 2770 subroutine dsygv( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,& 2771 LWORK, INFO ) 2772 implicit none 2773 integer :: INFO 2774 integer :: ITYPE 2775 integer :: LDA 2776 integer :: LDB 2777 integer :: LWORK 2778 integer :: N 2779 double precision :: A( LDA, * ) 2780 double precision :: B( LDB, * ) 2781 character :: JOBZ 2782 character :: UPLO 2783 double precision :: W( * ) 2784 double precision :: WORK( * ) 2785 end subroutine dsygv 2786 end interface 2787 2788 interface 2789 subroutine dsysv( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,& 2790 LWORK, INFO ) 2791 implicit none 2792 integer :: INFO 2793 integer :: IPIV( * ) 2794 integer :: LDA 2795 integer :: LDB 2796 integer :: LWORK 2797 integer :: N 2798 integer :: NRHS 2799 double precision :: A( LDA, * ) 2800 double precision :: B( LDB, * ) 2801 character :: UPLO 2802 double precision :: WORK( * ) 2803 end subroutine dsysv 2804 end interface 2805 2806 interface 2807 subroutine dsytd2( UPLO, N, A, LDA, D, E, TAU, INFO ) 2808 implicit none 2809 integer :: INFO 2810 integer :: LDA 2811 integer :: N 2812 double precision :: A( LDA, * ) 2813 double precision :: D( * ) 2814 double precision :: E( * ) 2815 double precision :: TAU( * ) 2816 character :: UPLO 2817 end subroutine dsytd2 2818 end interface 2819 2820 interface 2821 subroutine dsytf2( UPLO, N, A, LDA, IPIV, INFO ) 2822 implicit none 2823 integer :: INFO 2824 integer :: IPIV( * ) 2825 integer :: LDA 2826 integer :: N 2827 double precision :: A( LDA, * ) 2828 character :: UPLO 2829 end subroutine dsytf2 2830 end interface 2831 2832 interface 2833 subroutine dsytrd( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) 2834 implicit none 2835 integer :: INFO 2836 integer :: LDA 2837 integer :: LWORK 2838 integer :: N 2839 double precision :: A( LDA, * ) 2840 double precision :: D( * ) 2841 double precision :: E( * ) 2842 double precision :: TAU( * ) 2843 character :: UPLO 2844 double precision :: WORK( * ) 2845 end subroutine dsytrd 2846 end interface 2847 2848 interface 2849 subroutine dsytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) 2850 implicit none 2851 integer :: INFO 2852 integer :: IPIV( * ) 2853 integer :: LDA 2854 integer :: LWORK 2855 integer :: N 2856 double precision :: A( LDA, * ) 2857 character :: UPLO 2858 double precision :: WORK( * ) 2859 end subroutine dsytrf 2860 end interface 2861 2862 interface 2863 subroutine dsytrs( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) 2864 implicit none 2865 integer :: INFO 2866 integer :: IPIV( * ) 2867 integer :: LDA 2868 integer :: LDB 2869 integer :: N 2870 integer :: NRHS 2871 double precision :: A( LDA, * ) 2872 double precision :: B( LDB, * ) 2873 character :: UPLO 2874 end subroutine dsytrs 2875 end interface 2876 2877 interface 2878 subroutine dtrti2( UPLO, DIAG, N, A, LDA, INFO ) 2879 implicit none 2880 integer :: INFO 2881 integer :: LDA 2882 integer :: N 2883 double precision :: A( LDA, * ) 2884 character :: DIAG 2885 character :: UPLO 2886 end subroutine dtrti2 2887 end interface 2888 2889 interface 2890 subroutine dtrtri( UPLO, DIAG, N, A, LDA, INFO ) 2891 implicit none 2892 integer :: INFO 2893 integer :: LDA 2894 integer :: N 2895 double precision :: A( LDA, * ) 2896 character :: DIAG 2897 character :: UPLO 2898 end subroutine dtrtri 2899 end interface 2900 2901 interface 2902 double precision function dzsum1( N, CX, INCX ) 2903 implicit none 2904 integer :: INCX 2905 integer :: N 2906 complex*16 :: CX( * ) 2907 end function dzsum1 2908 end interface 2909 2910 interface 2911 integer function izmax1( N, CX, INCX ) 2912 implicit none 2913 integer :: INCX 2914 integer :: N 2915 complex*16 :: CX( * ) 2916 end function izmax1 2917 end interface 2918 2919 interface 2920 subroutine ssterf( N, D, E, INFO ) 2921 implicit none 2922 integer :: INFO 2923 integer :: N 2924 real :: D( * ) 2925 real :: E( * ) 2926 end subroutine ssterf 2927 end interface 2928 2929 interface 2930 subroutine zbdsqr( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U,& 2931 LDU, C, LDC, RWORK, INFO ) 2932 implicit none 2933 integer :: INFO 2934 integer :: LDC 2935 integer :: LDU 2936 integer :: LDVT 2937 integer :: N 2938 integer :: NCC 2939 integer :: NCVT 2940 integer :: NRU 2941 complex*16 :: C( LDC, * ) 2942 double precision :: D( * ) 2943 double precision :: E( * ) 2944 double precision :: RWORK( * ) 2945 complex*16 :: U( LDU, * ) 2946 character :: UPLO 2947 complex*16 :: VT( LDVT, * ) 2948 end subroutine zbdsqr 2949 end interface 2950 2951 interface 2952 subroutine zgebak( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV,& 2953 INFO ) 2954 implicit none 2955 integer :: IHI 2956 integer :: ILO 2957 integer :: INFO 2958 integer :: LDV 2959 integer :: M 2960 integer :: N 2961 character :: JOB 2962 double precision :: SCALE( * ) 2963 character :: SIDE 2964 complex*16 :: V( LDV, * ) 2965 end subroutine zgebak 2966 end interface 2967 2968 interface 2969 subroutine zgebal( JOB, N, A, LDA, ILO, IHI, SCALE, INFO ) 2970 implicit none 2971 integer :: IHI 2972 integer :: ILO 2973 integer :: INFO 2974 integer :: LDA 2975 integer :: N 2976 complex*16 :: A( LDA, * ) 2977 character :: JOB 2978 double precision :: SCALE( * ) 2979 end subroutine zgebal 2980 end interface 2981 2982 interface 2983 subroutine zgebd2( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, INFO ) 2984 implicit none 2985 integer :: INFO 2986 integer :: LDA 2987 integer :: M 2988 integer :: N 2989 complex*16 :: A( LDA, * ) 2990 double precision :: D( * ) 2991 double precision :: E( * ) 2992 complex*16 :: TAUP( * ) 2993 complex*16 :: TAUQ( * ) 2994 complex*16 :: WORK( * ) 2995 end subroutine zgebd2 2996 end interface 2997 2998 interface 2999 subroutine zgebrd( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,& 3000 INFO ) 3001 implicit none 3002 integer :: INFO 3003 integer :: LDA 3004 integer :: LWORK 3005 integer :: M 3006 integer :: N 3007 complex*16 :: A( LDA, * ) 3008 double precision :: D( * ) 3009 double precision :: E( * ) 3010 complex*16 :: TAUP( * ) 3011 complex*16 :: TAUQ( * ) 3012 complex*16 :: WORK( * ) 3013 end subroutine zgebrd 3014 end interface 3015 3016 interface 3017 subroutine zgees( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS,& 3018 LDVS, WORK, LWORK, RWORK, BWORK, INFO ) 3019 implicit none 3020 integer :: INFO 3021 integer :: LDA 3022 integer :: LDVS 3023 integer :: LWORK 3024 integer :: N 3025 integer :: SDIM 3026 complex*16 :: A( LDA, * ) 3027 logical :: BWORK( * ) 3028 character :: JOBVS 3029 double precision :: RWORK( * ) 3030 logical :: SELECT 3031 character :: SORT 3032 complex*16 :: VS( LDVS, * ) 3033 complex*16 :: W( * ) 3034 complex*16 :: WORK( * ) 3035 end subroutine zgees 3036 end interface 3037 3038 interface 3039 subroutine zgeev( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR,& 3040 WORK, LWORK, RWORK, INFO ) 3041 implicit none 3042 character :: JOBVL 3043 character :: JOBVR 3044 integer :: INFO 3045 integer :: LDA 3046 integer :: LDVL 3047 integer :: LDVR 3048 integer :: LWORK 3049 integer :: N 3050 double precision :: RWORK( * ) 3051 complex*16 :: A( LDA, * ) 3052 complex*16 :: VL( LDVL, * ) 3053 complex*16 :: VR( LDVR, * ) 3054 complex*16 :: W( * ) 3055 complex*16 :: WORK( * ) 3056 end subroutine zgeev 3057 end interface 3058 3059 interface 3060 subroutine zgehd2( N, ILO, IHI, A, LDA, TAU, WORK, INFO ) 3061 implicit none 3062 integer :: IHI 3063 integer :: ILO 3064 integer :: INFO 3065 integer :: LDA 3066 integer :: N 3067 complex*16 :: A( LDA, * ) 3068 complex*16 :: TAU( * ) 3069 complex*16 :: WORK( * ) 3070 end subroutine zgehd2 3071 end interface 3072 3073 interface 3074 subroutine zgehrd( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) 3075 implicit none 3076 integer :: IHI 3077 integer :: ILO 3078 integer :: INFO 3079 integer :: LDA 3080 integer :: LWORK 3081 integer :: N 3082 complex*16 :: A( LDA, * ) 3083 complex*16 :: TAU( * ) 3084 complex*16 :: WORK( LWORK ) 3085 end subroutine zgehrd 3086 end interface 3087 3088 interface 3089 subroutine zgelq2( M, N, A, LDA, TAU, WORK, INFO ) 3090 implicit none 3091 integer :: INFO 3092 integer :: LDA 3093 integer :: M 3094 integer :: N 3095 complex*16 :: A( LDA, * ) 3096 complex*16 :: TAU( * ) 3097 complex*16 :: WORK( * ) 3098 end subroutine zgelq2 3099 end interface 3100 3101 interface 3102 subroutine zgelqf( M, N, A, LDA, TAU, WORK, LWORK, INFO ) 3103 implicit none 3104 integer :: INFO 3105 integer :: LDA 3106 integer :: LWORK 3107 integer :: M 3108 integer :: N 3109 complex*16 :: A( LDA, * ) 3110 complex*16 :: TAU( * ) 3111 complex*16 :: WORK( * ) 3112 end subroutine zgelqf 3113 end interface 3114 3115 interface 3116 subroutine zgeqr2( M, N, A, LDA, TAU, WORK, INFO ) 3117 implicit none 3118 integer :: INFO 3119 integer :: LDA 3120 integer :: M 3121 integer :: N 3122 complex*16 :: A( LDA, * ) 3123 complex*16 :: TAU( * ) 3124 complex*16 :: WORK( * ) 3125 end subroutine zgeqr2 3126 end interface 3127 3128 interface 3129 subroutine zgeqrf( M, N, A, LDA, TAU, WORK, LWORK, INFO ) 3130 implicit none 3131 integer :: INFO 3132 integer :: LDA 3133 integer :: LWORK 3134 integer :: M 3135 integer :: N 3136 complex*16 :: A( LDA, * ) 3137 complex*16 :: TAU( * ) 3138 complex*16 :: WORK( * ) 3139 end subroutine zgeqrf 3140 end interface 3141 3142 !interface 3143 ! subroutine zgesv( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) 3144 ! implicit none 3145 ! integer :: INFO 3146 ! integer :: IPIV( * ) 3147 ! integer :: LDA 3148 ! integer :: LDB 3149 ! integer :: N 3150 ! integer :: NRHS 3151 ! complex*16 :: A( LDA, * ) 3152 ! complex*16 :: B( LDB, * ) 3153 ! end subroutine zgesv 3154 !end interface 3155 3156 interface 3157 subroutine zgesvd( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,& 3158 WORK, LWORK, RWORK, INFO ) 3159 implicit none 3160 integer :: INFO 3161 integer :: LDA 3162 integer :: LDU 3163 integer :: LDVT 3164 integer :: LWORK 3165 integer :: M 3166 integer :: N 3167 complex*16 :: A( LDA, * ) 3168 character :: JOBU 3169 character :: JOBVT 3170 double precision :: RWORK( * ) 3171 double precision :: S( * ) 3172 complex*16 :: U( LDU, * ) 3173 complex*16 :: VT( LDVT, * ) 3174 complex*16 :: WORK( * ) 3175 end subroutine zgesvd 3176 end interface 3177 3178 interface 3179 subroutine zgetf2( M, N, A, LDA, IPIV, INFO ) 3180 implicit none 3181 integer :: INFO 3182 integer :: IPIV( * ) 3183 integer :: LDA 3184 integer :: M 3185 integer :: N 3186 complex*16 :: A( LDA, * ) 3187 end subroutine zgetf2 3188 end interface 3189 3190 interface 3191 subroutine zgetri( N, A, LDA, IPIV, WORK, LWORK, INFO ) 3192 implicit none 3193 integer :: INFO 3194 integer :: LDA 3195 integer :: LWORK 3196 integer :: N 3197 integer :: IPIV( * ) 3198 complex*16 :: A( LDA, * ) 3199 complex*16 :: WORK( * ) 3200 end subroutine zgetri 3201 end interface 3202 3203 !interface 3204 ! subroutine zgetrf( M, N, A, LDA, IPIV, INFO ) 3205 ! implicit none 3206 ! integer :: INFO 3207 ! integer :: IPIV( * ) 3208 ! integer :: LDA 3209 ! integer :: M 3210 ! integer :: N 3211 ! complex*16 :: A( LDA, * ) 3212 ! end subroutine zgetrf 3213 !end interface 3214 3215 interface 3216 subroutine zgetrs( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) 3217 implicit none 3218 integer :: INFO 3219 integer :: IPIV( * ) 3220 integer :: LDA 3221 integer :: LDB 3222 integer :: N 3223 integer :: NRHS 3224 complex*16 :: A( LDA, * ) 3225 complex*16 :: B( LDB, * ) 3226 character :: TRANS 3227 end subroutine zgetrs 3228 end interface 3229 3230 !interface 3231 ! subroutine zheev( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO ) 3232 ! implicit none 3233 ! integer :: INFO 3234 ! integer :: LDA 3235 ! integer :: LWORK 3236 ! integer :: N 3237 ! complex*16 :: A( LDA, * ) 3238 ! character :: JOBZ 3239 ! double precision :: RWORK( * ) 3240 ! character :: UPLO 3241 ! double precision :: W( * ) 3242 ! complex*16 :: WORK( * ) 3243 ! end subroutine zheev 3244 !end interface 3245 3246 interface 3247 subroutine zhegs2( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) 3248 implicit none 3249 integer :: INFO 3250 integer :: ITYPE 3251 integer :: LDA 3252 integer :: LDB 3253 integer :: N 3254 complex*16 :: A( LDA, * ) 3255 complex*16 :: B( LDB, * ) 3256 character :: UPLO 3257 end subroutine zhegs2 3258 end interface 3259 3260 !interface 3261 ! subroutine zhegst( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) 3262 ! implicit none 3263 ! integer :: INFO 3264 ! integer :: ITYPE 3265 ! integer :: LDA 3266 ! integer :: LDB 3267 ! integer :: N 3268 ! complex*16 :: A( LDA, * ) 3269 ! complex*16 :: B( LDB, * ) 3270 ! character :: UPLO 3271 ! end subroutine zhegst 3272 !end interface 3273 3274 !interface 3275 ! subroutine zhegv( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,& 3276 ! LWORK, RWORK, INFO ) 3277 ! implicit none 3278 ! integer :: INFO 3279 ! integer :: ITYPE 3280 ! integer :: LDA 3281 ! integer :: LDB 3282 ! integer :: LWORK 3283 ! integer :: N 3284 ! complex*16 :: A( LDA, * ) 3285 ! complex*16 :: B( LDB, * ) 3286 ! character :: JOBZ 3287 ! double precision :: RWORK( * ) 3288 ! character :: UPLO 3289 ! double precision :: W( * ) 3290 ! complex*16 :: WORK( * ) 3291 ! end subroutine zhegv 3292 !end interface 3293 3294 interface 3295 subroutine zhetd2( UPLO, N, A, LDA, D, E, TAU, INFO ) 3296 implicit none 3297 integer :: INFO 3298 integer :: LDA 3299 integer :: N 3300 complex*16 :: A( LDA, * ) 3301 double precision :: D( * ) 3302 double precision :: E( * ) 3303 complex*16 :: TAU( * ) 3304 character :: UPLO 3305 end subroutine zhetd2 3306 end interface 3307 3308 interface 3309 subroutine zhetrd( UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO ) 3310 implicit none 3311 integer :: INFO 3312 integer :: LDA 3313 integer :: LWORK 3314 integer :: N 3315 complex*16 :: A( LDA, * ) 3316 double precision :: D( * ) 3317 double precision :: E( * ) 3318 complex*16 :: TAU( * ) 3319 character :: UPLO 3320 complex*16 :: WORK( * ) 3321 end subroutine zhetrd 3322 end interface 3323 3324 !interface 3325 ! subroutine zhpev( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK, INFO ) 3326 ! implicit none 3327 ! integer :: INFO 3328 ! integer :: LDZ 3329 ! integer :: N 3330 ! complex*16 :: AP( * ) 3331 ! character :: JOBZ 3332 ! double precision :: RWORK( * ) 3333 ! character :: UPLO 3334 ! double precision :: W( * ) 3335 ! complex*16 :: WORK( * ) 3336 ! complex*16 :: Z( LDZ, * ) 3337 ! end subroutine zhpev 3338 !end interface 3339 3340 !interface 3341 ! subroutine zhpevx( JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU,& 3342 ! ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK,& 3343 ! IFAIL, INFO ) 3344 ! implicit none 3345 ! integer :: IFAIL( * ) 3346 ! integer :: IL 3347 ! integer :: INFO 3348 ! integer :: IU 3349 ! integer :: IWORK( * ) 3350 ! integer :: LDZ 3351 ! integer :: M 3352 ! integer :: N 3353 ! double precision :: ABSTOL 3354 ! complex*16 :: AP( * ) 3355 ! character :: JOBZ 3356 ! character :: RANGE 3357 ! double precision :: RWORK( * ) 3358 ! character :: UPLO 3359 ! double precision :: VL 3360 ! double precision :: VU 3361 ! double precision :: W( * ) 3362 ! complex*16 :: WORK( * ) 3363 ! complex*16 :: Z( LDZ, * ) 3364 ! end subroutine zhpevx 3365 !end interface 3366 3367 interface 3368 subroutine zhpgst( ITYPE, UPLO, N, AP, BP, INFO ) 3369 implicit none 3370 integer :: INFO 3371 integer :: ITYPE 3372 integer :: N 3373 complex*16 :: AP( * ) 3374 complex*16 :: BP( * ) 3375 character :: UPLO 3376 end subroutine zhpgst 3377 end interface 3378 3379 !interface 3380 ! subroutine zhpgv( ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK,& 3381 ! RWORK, INFO ) 3382 ! implicit none 3383 ! integer :: INFO 3384 ! integer :: ITYPE 3385 ! integer :: LDZ 3386 ! integer :: N 3387 ! complex*16 :: AP( * ) 3388 ! complex*16 :: BP( * ) 3389 ! character :: JOBZ 3390 ! double precision :: RWORK( * ) 3391 ! character :: UPLO 3392 ! double precision :: W( * ) 3393 ! complex*16 :: WORK( * ) 3394 ! complex*16 :: Z( LDZ, * ) 3395 ! end subroutine zhpgv 3396 !end interface 3397 3398 interface 3399 subroutine zhptrd( UPLO, N, AP, D, E, TAU, INFO ) 3400 implicit none 3401 integer :: INFO 3402 integer :: N 3403 complex*16 :: AP( * ) 3404 double precision :: D( * ) 3405 double precision :: E( * ) 3406 complex*16 :: TAU( * ) 3407 character :: UPLO 3408 end subroutine zhptrd 3409 end interface 3410 3411 interface 3412 subroutine zhseqr( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ,& 3413 WORK, LWORK, INFO ) 3414 implicit none 3415 integer :: IHI 3416 integer :: ILO 3417 integer :: INFO 3418 integer :: LDH 3419 integer :: LDZ 3420 integer :: LWORK 3421 integer :: N 3422 character :: COMPZ 3423 complex*16 :: H( LDH, * ) 3424 character :: JOB 3425 complex*16 :: W( * ) 3426 complex*16 :: WORK( * ) 3427 complex*16 :: Z( LDZ, * ) 3428 end subroutine zhseqr 3429 end interface 3430 3431 interface 3432 subroutine zlabrd( M, N, NB, A, LDA, D, E, TAUQ, TAUP, X, LDX, Y,& 3433 LDY ) 3434 implicit none 3435 integer :: LDA 3436 integer :: LDX 3437 integer :: LDY 3438 integer :: M 3439 integer :: N 3440 integer :: NB 3441 complex*16 :: A( LDA, * ) 3442 double precision :: D( * ) 3443 double precision :: E( * ) 3444 complex*16 :: TAUP( * ) 3445 complex*16 :: TAUQ( * ) 3446 complex*16 :: X( LDX, * ) 3447 complex*16 :: Y( LDY, * ) 3448 end subroutine zlabrd 3449 end interface 3450 3451 interface 3452 subroutine zlacgv( N, X, INCX ) 3453 implicit none 3454 integer :: INCX 3455 integer :: N 3456 complex*16 :: X( * ) 3457 end subroutine zlacgv 3458 end interface 3459 3460 interface 3461 subroutine zlacon( N, V, X, EST, KASE ) 3462 implicit none 3463 integer :: KASE 3464 integer :: N 3465 double precision :: EST 3466 complex*16 :: V( N ) 3467 complex*16 :: X( N ) 3468 end subroutine zlacon 3469 end interface 3470 3471 interface 3472 subroutine zlacpy( UPLO, M, N, A, LDA, B, LDB ) 3473 implicit none 3474 integer :: LDA 3475 integer :: LDB 3476 integer :: M 3477 integer :: N 3478 complex*16 :: A( LDA, * ) 3479 complex*16 :: B( LDB, * ) 3480 character :: UPLO 3481 end subroutine zlacpy 3482 end interface 3483 3484 interface 3485 double complex function zladiv( X, Y ) 3486 implicit none 3487 complex*16 :: X 3488 complex*16 :: Y 3489 end function zladiv 3490 end interface 3491 3492 interface 3493 subroutine zlahqr( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,& 3494 IHIZ, Z, LDZ, INFO ) 3495 implicit none 3496 integer :: IHI 3497 integer :: IHIZ 3498 integer :: ILO 3499 integer :: ILOZ 3500 integer :: INFO 3501 integer :: LDH 3502 integer :: LDZ 3503 integer :: N 3504 complex*16 :: H( LDH, * ) 3505 complex*16 :: W( * ) 3506 logical :: WANTT 3507 logical :: WANTZ 3508 complex*16 :: Z( LDZ, * ) 3509 end subroutine zlahqr 3510 end interface 3511 3512 interface 3513 subroutine zlahrd( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) 3514 implicit none 3515 integer :: K 3516 integer :: LDA 3517 integer :: LDT 3518 integer :: LDY 3519 integer :: N 3520 integer :: NB 3521 complex*16 :: A( LDA, * ) 3522 complex*16 :: T( LDT, NB ) 3523 complex*16 :: TAU( NB ) 3524 complex*16 :: Y( LDY, NB ) 3525 end subroutine zlahrd 3526 end interface 3527 3528 interface 3529 subroutine zlahr2( N, K, NB, A, LDA, TAU, T, LDT, Y, LDY ) 3530 implicit none 3531 integer :: K 3532 integer :: LDA 3533 integer :: LDT 3534 integer :: LDY 3535 integer :: N 3536 integer :: NB 3537 complex*16 :: A( LDA, * ) 3538 complex*16 :: T( LDT, NB ) 3539 complex*16 :: TAU( NB ) 3540 complex*16 :: Y( LDY, NB ) 3541 end subroutine zlahr2 3542 end interface 3543 3544 interface 3545 double precision function zlange( NORM, M, N, A, LDA, WORK ) 3546 implicit none 3547 integer :: LDA 3548 integer :: M 3549 integer :: N 3550 complex*16 :: A( LDA, * ) 3551 character :: NORM 3552 double precision :: WORK( * ) 3553 end function zlange 3554 end interface 3555 3556 interface 3557 double precision function zlanhe( NORM, UPLO, N, A, LDA, WORK ) 3558 implicit none 3559 integer :: LDA 3560 integer :: N 3561 complex*16 :: A( LDA, * ) 3562 character :: NORM 3563 character :: UPLO 3564 double precision :: WORK( * ) 3565 end function zlanhe 3566 end interface 3567 3568 interface 3569 double precision function zlanhp( NORM, UPLO, N, AP, WORK ) 3570 implicit none 3571 integer :: N 3572 complex*16 :: AP( * ) 3573 character :: NORM 3574 character :: UPLO 3575 double precision :: WORK( * ) 3576 end function zlanhp 3577 end interface 3578 3579 interface 3580 double precision function zlanhs( NORM, N, A, LDA, WORK ) 3581 implicit none 3582 integer :: LDA 3583 integer :: N 3584 complex*16 :: A( LDA, * ) 3585 character :: NORM 3586 double precision :: WORK( * ) 3587 end function zlanhs 3588 end interface 3589 3590 interface 3591 subroutine zlaqr0( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,& 3592 IHIZ, Z, LDZ, WORK, LWORK, INFO ) 3593 implicit none 3594 integer :: IHI 3595 integer :: IHIZ 3596 integer :: ILO 3597 integer :: ILOZ 3598 integer :: INFO 3599 integer :: LDH 3600 integer :: LDZ 3601 integer :: LWORK 3602 integer :: N 3603 3604 complex*16 :: H( LDH, * ) 3605 complex*16 :: W( * ) 3606 complex*16 :: WORK( * ) 3607 complex*16 :: Z( LDZ, * ) 3608 3609 logical :: WANTT 3610 logical :: WANTZ 3611 end subroutine zlaqr0 3612 end interface 3613 3614 interface 3615 subroutine zlaqr1( N, H, LDH, S1, S2, V ) 3616 implicit none 3617 integer :: LDH 3618 integer :: N 3619 complex*16 :: S1 3620 complex*16 :: S2 3621 complex*16 :: H( LDH, * ) 3622 complex*16 :: V( * ) 3623 end subroutine zlaqr1 3624 end interface 3625 3626 interface 3627 subroutine zlaqr2( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,& 3628 IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,& 3629 NV, WV, LDWV, WORK, LWORK ) 3630 implicit none 3631 integer :: IHIZ, ILOZ, KBOT, KTOP, LDH, LDT 3632 integer :: LDV, LDWV, LDZ, LWORK, N, ND, NH 3633 integer :: NS, NV, NW 3634 logical :: WANTT, WANTZ 3635 complex*16 :: H( LDH, * ), SH( * ), T( LDT, * ) 3636 complex*16 :: V( LDV, * ),WORK( * ), WV( LDWV, * ), Z( LDZ, * ) 3637 end subroutine zlaqr2 3638 end interface 3639 3640 interface 3641 subroutine zlaqr3( WANTT, WANTZ, N, KTOP, KBOT, NW, H, LDH, ILOZ,& 3642 IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,& 3643 NV, WV, LDWV, WORK, LWORK ) 3644 implicit none 3645 integer :: IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV 3646 integer :: LDZ, LWORK, N, ND, NH, NS, NV, NW 3647 logical :: WANTT, WANTZ 3648 complex*16 :: H( LDH, * ), SH( * ), T( LDT, * ) 3649 complex*16 :: V( LDV, * ),WORK( * ), WV( LDWV, * ), Z( LDZ, * ) 3650 end subroutine zlaqr3 3651 end interface 3652 3653 interface 3654 subroutine zlaqr4( WANTT, WANTZ, N, ILO, IHI, H, LDH, W, ILOZ,& 3655 IHIZ, Z, LDZ, WORK, LWORK, INFO ) 3656 implicit none 3657 integer :: IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N 3658 logical :: WANTT, WANTZ 3659 complex*16 :: H( LDH, * ), W( * ), WORK( * ), Z( LDZ, * ) 3660 end subroutine zlaqr4 3661 end interface 3662 3663 interface 3664 subroutine zlaqr5( WANTT, WANTZ, KACC22, N, KTOP, KBOT, NSHFTS, S,& 3665 H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV,& 3666 WV, LDWV, NH, WH, LDWH ) 3667 implicit none 3668 integer :: IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV 3669 integer :: LDWH, LDWV, LDZ, N, NH, NSHFTS, NV 3670 logical :: WANTT, WANTZ 3671 complex*16 :: H( LDH, * ), S( * ), U( LDU, * ), V( LDV, * ) 3672 complex*16 :: WH( LDWH, * ), WV( LDWV, * ), Z( LDZ, * ) 3673 end subroutine zlaqr5 3674 end interface 3675 3676 interface 3677 subroutine zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK ) 3678 implicit none 3679 integer :: INCV 3680 integer :: LDC 3681 integer :: M 3682 integer :: N 3683 complex*16 :: C( LDC, * ) 3684 character :: SIDE 3685 complex*16 :: TAU 3686 complex*16 :: V( * ) 3687 complex*16 :: WORK( * ) 3688 end subroutine zlarf 3689 end interface 3690 3691 interface 3692 subroutine zlarfb( SIDE, TRANS, DIRECT, STOREV, M, N, K, V, LDV,& 3693 T, LDT, C, LDC, WORK, LDWORK ) 3694 implicit none 3695 integer :: K 3696 integer :: LDC 3697 integer :: LDT 3698 integer :: LDV 3699 integer :: LDWORK 3700 integer :: M 3701 integer :: N 3702 complex*16 :: C( LDC, * ) 3703 character :: DIRECT 3704 character :: SIDE 3705 character :: STOREV 3706 complex*16 :: T( LDT, * ) 3707 character :: TRANS 3708 complex*16 :: V( LDV, * ) 3709 complex*16 :: WORK( LDWORK, * ) 3710 end subroutine zlarfb 3711 end interface 3712 3713 interface 3714 subroutine zlarfg( N, ALPHA, X, INCX, TAU ) 3715 implicit none 3716 integer :: INCX 3717 integer :: N 3718 complex*16 :: ALPHA 3719 complex*16 :: TAU 3720 complex*16 :: X( * ) 3721 end subroutine zlarfg 3722 end interface 3723 3724 interface 3725 subroutine zlarft( DIRECT, STOREV, N, K, V, LDV, TAU, T, LDT ) 3726 implicit none 3727 integer :: K 3728 integer :: LDT 3729 integer :: LDV 3730 integer :: N 3731 character :: DIRECT 3732 character :: STOREV 3733 complex*16 :: T( LDT, * ) 3734 complex*16 :: TAU( * ) 3735 complex*16 :: V( LDV, * ) 3736 end subroutine zlarft 3737 end interface 3738 3739 interface 3740 subroutine zlarfx( SIDE, M, N, V, TAU, C, LDC, WORK ) 3741 implicit none 3742 integer :: LDC 3743 integer :: M 3744 integer :: N 3745 complex*16 :: C( LDC, * ) 3746 character :: SIDE 3747 complex*16 :: TAU 3748 complex*16 :: V( * ) 3749 complex*16 :: WORK( * ) 3750 end subroutine zlarfx 3751 end interface 3752 3753 interface 3754 subroutine zlartg( F, G, CS, SN, R ) 3755 implicit none 3756 double precision :: CS 3757 complex*16 :: F 3758 complex*16 :: G 3759 complex*16 :: R 3760 complex*16 :: SN 3761 end subroutine zlartg 3762 end interface 3763 3764 interface 3765 subroutine zlascl( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) 3766 implicit none 3767 integer :: INFO 3768 integer :: KL 3769 integer :: KU 3770 integer :: LDA 3771 integer :: M 3772 integer :: N 3773 complex*16 :: A( LDA, * ) 3774 double precision :: CFROM 3775 double precision :: CTO 3776 character :: TYPE 3777 end subroutine zlascl 3778 end interface 3779 3780 interface 3781 subroutine zlaset( UPLO, M, N, ALPHA, BETA, A, LDA ) 3782 implicit none 3783 integer :: LDA 3784 integer :: M 3785 integer :: N 3786 complex*16 :: A( LDA, * ) 3787 complex*16 :: ALPHA 3788 complex*16 :: BETA 3789 character :: UPLO 3790 end subroutine zlaset 3791 end interface 3792 3793 interface 3794 subroutine zlasr( SIDE, PIVOT, DIRECT, M, N, C, S, A, LDA ) 3795 implicit none 3796 integer :: LDA 3797 integer :: M 3798 integer :: N 3799 complex*16 :: A( LDA, * ) 3800 double precision :: C( * ) 3801 character :: DIRECT 3802 character :: PIVOT 3803 double precision :: S( * ) 3804 character :: SIDE 3805 end subroutine zlasr 3806 end interface 3807 3808 interface 3809 subroutine zlassq( N, X, INCX, SCALE, SUMSQ ) 3810 implicit none 3811 integer :: INCX 3812 integer :: N 3813 double precision :: SCALE 3814 double precision :: SUMSQ 3815 complex*16 :: X( * ) 3816 end subroutine zlassq 3817 end interface 3818 3819 interface 3820 subroutine zlaswp( N, A, LDA, K1, K2, IPIV, INCX ) 3821 implicit none 3822 integer :: INCX 3823 integer :: IPIV( * ) 3824 integer :: K1 3825 integer :: K2 3826 integer :: LDA 3827 integer :: N 3828 complex*16 :: A( LDA, * ) 3829 end subroutine zlaswp 3830 end interface 3831 3832 interface 3833 subroutine zlatrd( UPLO, N, NB, A, LDA, E, TAU, W, LDW ) 3834 implicit none 3835 integer :: LDA 3836 integer :: LDW 3837 integer :: N 3838 integer :: NB 3839 complex*16 :: A( LDA, * ) 3840 double precision :: E( * ) 3841 complex*16 :: TAU( * ) 3842 character :: UPLO 3843 complex*16 :: W( LDW, * ) 3844 end subroutine zlatrd 3845 end interface 3846 3847 interface 3848 subroutine zlatrs( UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE,& 3849 CNORM, INFO ) 3850 implicit none 3851 character :: DIAG, NORMIN, TRANS, UPLO 3852 integer :: INFO, LDA, N 3853 double precision :: SCALE 3854 double precision :: CNORM( * ) 3855 complex*16 :: A( LDA, * ), X( * ) 3856 end subroutine zlatrs 3857 end interface 3858 3859 interface 3860 subroutine zlazro( M, N, ALPHA, BETA, A, LDA ) 3861 implicit none 3862 integer :: LDA 3863 integer :: M 3864 integer :: N 3865 complex*16 :: A( LDA, * ) 3866 complex*16 :: ALPHA 3867 complex*16 :: BETA 3868 end subroutine zlazro 3869 end interface 3870 3871 interface 3872 subroutine zpotf2( UPLO, N, A, LDA, INFO ) 3873 implicit none 3874 integer :: INFO 3875 integer :: LDA 3876 integer :: N 3877 complex*16 :: A( LDA, * ) 3878 character :: UPLO 3879 end subroutine zpotf2 3880 end interface 3881 3882 !interface 3883 ! subroutine zpotrf( UPLO, N, A, LDA, INFO ) 3884 ! implicit none 3885 ! integer :: INFO 3886 ! integer :: LDA 3887 ! integer :: N 3888 ! complex*16 :: A( LDA, * ) 3889 ! character :: UPLO 3890 ! end subroutine zpotrf 3891 !end interface 3892 3893 interface 3894 subroutine zpptrf( UPLO, N, AP, INFO ) 3895 implicit none 3896 integer :: INFO 3897 integer :: N 3898 complex*16 :: AP( * ) 3899 character :: UPLO 3900 end subroutine zpptrf 3901 end interface 3902 3903 interface 3904 subroutine zrot( N, CX, INCX, CY, INCY, C, S ) 3905 implicit none 3906 integer :: INCX 3907 integer :: INCY 3908 integer :: N 3909 double precision :: C 3910 complex*16 :: CX( * ) 3911 complex*16 :: CY( * ) 3912 complex*16 :: S 3913 end subroutine zrot 3914 end interface 3915 3916 interface 3917 subroutine ztrevc( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,& 3918 LDVR, MM, M, WORK, RWORK, INFO ) 3919 implicit none 3920 character :: HOWMNY, SIDE 3921 integer :: INFO, LDT, LDVL, LDVR, M, MM, N 3922 logical :: SELECT( * ) 3923 double precision :: RWORK( * ) 3924 complex*16 :: T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ) 3925 complex*16 :: WORK( * ) 3926 end subroutine ztrevc 3927 end interface 3928 3929 interface 3930 subroutine ztrexc( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, INFO ) 3931 implicit none 3932 integer :: IFST 3933 integer :: ILST 3934 integer :: INFO 3935 integer :: LDQ 3936 integer :: LDT 3937 integer :: N 3938 character :: COMPQ 3939 complex*16 :: Q( LDQ, * ) 3940 complex*16 :: T( LDT, * ) 3941 end subroutine ztrexc 3942 end interface 3943 3944 interface 3945 subroutine ztrsen( JOB, COMPQ, SELECT, N, T, LDT, Q, LDQ, W, M, S,& 3946 SEP, WORK, LWORK, INFO ) 3947 implicit none 3948 integer :: INFO 3949 integer :: LDQ 3950 integer :: LDT 3951 integer :: LWORK 3952 integer :: M 3953 integer :: N 3954 character :: COMPQ 3955 character :: JOB 3956 complex*16 :: Q( LDQ, * ) 3957 double precision :: S 3958 logical :: SELECT( * ) 3959 double precision :: SEP 3960 complex*16 :: T( LDT, * ) 3961 complex*16 :: W( * ) 3962 complex*16 :: WORK( * ) 3963 end subroutine ztrsen 3964 end interface 3965 3966 interface 3967 subroutine ztrsyl( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,& 3968 LDC, SCALE, INFO ) 3969 implicit none 3970 integer :: INFO 3971 integer :: ISGN 3972 integer :: LDA 3973 integer :: LDB 3974 integer :: LDC 3975 integer :: M 3976 integer :: N 3977 complex*16 :: A( LDA, * ) 3978 complex*16 :: B( LDB, * ) 3979 complex*16 :: C( LDC, * ) 3980 double precision :: SCALE 3981 character :: TRANA 3982 character :: TRANB 3983 end subroutine ztrsyl 3984 end interface 3985 3986 interface 3987 subroutine ztrti2( UPLO, DIAG, N, A, LDA, INFO ) 3988 implicit none 3989 character :: DIAG 3990 character :: UPLO 3991 integer :: INFO 3992 integer :: LDA 3993 integer :: N 3994 complex*16 :: A( LDA, * ) 3995 end subroutine ztrti2 3996 end interface 3997 3998 interface 3999 subroutine ztrtri( UPLO, DIAG, N, A, LDA, INFO ) 4000 implicit none 4001 character :: DIAG 4002 character :: UPLO 4003 integer :: INFO 4004 integer :: LDA 4005 integer :: N 4006 complex*16 :: A( LDA, * ) 4007 end subroutine ztrtri 4008 end interface 4009 4010 interface 4011 subroutine zungqr( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) 4012 implicit none 4013 integer :: INFO, K, LDA, LWORK, M, N 4014 complex*16 :: A( LDA, * ), TAU( * ), WORK( * ) 4015 end subroutine zungqr 4016 end interface 4017 4018 end module m_linalg_interfaces