1Oct 20, 2019: version 5.7.9 2 3 * update to Makefile, Tcov, and MATLAB: BLAS and LAPACK libraries 4 * Tcov/ut.c: avoiding compiler warnings 5 6Nov 9, 2018: version 5.7.8 7 8 * minor change to umf_analyze.h 9 10Mar 23, 2018: version 5.7.7 11 12 * revised comments in umfpack*symbolic.h 13 14May 4, 2016: version 5.7.6 15 16 * minor changes to Makefile 17 18Apr 1, 2016: version 5.7.5 19 20 * licensing simplified (no other change); refer to UMFPACK/Doc/License.txt 21 22Feb 1, 2016: version 5.7.4 23 24 * update to Makefiles 25 26Jan 30, 2016: version 5.7.3 27 28 * better Makefiles for creating and installing shared libraries 29 * minor MATLAB cleanup. Renamed umfpack mexFunction to back to umfpack, 30 from umfpack2, since it no longer clashes with a MATLAB function 31 of the same name. The umfpack2.m file is still present; it just 32 calls umfpack.m. 33 34Jan 1, 2016: version 5.7.2 35 36 * modified Makefile to create shared libraries 37 No change to C code except version number 38 39Oct 10, 2014: version 5.7.1 40 41 modified MATLAB/umfpack_make.m. No change to C code except version number. 42 43July 31, 2013: version 5.7.0 44 45 * changed malloc, printf, hypot and divcomplex pointers to use 46 SuiteSparse_config 47 48April 25, 2013: version 5.6.2 49 50 * bug fix in Demo/Makefile for Fortran interface 51 52Jun 20, 2012: verison 5.6.1 53 54 * minor update for Windows (removed filesep) 55 56Jun 1, 2012: version 5.6.0 57 58 * UFconfig replaced with SuiteSparse_config 59 * -DNO_TIMER option removed. See SuiteSparse_config to configure the timer. 60 61Dec 7, 2011, version 5.5.2 62 63 * fixed the Makefile to better align with CFLAGS and other standards 64 * minor fix to umfpack_make.m 65 * Makefile now detects whether or not METIS is present, and 66 sets -DNPARTITION if it is not 67 68Jan 25, 2011, version 5.5.1 69 70 * minor fix to "make install" 71 * Demo/Makefile updated, to allow for METIS to be in a non-default path 72 73Nov 30, 2009, version 5.5.0 74 75 * changed and simplified how UMFPACK connects to 64-bit BLAS 76 * added user-ordering function option (umfpack_*_fsymbolic) 77 * added interface to CHOLMOD's ordering methods (METIS, in particular) 78 * added an option to disable the search for singletons. Disabling this 79 search for singletons can slow UMFPACK down quite a bit for some 80 matrices, but it does ensure that L is well-conditioned and that 81 any ill-conditioning of A is captured only in U. 82 * removed UMFPACK/MATLAB/ makefiles 83 to compile the UMFPACK mexFunction, use umfpack_make.m in MATLAB. 84 * added "make install" and "make uninstall" 85 86May 20, 2009, version 5.4.0 87 88 * bug fix in umfpack_make.m for Windows 89 * disabled 2-by-2 strategy. It conflicts with how structurally singular 90 matrices are handled. 91 92March 24, 2009, version 5.3.0 93 94 * bug fix for 2-by-2 strategy (diagonal map) for structurally singular 95 matrices 96 97 * compiler workaround for gcc 4.2.{3,4} in umf_singletons.c 98 99 * added additional timer options in umfpack_timer.c (for POSIX) 100 101Sept 22, 2008 102 103 * minor update to documentation; no change to code 104 105Nov 1, 2007, version 5.2.0 106 107 * change of default license. This is the primary change to 108 this version. 109 110 * minor lint cleanup 111 112 * port to MATLAB 7.5 (added -lmwblas to mex command) 113 114 * added info output to the umfpack_btf command. 115 116May 31, 2007, version 5.1.0 117 118 * port to 64-bit MATLAB 119 120 * Makefiles updated to reflect directory changes to AMD (UMFPACK v5.1.0 121 requires AMD v2.2.0) 122 123 * Makefiles moved to Lib/ 124 125Dec 12, 2006: version 5.0.3 126 127 * minor MATLAB cleanup. Renamed umfpack mexFunction to umfpack2, to avoid 128 filename clash with the built-in version of umfpack. 129 130Dec 2, 2006, version 5.0.2 131 132 * minor change to umfpack_report_info: does not print timings less 133 than 0.001 seconds. 134 135 * bug fix for complex case when using a non-gcc compiler (simplified the 136 scaling of the pivot column). Does not affect the use of UMFPACK in 137 MATLAB. 138 139Aug 31, 2006, version 5.0.1 140 141 * Minor correction to comments in umfpack_get_numeric.h. 142 143May 5, 2006, version 5.0 144 145 * Tcov subdirectory added. This has existed since the first C version of 146 UMFPACK, but is only now included in the released version. It provides 147 a near 100% test coverage for UMFPACK. The code isn't pretty, but it 148 works. 149 150 * now uses CHOLMOD's method for interfacing to the BLAS, including the 151 BLAS_INT definition. This way, the UF_long version of UMFPACK can 152 call the int BLAS. 153 154 * revised to use AMD v2.0 155 156Apr 7, 2006 157 158 * Minor correction to UMFPACK/Source/Makefile, for those who 159 a basic 'make' command. No change to version number, because 160 no code was modified. 161 162Oct 10, 2005, version 4.6 163 164 * umf_solve.c modified for the complex case. A, X, and b can be 165 split complex or unsplit. Prior version required the form of 166 A, X, and B to be identical (all split or all unsplit). 167 (Thanks to David Bateman). 168 169 * added Cygwin to architecture detection. 170 171 * added UMFPACK_SUBSUB_VERSION 172 173Aug. 30, 2005: v4.5 released 174 175 * default License changed 176 177 * The Make/ directory removed; configurations are now in ../UFconfig. 178 179 * requires AMD v1.2 or later 180 181 * added UMFPACK_MAIN_VERSION and UMFPACK_SUB_VERSION, defined as 4 and 5, 182 respectively, for version 4.5. These macros will be updated for all 183 future versions. See Include/umfpack.h for details. 184 185 * function pointers used for malloc, free, calloc, realloc, printf, 186 hypot, and complex divide. Defined in AMD/Source/amd_global.c, 187 AMD/Source/amd_internal.h, UMFPACK/Source/umfpack_global.c, 188 and UMFPACK/Include/umfpack_global.h. 189 Compile-time dependence on The MathWorks "util.h", ut* routines 190 and ut* macros removed. 191 192Jan. 28, 2005: v4.4 released 193 194 * bug fix: when Qinit is provided to umfpack_*_qsymbolic, 195 only the symmetric and unsymmetric strategies are now permitted. 196 The auto and 2-by-2 strategies are not allowed. In v4.3 and 197 earlier, providing Qinit and requesting the symmetric strategy 198 did not always work (you got the unsymmetric strategy instead). 199 This does not affect umfpack_*_symbolic, which computes its own 200 ordering and can use all 4 strategies (auto, symmetric, unsymmetric, 201 and 2-by-2). 202 203 * umfpack_get_determinant added. (Thanks to David Bateman). 204 205 * packed complex case added for all routines (previously only used in 206 umfpack_report_vector). This allows arrays of ANSI C/C++ complex 207 type to be passed directly to UMFPACK. 208 209 * added umf_multicomple.c to assist in the compilation of UMFPACK 210 in Microsoft Visual Studio, which does not have the required 211 flexibility of the Unix "make" command. 212 213 * local variable declarations reordered to encourage double-word 214 alignment of double's and Entry's, for better performance. 215 216 * note that with the exception of the behavior when a user-provided 217 ordering is passed to umfpack_*_qsymbolic, versions 4.1 through 4.4 218 have comparable performance (ordering quality, memory usage, 219 and run time). v4.1 is much better than v4.0 in performance. 220 221Jan. 11, 2005: v4.3.1 released 222 223 * bug fix in umf_solve. This bug is only the 4th one found in the C 224 versions of UMFPACK to date (Version 3.0 to 4.3.1, from March 2001 to 225 Jan. 2005, excluding workarounds for quirky compilers). No bugs have 226 been reported in the last Fortran version of UMFPACK (MA38, or UMFPACK 227 V2.2.1) since its release in Jan. 1998. 228 229 In Version 4.3, a bug in umf_solve caused iterative refinement 230 to be disabled when solving A'x=b or A.'x=b after factorizing A. 231 Modified the umfpack mexFunction to factorize A and then solve A'x=b 232 when performing the operation x=b/A (as "umfpack(b,'/',A). Note that 233 this has no effect on the use of UMFPACK in MATLAB itself, since MATLAB 234 does not use the umfpack mexFunction for x=b/A. When computing x=b/A, 235 MATLAB factorizes A' and computes x=(A'\b')' instead. The following 236 source code files changed: 237 238 UMFPACK/MATLAB/umfpackmex.c (see above) 239 UMFPACK/Source/umf_solve.c (see source code: 2 lines changed) 240 UMFPACK/Include/umfpack.h (version and date changed) 241 UMFPACK/MATLAB/umfpack_test.m (new file) 242 243Jan. 16, 2004: v4.3 released. 244 245 * user interface of v4.3 is upwardly-compatible with v4.2 and v4.1. 246 No bugs found in v4.1 (except for one workaround for an old compiler). 247 These changes add features only. 248 249 * Note that v4.0 has a bug in umf_scale_column.c. The bug was patched 250 in that version on Jan. 12, 2004. The bug does not appear in v4.1 251 and later. The bug is thus present in MATLAB 6.5, but it occurs 252 very rarely, fortunately. It can occur when dividing a nonzero entry 253 in the pivot column by the pivot value results in an underflow. 254 255 * <float.h> added to umfpackmex.c, for DBL_EPSILON. Some non-standard 256 compilers (Microsoft Visual C++) require this. 257 258 * #pragma added to umf_analyze.c, as a workaround around a bug in an 259 old Intel compiler. 260 261 * mexFunction interface to MATLAB modified. Call to mexCallMATLAB removed, 262 which can be slow. In V4.1 it was used only to get MATLAB's 263 spparms ('spumoni') value. 264 265 * The AMD mexFunction was also modified in the same way (v1.1), with 266 the call to mexCallMATLAB removed. Note that UMFPACK v4.1 through 267 v4.3 can use either AMD v1.0 or AMD v1.1. 268 269 * -DNO_DIVIDE_BY_ZERO option added. If this non-default option is enabled 270 at compile time, and if the pivot value is zero, then no division 271 occurs (zeros on the diagonal of U are treated as if they were equal 272 to one). By default, the division by zero does occur. 273 274 * -DNO_TIMER option added. If this non-default option is enabled at 275 compile time, then no timers (times ( ), clock ( ), getrusage ( )) 276 are used. 277 278V4.2: A special release for COMSOL, Inc., only (FEMLAB) 279 280 * drop tolerance added. A few new parameters in the Control array are used, 281 and a few new Info entries. 282 283May 6, 2003: V4.1 released. 284 285 * No bugs were found in the prior version, Version 4.0. New features 286 added only. Major changes throughout the code. User interface 287 nearly unchanged, however. 288 289 * Version 4.1 is upward-compatible with Version 4.0. The calling 290 sequence of some user-callable routines in Version 4.0 have changed 291 in this version. The routines umfpack_*_symbolic, umfpack_*_qsymbolic, 292 umfpack_*_get_symbolic, and umfpack_*_get_numeric have new arguments 293 added to them. The new arguments are optional. If you want to use 294 a calling sequence similar to v4.0, simply pass NULL pointers in 295 place of the new arguments. There are two new timing routines, 296 umfpack_tic and umfpack_toc. A new user-callable routine, 297 umfpack_*_scale, has been added. 298 299 * "auto", "unsymmetric", "symmetric", and "2-by-2" strategies added. 300 The symmetric strategy uses AMD on A+A' as the column preordering, 301 followed by a postorder of the assembly tree of A+A'. Column ordering 302 refinement is turned off, and diagonal entries are prefered as pivots. 303 V4.0 only had the unsymmetric strategy. The 2-by-2 strategy does row 304 permutations and attempts to find a zero-free diagonal while at the 305 same time maintaining structural symmetry, and then uses the 306 symmetric strategy on the permuted matrix. 307 308 * row-scaling added. The default is to divide each row by the sum of 309 the absolute values of each row. Other options are no scaling, 310 and to divide each row by the max abs value in each row. 311 312 * Matrices with upper bound memory usage greater than the maximum integer 313 (2GB for 32-bit int's) can now be factorized (assuming the actual 314 memory usage is still less than the maximum integer). With this change, 315 the UMFPACK_ERROR_problem_too_large error code is no longer returned. 316 317 * The current frontal matrix (Work->Fx) is no longer allocated as a 318 static size, via malloc. It can grow and shrink, and is allocated 319 from Numeric->Memory. 320 321 * The AMD (Version 1.0) package is now required. It is available 322 separately. To compile UMFPACK, it must appear as ../AMD if you are 323 in the main UMFPACK directory. 324 325 * The UMFPACK mexFunction now uses the internal utMalloc, utRealloc, 326 and utFree routines, by default (except on Windows). 327 328 * Three control parameters for modifying relaxed amalgamation removed. 329 These values are now fixed at compile-time. 330 331 * Many new statistics added to Info, and new control parameters added. 332 333 * The umfpack mexFunction now returns permutation matrices for P and Q, 334 not permutation vectors. It also returns the scale factors as a 335 diagonal matrix. The factorization is now L*U = P*(R\A)*Q. 336 337 * Option added for controlling the initial allocation of the workspace for 338 the current frontal matrix. 339 340 * pivot tolerance of zero treated differently. symmetric pivot tolerance 341 added. 342 343 * Makefiles changed. umf_* routines with no double or 344 complex values are now compiled just twice (int and long versions) 345 rather than 4 times. 346 347 * New routines added to save and load the Numeric and Symbolic objects 348 to/from binary files. 349 350 * Simple Fortran interface added. 351 352Apr 11, 2002: 353 354 * Version 4.0 released. 355 356 * bug fix: the Microsoft compiler doesn't handle NaN's properly. 357 utIsNaN, and other ut* routines, added for MathWorks version 358 to handle this properly. 359 360Apr 1, 2002: 361 362 * bug fix: if a column was all NaN's, then UMFPACK would fail 363 to find a pivot row. umf_row_search.c and umf_internal.h 364 modified to fix this problem. 365 366Mar 9, 2002: V4.0beta released 367 368 * Map argument added to umfpack_*_triplet_to_col. New files 369 (umf_triplet.[ch]) added. 370 * minor changes made so that UMFPACK can be compiled with g++ 371 * additional error checking added to umfpack_*_numeric, for 372 detecting more changes in pattern (Ap, Ai) since last 373 call to umfpack_*_symbolic 374 375Feb 21, 2002: 376 377 * User Guide explains the two Makefiles 378 379 * umf_config.h modified, so that the complex SCSL C-BLAS uses 380 (void *) arguments instead of (scsl_zomplex *). gcc generates 381 some spurious warnings (cc doesn't complain). Affects the SGI 382 IRIX only. 383 384 * ported to Compaq Alpha 385 386Feb 20, 2002: V4.0 (alpha) released. 387 388 * V4.0 not yet ported to the Compaq Alpha (V3.2 was ported). 389 390Feb 6 to Feb 19, 2002: 391 392 * Relaxed restrictions on sizes of arrays for umfpack_*_transpose and 393 umfpack_*_triplet_to_col. Size of "max(n,nz)" now just size nz. 394 395 * workspace for umfpack_*_wsolve increased in size. 396 397 * two user arrays for umfpack_*_get_symbolic increased in size, 398 by 1 (Chain_maxrows, Chain_maxcols). 399 400 * lu_normest.m added. 401 402Jan 18 to Feb 5, 2002: 403 404 * The matrix A can be complex, singular, and/or rectangular. 405 The solve step that uses the LU factors can only handle 406 matrices that are complex or real, singuluar or non-singular, 407 and *** square ***, however. 408 409 * Estimate of the condition number computed: 410 (min (abs (diag (U))) / (max (abs (diag (U))))) 411 412 * Forward/backsolves can solve with A.' as well as A'. 413 414 * char * arguments removed from user-callable routines to make it 415 easier for Fortran to call UMFPACK. No Fortran interface is (yet) 416 provided, however. 417 418 The solve codes for umfpack_*_*solve changed to #define'd 419 integers: 420 421 UMFPACK_A Ax=b 422 UMFPACK_At A'x=b 423 UMFPACK_Aat A.'x=b 424 UMFPACK_Pt_L P'Lx=b 425 UMFPACK_L Lx=b 426 UMFPACK_Lt_P L'Px=b 427 UMFPACK_Lat_P L.'Px=b 428 UMFPACK_Lt L'x=b 429 UMFPACK_U_Qt UQ'x=b 430 UMFPACK_U Ux=b 431 UMFPACK_Q_Ut QU'x=b 432 UMFPACK_Q_Uat QU.'x=b 433 UMFPACK_Ut U'x=b 434 UMFPACK_Uat U.'x=b 435 436 All arguments are now either int, long scalars (pass by value), 437 or int, long, double arrays (pass by reference), or void * pointers 438 (pass by value or reference). A void * pointer is of size 32 or 64 439 bits on most machines. There is no need for the caller (C or Fortran) 440 to dereference the void * pointers, so these can be treated as 441 integer*4 or integer*8 in Fortran. A Fortran interface would have to 442 have all arguments passed by reference. 443 444 * All user-callable routine names changed. The four sets are now: 445 umfpack_di_* real (double precision), int's as integers 446 umfpack_dl_* real (double precision), longs's as integers 447 umfpack_zi_* real (double precision), int's as integers 448 umfpack_zl_* real (double precision), longs's as integers 449 450 * Ptree (row preordering) and info on pivotal rows for each front 451 added to Symbolic object (extracted by umfpack_*_get_symbolic). 452 Ptree added as output argument to "umfpack (A, 'symbolic')" 453 mexFunction. 454 455 * umfpack_*_transpose can do A' or A.' 456 457 * umfpack_wsolve.c file removed (now generated from umfpack_solve.c). 458 459 * Can now extract just the diagonal of U with umfpack_*_get_numeric, 460 without having to extract the entire matrix U. 461 462 * UMFPACK_ERROR_singular_matrix (-2) removed. 463 464 * UMFPACK_WARNING_singular_matrix (1) added. 465 466 * Control [UMFPACK_PIVOT_OPTION] removed. No longer any symmetric 467 pivot option (conflicts with the handling of singular and 468 rectangular matrices). 469 470 * Iterative refinement can do Ax=b, A'x=b, or A.'x=b. 471 472 * Most floating-point operations done in macros, to support the complex 473 versions. 474 475 * Info [UMFPACK_N] is now Info [UMFPACK_NROW] 476 477 * Info [UMFPACK_NCOL], Info [UMFPACK_UDIAG_NZ], Info [UMFPACK_UDIAG_NZ] 478 added. 479 480 * umfpack_* routines with "n" as input now use two arguments, 481 n_row and n_col. 482 483 * umfpack mexFunction now explicitly transposes A for b/A. It computes 484 it using the array transpose as (A.'\b.').' 485 486January 1, 2002: UMFPACK Version 3.2 released. Submitted to ACM Trans. 487 on Mathematical Software. 488 489 * The umfpack mexFunction now returns the Info array when the matrix 490 is singular. Returned an empty array prior to this change. 491 492 * Renamed variable that conflicted with system library routines 493 (system and j1). 494 495 * Added a #ifdef MATHWORKS definition, so the built-in UMFPACK routine 496 (in a future release of MATLAB) can use the internal ut* memory 497 allocation routines, ut* assertion routine, and utPrintf. 498 499 * MAX and MIN are not defined if they are already defined. 500 501 * A bug fix in umf_kernel_init (a variable was not properly initialized). 502 503 * Removed unused variables. 504 505October 8, 2001: UMFPACK Version 3.1 released. 506 507August-October, 2001: 508 509 * added umfpack_btf M-file. 510 511 * modified the BLAS update in the frontal matrix. If there are only 512 a few pivots in remaining in the current front, then the BLAS3 update 513 is delayed to include pivots in the next front. 514 515 * Removed the special-case handling of dense columns from the numerical 516 factorization (kept it in the colamd preordering). This improves the 517 performance of UMFPACK on dense matrices by a factor of 5 or so, and 518 simplifies the code. 519 520 * Added a symmetric-preference pivoting option. The option slightly 521 (but uniformly) improves the ordering when factorizing matrices with 522 symmetric nonzero pattern. That class of matrix is better handled by 523 the symmetric-pattern multifrontal method (MA41 in the Harwell 524 Subroutine Library), however. 525 526 * Fixed the detection of integer overflow. The 32-bit version cannot 527 make use of more than 2GB of main memory (use the 64-bit version 528 in that case, instead). The 32-bit version did not correctly detect 529 when it was trying to factorize too large of a matrix. 530 531May 4, 2001: 532 533 * SGI port extended. It can now call the SCSL Scientific Library, with 534 64-bit BLAS. Make.sgi and umf_config.h modified. 535 536April 30, 2001: UMFPACK Version 3.0 released. Changes since 3.0Beta release: 537 538 * long integer version added (umfpack_l_* user-callable routines). 539 540 * Peak memory usage in the numerical factorization reduced by a total of 541 12n integers (8n temporary workspace used during numerical factorization, 542 and 4n for the permanent LU factors which was allocated 543 at the beginning of factorization). 544 545 * Ported to the IBM RS 6000 and Compaq Alpha, with help from Anshul Gupta 546 and Friedrich Grund, respectively. 547 548 * 64-bit version added. Uses dgemm_64, dgemv_64, and dger_64 in the Sun 549 Performance Library. 64-bit versions with the BLAS might not work on 550 any other platform, because they take int's as their integer input 551 arguments instead of long's. Unfortunately, the proposed ANSI 552 definition of the C-BLAS also uses int's as input integer arguments. 553 It ought to use long's, or include a version that uses long's, just 554 like the Sun Performance Library BLAS. 555 556 * Additional statistics returned in Info: 557 Info [UMFPACK_SIZE_OF_INT] sizeof (int) 558 Info [UMFPACK_SIZE_OF_LONG] sizeof (long) 559 Info [UMFPACK_SIZE_OF_POINTER] sizeof (void *) 560 Info [UMFPACK_SIZE_OF_ENTRY] (was Info [UMFPACK_WORD]) 561 Info [UMFPACK_MAX_FRONT_SIZE_ESTIMATE] est. front matrix size 562 Info [UMFPACK_MAX_FRONT_SIZE] actual max frontal matrix size. 563 Contents of Info rearranged. 564 565 * UMFPACK_ERROR_bad_configurution error code replaced with 566 UMFPACK_ERROR_problem_too_large error code. The "bad configuration" 567 error occured when sizeof (int) < sizeof (size_t). Now, the int 568 version of UMFPACK can use 32-bit int's and 64-bit pointers, and the 569 long version can use 64-bit long's and 64-bit pointers. Both versions 570 check to see if the array sizes allocated are larger than what can be 571 accessed by an integer index variable (int or long, depending on the 572 version), and returns UMFPACK_ERROR_problem_too_large if they become 573 too large. 574 575March 15, 2001: UMFPACK Version 3.0Beta released. 576 577