Blame view
fvn_sparse/UMFPACK/Source/umf_version.h
32.6 KB
422234dc3
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 |
/* ========================================================================== */ /* === umf_version.h ======================================================== */ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ /* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ /* Define routine names, depending on version being compiled. DINT: double precision, int's as integers DLONG: double precision, UF_long's as integers ZLONG: complex double precision, UF_long's as integers ZINT: complex double precision, int's as integers */ /* Set DINT as the default, if nothing is defined */ #if !defined (DLONG) && !defined (DINT) && !defined (ZLONG) && !defined (ZINT) #define DINT #endif /* Determine if this is a real or complex version */ #if defined (ZLONG) || defined (ZINT) #define COMPLEX #endif /* -------------------------------------------------------------------------- */ /* integer type (Int is int or UF_long) now defined in amd_internal.h */ /* -------------------------------------------------------------------------- */ #if defined (DLONG) || defined (ZLONG) #define LONG_INTEGER #endif /* -------------------------------------------------------------------------- */ /* Numerical relop macros for correctly handling the NaN case */ /* -------------------------------------------------------------------------- */ /* SCALAR_IS_NAN(x): True if x is NaN. False otherwise. The commonly-existing isnan(x) function could be used, but it's not in Kernighan & Ritchie 2nd edition (ANSI C). It may appear in <math.h>, but I'm not certain about portability. The expression x != x is true if and only if x is NaN, according to the IEEE 754 floating-point standard. SCALAR_IS_ZERO(x): True if x is zero. False if x is nonzero, NaN, or +/- Inf. This is (x == 0) if the compiler is IEEE 754 compliant. SCALAR_IS_NONZERO(x): True if x is nonzero, NaN, or +/- Inf. False if x zero. This is (x != 0) if the compiler is IEEE 754 compliant. SCALAR_IS_LTZERO(x): True if x is < zero or -Inf. False if x is >= 0, NaN, or +Inf. This is (x < 0) if the compiler is IEEE 754 compliant. */ #if defined (UMF_WINDOWS) && !defined (MATHWORKS) /* Yes, this is exceedingly ugly. Blame Microsoft, which hopelessly */ /* violates the IEEE 754 floating-point standard in a bizarre way. */ /* If you're using an IEEE 754-compliant compiler, then x != x is true */ /* iff x is NaN. For Microsoft, (x < x) is true iff x is NaN. */ /* So either way, this macro safely detects a NaN. */ #define SCALAR_IS_NAN(x) (((x) != (x)) || (((x) < (x)))) #define SCALAR_IS_ZERO(x) (((x) == 0.) && !SCALAR_IS_NAN(x)) #define SCALAR_IS_NONZERO(x) (((x) != 0.) || SCALAR_IS_NAN(x)) #define SCALAR_IS_LTZERO(x) (((x) < 0.) && !SCALAR_IS_NAN(x)) #else /* These all work properly, according to the IEEE 754 standard ... except on */ /* a PC with windows. Works fine in Linux on the same PC... */ #define SCALAR_IS_NAN(x) ((x) != (x)) #define SCALAR_IS_ZERO(x) ((x) == 0.) #define SCALAR_IS_NONZERO(x) ((x) != 0.) #define SCALAR_IS_LTZERO(x) ((x) < 0.) #endif /* scalar absolute value macro. If x is NaN, the result is NaN: */ #define SCALAR_ABS(x) ((SCALAR_IS_LTZERO (x)) ? -(x) : (x)) /* true if an integer (stored in double x) would overflow (or if x is NaN) */ #define INT_OVERFLOW(x) ((!((x) * (1.0+1e-8) <= (double) Int_MAX)) \ || SCALAR_IS_NAN (x)) /* print a scalar (avoid printing "-0" for negative zero). */ #define PRINT_SCALAR(a) \ { \ if (SCALAR_IS_NONZERO (a)) \ { \ PRINTF ((" (%g)", (a))) ; \ } \ else \ { \ PRINTF ((" (0)")) ; \ } \ } /* -------------------------------------------------------------------------- */ /* Real floating-point arithmetic */ /* -------------------------------------------------------------------------- */ #ifndef COMPLEX #define Entry double #define SPLIT(s) (1) #define REAL_COMPONENT(c) (c) #define IMAG_COMPONENT(c) (0.) #define ASSIGN(c,s1,s2,p,split) { (c) = (s1)[p] ; } #define CLEAR(c) { (c) = 0. ; } #define CLEAR_AND_INCREMENT(p) { *p++ = 0. ; } #define IS_NAN(a) SCALAR_IS_NAN (a) #define IS_ZERO(a) SCALAR_IS_ZERO (a) #define IS_NONZERO(a) SCALAR_IS_NONZERO (a) #define SCALE_DIV(c,s) { (c) /= (s) ; } #define SCALE(c,s) { (c) *= (s) ; } #define ASSEMBLE(c,a) { (c) += (a) ; } #define ASSEMBLE_AND_INCREMENT(c,p) { (c) += *p++ ; } #define DECREMENT(c,a) { (c) -= (a) ; } #define MULT(c,a,b) { (c) = (a) * (b) ; } #define MULT_CONJ(c,a,b) { (c) = (a) * (b) ; } #define MULT_SUB(c,a,b) { (c) -= (a) * (b) ; } #define MULT_SUB_CONJ(c,a,b) { (c) -= (a) * (b) ; } #define DIV(c,a,b) { (c) = (a) / (b) ; } #define DIV_CONJ(c,a,b) { (c) = (a) / (b) ; } #define APPROX_ABS(s,a) { (s) = SCALAR_ABS (a) ; } #define ABS(s,a) { (s) = SCALAR_ABS (a) ; } #define PRINT_ENTRY(a) PRINT_SCALAR (a) /* for flop counts */ #define MULTSUB_FLOPS 2. /* c -= a*b */ #define DIV_FLOPS 1. /* c = a/b */ #define ABS_FLOPS 0. /* c = abs (a) */ #define ASSEMBLE_FLOPS 1. /* c += a */ #define DECREMENT_FLOPS 1. /* c -= a */ #define MULT_FLOPS 1. /* c = a*b */ #define SCALE_FLOPS 1. /* c = a/s */ #else /* -------------------------------------------------------------------------- */ /* Complex floating-point arithmetic */ /* -------------------------------------------------------------------------- */ /* Note: An alternative to this DoubleComplex type would be to use a struct { double r ; double i ; }. The problem with that method (used by the Sun Performance Library, for example) is that ANSI C provides no guarantee about the layout of a struct. It is possible that the sizeof the struct above would be greater than 2 * sizeof (double). This would mean that the complex BLAS could not be used. The method used here avoids that possibility. ANSI C *does* guarantee that an array of structs has the same size as n times the size of one struct. The ANSI C99 version of the C language includes a "double _Complex" type. It should be possible in that case to do the following: #define Entry double _Complex and remove the DoubleComplex struct. The macros, below, could then be replaced with instrinsic operators. Note that the #define Real and #define Imag should also be removed (they only appear in this file). For the MULT, MULT_SUB, MULT_SUB_CONJ, and MULT_CONJ macros, the output argument c cannot be the same as any input argument. */ typedef struct { double component [2] ; /* real and imaginary parts */ } DoubleComplex ; #define Entry DoubleComplex #define Real component [0] #define Imag component [1] /* for flop counts */ #define MULTSUB_FLOPS 8. /* c -= a*b */ #define DIV_FLOPS 9. /* c = a/b */ #define ABS_FLOPS 6. /* c = abs (a), count sqrt as one flop */ #define ASSEMBLE_FLOPS 2. /* c += a */ #define DECREMENT_FLOPS 2. /* c -= a */ #define MULT_FLOPS 6. /* c = a*b */ #define SCALE_FLOPS 2. /* c = a/s or c = a*s */ /* -------------------------------------------------------------------------- */ /* real part of c */ #define REAL_COMPONENT(c) ((c).Real) /* -------------------------------------------------------------------------- */ /* imag part of c */ #define IMAG_COMPONENT(c) ((c).Imag) /* -------------------------------------------------------------------------- */ /* Return TRUE if a complex number is in split form, FALSE if in packed form */ #define SPLIT(sz) ((sz) != (double *) NULL) /* -------------------------------------------------------------------------- */ /* c = (s1) + (s2)*i, if s2 is null, then X is in "packed" format (compatible * with Entry and ANSI C99 double _Complex type). */ #define ASSIGN(c,s1,s2,p,split) \ { \ if (split) \ { \ (c).Real = (s1)[p] ; \ (c).Imag = (s2)[p] ; \ } \ else \ { \ (c) = ((Entry *)(s1))[p] ; \ } \ } /* -------------------------------------------------------------------------- */ /* c = 0 */ #define CLEAR(c) \ { \ (c).Real = 0. ; \ (c).Imag = 0. ; \ } /* -------------------------------------------------------------------------- */ /* *p++ = 0 */ #define CLEAR_AND_INCREMENT(p) \ { \ p->Real = 0. ; \ p->Imag = 0. ; \ p++ ; \ } /* -------------------------------------------------------------------------- */ /* True if a == 0 */ #define IS_ZERO(a) \ (SCALAR_IS_ZERO ((a).Real) && SCALAR_IS_ZERO ((a).Imag)) /* -------------------------------------------------------------------------- */ /* True if a is NaN */ #define IS_NAN(a) \ (SCALAR_IS_NAN ((a).Real) || SCALAR_IS_NAN ((a).Imag)) /* -------------------------------------------------------------------------- */ /* True if a != 0 */ #define IS_NONZERO(a) \ (SCALAR_IS_NONZERO ((a).Real) || SCALAR_IS_NONZERO ((a).Imag)) /* -------------------------------------------------------------------------- */ /* c /= s */ #define SCALE_DIV(c,s) \ { \ (c).Real /= (s) ; \ (c).Imag /= (s) ; \ } /* -------------------------------------------------------------------------- */ /* c *= s */ #define SCALE(c,s) \ { \ (c).Real *= (s) ; \ (c).Imag *= (s) ; \ } /* -------------------------------------------------------------------------- */ /* c += a */ #define ASSEMBLE(c,a) \ { \ (c).Real += (a).Real ; \ (c).Imag += (a).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c += *p++ */ #define ASSEMBLE_AND_INCREMENT(c,p) \ { \ (c).Real += p->Real ; \ (c).Imag += p->Imag ; \ p++ ; \ } /* -------------------------------------------------------------------------- */ /* c -= a */ #define DECREMENT(c,a) \ { \ (c).Real -= (a).Real ; \ (c).Imag -= (a).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c = a*b, assert because c cannot be the same as a or b */ #define MULT(c,a,b) \ { \ ASSERT (&(c) != &(a) && &(c) != &(b)) ; \ (c).Real = (a).Real * (b).Real - (a).Imag * (b).Imag ; \ (c).Imag = (a).Imag * (b).Real + (a).Real * (b).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c = a*conjugate(b), assert because c cannot be the same as a or b */ #define MULT_CONJ(c,a,b) \ { \ ASSERT (&(c) != &(a) && &(c) != &(b)) ; \ (c).Real = (a).Real * (b).Real + (a).Imag * (b).Imag ; \ (c).Imag = (a).Imag * (b).Real - (a).Real * (b).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c -= a*b, assert because c cannot be the same as a or b */ #define MULT_SUB(c,a,b) \ { \ ASSERT (&(c) != &(a) && &(c) != &(b)) ; \ (c).Real -= (a).Real * (b).Real - (a).Imag * (b).Imag ; \ (c).Imag -= (a).Imag * (b).Real + (a).Real * (b).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c -= a*conjugate(b), assert because c cannot be the same as a or b */ #define MULT_SUB_CONJ(c,a,b) \ { \ ASSERT (&(c) != &(a) && &(c) != &(b)) ; \ (c).Real -= (a).Real * (b).Real + (a).Imag * (b).Imag ; \ (c).Imag -= (a).Imag * (b).Real - (a).Real * (b).Imag ; \ } /* -------------------------------------------------------------------------- */ /* c = a/b, using function pointer */ #define DIV(c,a,b) \ { \ (void) umfpack_divcomplex ((a).Real, (a).Imag, (b).Real, (b).Imag, \ &((c).Real), &((c).Imag)) ; \ } /* -------------------------------------------------------------------------- */ /* c = a/conjugate(b), using function pointer */ #define DIV_CONJ(c,a,b) \ { \ (void) umfpack_divcomplex ((a).Real, (a).Imag, (b).Real, (-(b).Imag), \ &((c).Real), &((c).Imag)) ; \ } /* -------------------------------------------------------------------------- */ /* approximate absolute value, s = |r|+|i| */ #define APPROX_ABS(s,a) \ { \ (s) = SCALAR_ABS ((a).Real) + SCALAR_ABS ((a).Imag) ; \ } /* -------------------------------------------------------------------------- */ /* exact absolute value, s = sqrt (a.real^2 + a.imag^2) */ #define ABS(s,a) \ { \ (s) = umfpack_hypot ((a).Real, (a).Imag) ; \ } /* -------------------------------------------------------------------------- */ /* print an entry (avoid printing "-0" for negative zero). */ #define PRINT_ENTRY(a) \ { \ if (SCALAR_IS_NONZERO ((a).Real)) \ { \ PRINTF ((" (%g", (a).Real)) ; \ } \ else \ { \ PRINTF ((" (0")) ; \ } \ if (SCALAR_IS_LTZERO ((a).Imag)) \ { \ PRINTF ((" - %gi)", -(a).Imag)) ; \ } \ else if (SCALAR_IS_ZERO ((a).Imag)) \ { \ PRINTF ((" + 0i)")) ; \ } \ else \ { \ PRINTF ((" + %gi)", (a).Imag)) ; \ } \ } /* -------------------------------------------------------------------------- */ #endif /* #ifndef COMPLEX */ /* -------------------------------------------------------------------------- */ /* Double precision, with int's as integers */ /* -------------------------------------------------------------------------- */ #ifdef DINT #define UMF_analyze umf_i_analyze #define UMF_apply_order umf_i_apply_order #define UMF_assemble umfdi_assemble #define UMF_assemble_fixq umfdi_assemble_fixq #define UMF_blas3_update umfdi_blas3_update #define UMF_build_tuples umfdi_build_tuples #define UMF_build_tuples_usage umfdi_build_tuples_usage #define UMF_colamd umf_i_colamd #define UMF_colamd_set_defaults umf_i_colamd_set_defaults #define UMF_create_element umfdi_create_element #define UMF_extend_front umfdi_extend_front #define UMF_free umf_i_free #define UMF_fsize umf_i_fsize #define UMF_garbage_collection umfdi_garbage_collection #define UMF_get_memory umfdi_get_memory #define UMF_grow_front umfdi_grow_front #define UMF_init_front umfdi_init_front #define UMF_is_permutation umf_i_is_permutation #define UMF_kernel umfdi_kernel #define UMF_kernel_init umfdi_kernel_init #define UMF_kernel_init_usage umfdi_kernel_init_usage #define UMF_kernel_wrapup umfdi_kernel_wrapup #define UMF_local_search umfdi_local_search #define UMF_lsolve umfdi_lsolve #define UMF_ltsolve umfdi_ltsolve #define UMF_lhsolve umfdi_lhsolve #define UMF_malloc umf_i_malloc #define UMF_mem_alloc_element umfdi_mem_alloc_element #define UMF_mem_alloc_head_block umfdi_mem_alloc_head_block #define UMF_mem_alloc_tail_block umfdi_mem_alloc_tail_block #define UMF_mem_free_tail_block umfdi_mem_free_tail_block #define UMF_mem_init_memoryspace umfdi_mem_init_memoryspace #define UMF_realloc umf_i_realloc #define UMF_report_perm umf_i_report_perm #define UMF_report_vector umfdi_report_vector #define UMF_row_search umfdi_row_search #define UMF_scale umfdi_scale #define UMF_scale_column umfdi_scale_column #define UMF_set_stats umf_i_set_stats #define UMF_singletons umf_i_singletons #define UMF_solve umfdi_solve #define UMF_start_front umfdi_start_front #define UMF_store_lu umfdi_store_lu #define UMF_store_lu_drop umfdi_store_lu_drop #define UMF_symbolic_usage umfdi_symbolic_usage #define UMF_transpose umfdi_transpose #define UMF_tuple_lengths umfdi_tuple_lengths #define UMF_usolve umfdi_usolve #define UMF_utsolve umfdi_utsolve #define UMF_uhsolve umfdi_uhsolve #define UMF_valid_numeric umfdi_valid_numeric #define UMF_valid_symbolic umfdi_valid_symbolic #define UMF_triplet_map_x umfdi_triplet_map_x #define UMF_triplet_map_nox umfdi_triplet_map_nox #define UMF_triplet_nomap_x umfdi_triplet_nomap_x #define UMF_triplet_nomap_nox umfdi_triplet_nomap_nox #define UMF_2by2 umfdi_2by2 #define UMFPACK_col_to_triplet umfpack_di_col_to_triplet #define UMFPACK_defaults umfpack_di_defaults #define UMFPACK_free_numeric umfpack_di_free_numeric #define UMFPACK_free_symbolic umfpack_di_free_symbolic #define UMFPACK_get_lunz umfpack_di_get_lunz #define UMFPACK_get_numeric umfpack_di_get_numeric #define UMFPACK_get_symbolic umfpack_di_get_symbolic #define UMFPACK_get_determinant umfpack_di_get_determinant #define UMFPACK_numeric umfpack_di_numeric #define UMFPACK_qsymbolic umfpack_di_qsymbolic #define UMFPACK_report_control umfpack_di_report_control #define UMFPACK_report_info umfpack_di_report_info #define UMFPACK_report_matrix umfpack_di_report_matrix #define UMFPACK_report_numeric umfpack_di_report_numeric #define UMFPACK_report_perm umfpack_di_report_perm #define UMFPACK_report_status umfpack_di_report_status #define UMFPACK_report_symbolic umfpack_di_report_symbolic #define UMFPACK_report_triplet umfpack_di_report_triplet #define UMFPACK_report_vector umfpack_di_report_vector #define UMFPACK_save_numeric umfpack_di_save_numeric #define UMFPACK_save_symbolic umfpack_di_save_symbolic #define UMFPACK_load_numeric umfpack_di_load_numeric #define UMFPACK_load_symbolic umfpack_di_load_symbolic #define UMFPACK_scale umfpack_di_scale #define UMFPACK_solve umfpack_di_solve #define UMFPACK_symbolic umfpack_di_symbolic #define UMFPACK_transpose umfpack_di_transpose #define UMFPACK_triplet_to_col umfpack_di_triplet_to_col #define UMFPACK_wsolve umfpack_di_wsolve /* for debugging only: */ #define UMF_malloc_count umf_i_malloc_count #define UMF_debug umfdi_debug #define UMF_allocfail umfdi_allocfail #define UMF_gprob umfdi_gprob #define UMF_dump_dense umfdi_dump_dense #define UMF_dump_element umfdi_dump_element #define UMF_dump_rowcol umfdi_dump_rowcol #define UMF_dump_matrix umfdi_dump_matrix #define UMF_dump_current_front umfdi_dump_current_front #define UMF_dump_lu umfdi_dump_lu #define UMF_dump_memory umfdi_dump_memory #define UMF_dump_packed_memory umfdi_dump_packed_memory #define UMF_dump_col_matrix umfdi_dump_col_matrix #define UMF_dump_chain umfdi_dump_chain #define UMF_dump_start umfdi_dump_start #define UMF_dump_rowmerge umfdi_dump_rowmerge #define UMF_dump_diagonal_map umfdi_dump_diagonal_map #endif /* -------------------------------------------------------------------------- */ /* Double precision, with UF_long's as integers */ /* -------------------------------------------------------------------------- */ #ifdef DLONG #define UMF_analyze umf_l_analyze #define UMF_apply_order umf_l_apply_order #define UMF_assemble umfdl_assemble #define UMF_assemble_fixq umfdl_assemble_fixq #define UMF_blas3_update umfdl_blas3_update #define UMF_build_tuples umfdl_build_tuples #define UMF_build_tuples_usage umfdl_build_tuples_usage #define UMF_colamd umf_l_colamd #define UMF_colamd_set_defaults umf_l_colamd_set_defaults #define UMF_create_element umfdl_create_element #define UMF_extend_front umfdl_extend_front #define UMF_free umf_l_free #define UMF_fsize umf_l_fsize #define UMF_garbage_collection umfdl_garbage_collection #define UMF_get_memory umfdl_get_memory #define UMF_grow_front umfdl_grow_front #define UMF_init_front umfdl_init_front #define UMF_is_permutation umf_l_is_permutation #define UMF_kernel umfdl_kernel #define UMF_kernel_init umfdl_kernel_init #define UMF_kernel_init_usage umfdl_kernel_init_usage #define UMF_kernel_wrapup umfdl_kernel_wrapup #define UMF_local_search umfdl_local_search #define UMF_lsolve umfdl_lsolve #define UMF_ltsolve umfdl_ltsolve #define UMF_lhsolve umfdl_lhsolve #define UMF_malloc umf_l_malloc #define UMF_mem_alloc_element umfdl_mem_alloc_element #define UMF_mem_alloc_head_block umfdl_mem_alloc_head_block #define UMF_mem_alloc_tail_block umfdl_mem_alloc_tail_block #define UMF_mem_free_tail_block umfdl_mem_free_tail_block #define UMF_mem_init_memoryspace umfdl_mem_init_memoryspace #define UMF_realloc umf_l_realloc #define UMF_report_perm umf_l_report_perm #define UMF_report_vector umfdl_report_vector #define UMF_row_search umfdl_row_search #define UMF_scale umfdl_scale #define UMF_scale_column umfdl_scale_column #define UMF_set_stats umf_l_set_stats #define UMF_singletons umf_l_singletons #define UMF_solve umfdl_solve #define UMF_start_front umfdl_start_front #define UMF_store_lu umfdl_store_lu #define UMF_store_lu_drop umfdl_store_lu_drop #define UMF_symbolic_usage umfdl_symbolic_usage #define UMF_transpose umfdl_transpose #define UMF_tuple_lengths umfdl_tuple_lengths #define UMF_usolve umfdl_usolve #define UMF_utsolve umfdl_utsolve #define UMF_uhsolve umfdl_uhsolve #define UMF_valid_numeric umfdl_valid_numeric #define UMF_valid_symbolic umfdl_valid_symbolic #define UMF_triplet_map_x umfdl_triplet_map_x #define UMF_triplet_map_nox umfdl_triplet_map_nox #define UMF_triplet_nomap_x umfdl_triplet_nomap_x #define UMF_triplet_nomap_nox umfdl_triplet_nomap_nox #define UMF_2by2 umfdl_2by2 #define UMFPACK_col_to_triplet umfpack_dl_col_to_triplet #define UMFPACK_defaults umfpack_dl_defaults #define UMFPACK_free_numeric umfpack_dl_free_numeric #define UMFPACK_free_symbolic umfpack_dl_free_symbolic #define UMFPACK_get_lunz umfpack_dl_get_lunz #define UMFPACK_get_numeric umfpack_dl_get_numeric #define UMFPACK_get_symbolic umfpack_dl_get_symbolic #define UMFPACK_get_determinant umfpack_dl_get_determinant #define UMFPACK_numeric umfpack_dl_numeric #define UMFPACK_qsymbolic umfpack_dl_qsymbolic #define UMFPACK_report_control umfpack_dl_report_control #define UMFPACK_report_info umfpack_dl_report_info #define UMFPACK_report_matrix umfpack_dl_report_matrix #define UMFPACK_report_numeric umfpack_dl_report_numeric #define UMFPACK_report_perm umfpack_dl_report_perm #define UMFPACK_report_status umfpack_dl_report_status #define UMFPACK_report_symbolic umfpack_dl_report_symbolic #define UMFPACK_report_triplet umfpack_dl_report_triplet #define UMFPACK_report_vector umfpack_dl_report_vector #define UMFPACK_save_numeric umfpack_dl_save_numeric #define UMFPACK_save_symbolic umfpack_dl_save_symbolic #define UMFPACK_load_numeric umfpack_dl_load_numeric #define UMFPACK_load_symbolic umfpack_dl_load_symbolic #define UMFPACK_scale umfpack_dl_scale #define UMFPACK_solve umfpack_dl_solve #define UMFPACK_symbolic umfpack_dl_symbolic #define UMFPACK_transpose umfpack_dl_transpose #define UMFPACK_triplet_to_col umfpack_dl_triplet_to_col #define UMFPACK_wsolve umfpack_dl_wsolve /* for debugging only: */ #define UMF_malloc_count umf_l_malloc_count #define UMF_debug umfdl_debug #define UMF_allocfail umfdl_allocfail #define UMF_gprob umfdl_gprob #define UMF_dump_dense umfdl_dump_dense #define UMF_dump_element umfdl_dump_element #define UMF_dump_rowcol umfdl_dump_rowcol #define UMF_dump_matrix umfdl_dump_matrix #define UMF_dump_current_front umfdl_dump_current_front #define UMF_dump_lu umfdl_dump_lu #define UMF_dump_memory umfdl_dump_memory #define UMF_dump_packed_memory umfdl_dump_packed_memory #define UMF_dump_col_matrix umfdl_dump_col_matrix #define UMF_dump_chain umfdl_dump_chain #define UMF_dump_start umfdl_dump_start #define UMF_dump_rowmerge umfdl_dump_rowmerge #define UMF_dump_diagonal_map umfdl_dump_diagonal_map #endif /* -------------------------------------------------------------------------- */ /* Complex double precision, with int's as integers */ /* -------------------------------------------------------------------------- */ #ifdef ZINT #define UMF_analyze umf_i_analyze #define UMF_apply_order umf_i_apply_order #define UMF_assemble umfzi_assemble #define UMF_assemble_fixq umfzi_assemble_fixq #define UMF_blas3_update umfzi_blas3_update #define UMF_build_tuples umfzi_build_tuples #define UMF_build_tuples_usage umfzi_build_tuples_usage #define UMF_colamd umf_i_colamd #define UMF_colamd_set_defaults umf_i_colamd_set_defaults #define UMF_create_element umfzi_create_element #define UMF_extend_front umfzi_extend_front #define UMF_free umf_i_free #define UMF_fsize umf_i_fsize #define UMF_garbage_collection umfzi_garbage_collection #define UMF_get_memory umfzi_get_memory #define UMF_grow_front umfzi_grow_front #define UMF_init_front umfzi_init_front #define UMF_is_permutation umf_i_is_permutation #define UMF_kernel umfzi_kernel #define UMF_kernel_init umfzi_kernel_init #define UMF_kernel_init_usage umfzi_kernel_init_usage #define UMF_kernel_wrapup umfzi_kernel_wrapup #define UMF_local_search umfzi_local_search #define UMF_lsolve umfzi_lsolve #define UMF_ltsolve umfzi_ltsolve #define UMF_lhsolve umfzi_lhsolve #define UMF_malloc umf_i_malloc #define UMF_mem_alloc_element umfzi_mem_alloc_element #define UMF_mem_alloc_head_block umfzi_mem_alloc_head_block #define UMF_mem_alloc_tail_block umfzi_mem_alloc_tail_block #define UMF_mem_free_tail_block umfzi_mem_free_tail_block #define UMF_mem_init_memoryspace umfzi_mem_init_memoryspace #define UMF_realloc umf_i_realloc #define UMF_report_perm umf_i_report_perm #define UMF_report_vector umfzi_report_vector #define UMF_row_search umfzi_row_search #define UMF_scale umfzi_scale #define UMF_scale_column umfzi_scale_column #define UMF_set_stats umfzi_set_stats #define UMF_singletons umf_i_singletons #define UMF_solve umfzi_solve #define UMF_start_front umfzi_start_front #define UMF_store_lu umfzi_store_lu #define UMF_store_lu_drop umfzi_store_lu_drop #define UMF_symbolic_usage umfzi_symbolic_usage #define UMF_transpose umfzi_transpose #define UMF_tuple_lengths umfzi_tuple_lengths #define UMF_usolve umfzi_usolve #define UMF_utsolve umfzi_utsolve #define UMF_uhsolve umfzi_uhsolve #define UMF_valid_numeric umfzi_valid_numeric #define UMF_valid_symbolic umfzi_valid_symbolic #define UMF_triplet_map_x umfzi_triplet_map_x #define UMF_triplet_map_nox umfzi_triplet_map_nox #define UMF_triplet_nomap_x umfzi_triplet_nomap_x #define UMF_triplet_nomap_nox umfzi_triplet_nomap_nox #define UMF_2by2 umfzi_2by2 #define UMFPACK_col_to_triplet umfpack_zi_col_to_triplet #define UMFPACK_defaults umfpack_zi_defaults #define UMFPACK_free_numeric umfpack_zi_free_numeric #define UMFPACK_free_symbolic umfpack_zi_free_symbolic #define UMFPACK_get_lunz umfpack_zi_get_lunz #define UMFPACK_get_numeric umfpack_zi_get_numeric #define UMFPACK_get_symbolic umfpack_zi_get_symbolic #define UMFPACK_get_determinant umfpack_zi_get_determinant #define UMFPACK_numeric umfpack_zi_numeric #define UMFPACK_qsymbolic umfpack_zi_qsymbolic #define UMFPACK_report_control umfpack_zi_report_control #define UMFPACK_report_info umfpack_zi_report_info #define UMFPACK_report_matrix umfpack_zi_report_matrix #define UMFPACK_report_numeric umfpack_zi_report_numeric #define UMFPACK_report_perm umfpack_zi_report_perm #define UMFPACK_report_status umfpack_zi_report_status #define UMFPACK_report_symbolic umfpack_zi_report_symbolic #define UMFPACK_report_triplet umfpack_zi_report_triplet #define UMFPACK_report_vector umfpack_zi_report_vector #define UMFPACK_save_numeric umfpack_zi_save_numeric #define UMFPACK_save_symbolic umfpack_zi_save_symbolic #define UMFPACK_load_numeric umfpack_zi_load_numeric #define UMFPACK_load_symbolic umfpack_zi_load_symbolic #define UMFPACK_scale umfpack_zi_scale #define UMFPACK_solve umfpack_zi_solve #define UMFPACK_symbolic umfpack_zi_symbolic #define UMFPACK_transpose umfpack_zi_transpose #define UMFPACK_triplet_to_col umfpack_zi_triplet_to_col #define UMFPACK_wsolve umfpack_zi_wsolve /* for debugging only: */ #define UMF_malloc_count umf_i_malloc_count #define UMF_debug umfzi_debug #define UMF_allocfail umfzi_allocfail #define UMF_gprob umfzi_gprob #define UMF_dump_dense umfzi_dump_dense #define UMF_dump_element umfzi_dump_element #define UMF_dump_rowcol umfzi_dump_rowcol #define UMF_dump_matrix umfzi_dump_matrix #define UMF_dump_current_front umfzi_dump_current_front #define UMF_dump_lu umfzi_dump_lu #define UMF_dump_memory umfzi_dump_memory #define UMF_dump_packed_memory umfzi_dump_packed_memory #define UMF_dump_col_matrix umfzi_dump_col_matrix #define UMF_dump_chain umfzi_dump_chain #define UMF_dump_start umfzi_dump_start #define UMF_dump_rowmerge umfzi_dump_rowmerge #define UMF_dump_diagonal_map umfzi_dump_diagonal_map #endif /* -------------------------------------------------------------------------- */ /* Complex double precision, with UF_long's as integers */ /* -------------------------------------------------------------------------- */ #ifdef ZLONG #define UMF_analyze umf_l_analyze #define UMF_apply_order umf_l_apply_order #define UMF_assemble umfzl_assemble #define UMF_assemble_fixq umfzl_assemble_fixq #define UMF_blas3_update umfzl_blas3_update #define UMF_build_tuples umfzl_build_tuples #define UMF_build_tuples_usage umfzl_build_tuples_usage #define UMF_colamd umf_l_colamd #define UMF_colamd_set_defaults umf_l_colamd_set_defaults #define UMF_create_element umfzl_create_element #define UMF_extend_front umfzl_extend_front #define UMF_free umf_l_free #define UMF_fsize umf_l_fsize #define UMF_garbage_collection umfzl_garbage_collection #define UMF_get_memory umfzl_get_memory #define UMF_grow_front umfzl_grow_front #define UMF_init_front umfzl_init_front #define UMF_is_permutation umf_l_is_permutation #define UMF_kernel umfzl_kernel #define UMF_kernel_init umfzl_kernel_init #define UMF_kernel_init_usage umfzl_kernel_init_usage #define UMF_kernel_wrapup umfzl_kernel_wrapup #define UMF_local_search umfzl_local_search #define UMF_lsolve umfzl_lsolve #define UMF_ltsolve umfzl_ltsolve #define UMF_lhsolve umfzl_lhsolve #define UMF_malloc umf_l_malloc #define UMF_mem_alloc_element umfzl_mem_alloc_element #define UMF_mem_alloc_head_block umfzl_mem_alloc_head_block #define UMF_mem_alloc_tail_block umfzl_mem_alloc_tail_block #define UMF_mem_free_tail_block umfzl_mem_free_tail_block #define UMF_mem_init_memoryspace umfzl_mem_init_memoryspace #define UMF_realloc umf_l_realloc #define UMF_report_perm umf_l_report_perm #define UMF_report_vector umfzl_report_vector #define UMF_row_search umfzl_row_search #define UMF_scale umfzl_scale #define UMF_scale_column umfzl_scale_column #define UMF_set_stats umfzl_set_stats #define UMF_singletons umf_l_singletons #define UMF_solve umfzl_solve #define UMF_start_front umfzl_start_front #define UMF_store_lu umfzl_store_lu #define UMF_store_lu_drop umfzl_store_lu_drop #define UMF_symbolic_usage umfzl_symbolic_usage #define UMF_transpose umfzl_transpose #define UMF_tuple_lengths umfzl_tuple_lengths #define UMF_usolve umfzl_usolve #define UMF_utsolve umfzl_utsolve #define UMF_uhsolve umfzl_uhsolve #define UMF_valid_numeric umfzl_valid_numeric #define UMF_valid_symbolic umfzl_valid_symbolic #define UMF_triplet_map_x umfzl_triplet_map_x #define UMF_triplet_map_nox umfzl_triplet_map_nox #define UMF_triplet_nomap_x umfzl_triplet_nomap_x #define UMF_triplet_nomap_nox umfzl_triplet_nomap_nox #define UMF_2by2 umfzl_2by2 #define UMFPACK_col_to_triplet umfpack_zl_col_to_triplet #define UMFPACK_defaults umfpack_zl_defaults #define UMFPACK_free_numeric umfpack_zl_free_numeric #define UMFPACK_free_symbolic umfpack_zl_free_symbolic #define UMFPACK_get_lunz umfpack_zl_get_lunz #define UMFPACK_get_numeric umfpack_zl_get_numeric #define UMFPACK_get_symbolic umfpack_zl_get_symbolic #define UMFPACK_get_determinant umfpack_zl_get_determinant #define UMFPACK_numeric umfpack_zl_numeric #define UMFPACK_qsymbolic umfpack_zl_qsymbolic #define UMFPACK_report_control umfpack_zl_report_control #define UMFPACK_report_info umfpack_zl_report_info #define UMFPACK_report_matrix umfpack_zl_report_matrix #define UMFPACK_report_numeric umfpack_zl_report_numeric #define UMFPACK_report_perm umfpack_zl_report_perm #define UMFPACK_report_status umfpack_zl_report_status #define UMFPACK_report_symbolic umfpack_zl_report_symbolic #define UMFPACK_report_triplet umfpack_zl_report_triplet #define UMFPACK_report_vector umfpack_zl_report_vector #define UMFPACK_save_numeric umfpack_zl_save_numeric #define UMFPACK_save_symbolic umfpack_zl_save_symbolic #define UMFPACK_load_numeric umfpack_zl_load_numeric #define UMFPACK_load_symbolic umfpack_zl_load_symbolic #define UMFPACK_scale umfpack_zl_scale #define UMFPACK_solve umfpack_zl_solve #define UMFPACK_symbolic umfpack_zl_symbolic #define UMFPACK_transpose umfpack_zl_transpose #define UMFPACK_triplet_to_col umfpack_zl_triplet_to_col #define UMFPACK_wsolve umfpack_zl_wsolve /* for debugging only: */ #define UMF_malloc_count umf_l_malloc_count #define UMF_debug umfzl_debug #define UMF_allocfail umfzl_allocfail #define UMF_gprob umfzl_gprob #define UMF_dump_dense umfzl_dump_dense #define UMF_dump_element umfzl_dump_element #define UMF_dump_rowcol umfzl_dump_rowcol #define UMF_dump_matrix umfzl_dump_matrix #define UMF_dump_current_front umfzl_dump_current_front #define UMF_dump_lu umfzl_dump_lu #define UMF_dump_memory umfzl_dump_memory #define UMF_dump_packed_memory umfzl_dump_packed_memory #define UMF_dump_col_matrix umfzl_dump_col_matrix #define UMF_dump_chain umfzl_dump_chain #define UMF_dump_start umfzl_dump_start #define UMF_dump_rowmerge umfzl_dump_rowmerge #define UMF_dump_diagonal_map umfzl_dump_diagonal_map #endif |