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