comparison liboctave/UMFPACK/UMFPACK/Doc/ChangeLog @ 5164:57077d0ddc8e

[project @ 2005-02-25 19:55:24 by jwe]
author jwe
date Fri, 25 Feb 2005 19:55:28 +0000
parents
children
comparison
equal deleted inserted replaced
5163:9f3299378193 5164:57077d0ddc8e
1 Jan. 28, 2005: v4.4 released
2
3 * bug fix: when Qinit is provided to umfpack_*_qsymbolic,
4 only the symmetric and unsymmetric strategies are now permitted.
5 The auto and 2-by-2 strategies are not allowed. In v4.3 and
6 earlier, providing Qinit and requesting the symmetric strategy
7 did not always work (you got the unsymmetric strategy instead).
8 This does not affect umfpack_*_symbolic, which computes its own
9 ordering and can use all 4 strategies (auto, symmetric, unsymmetric,
10 and 2-by-2).
11
12 * umfpack_get_determinant added.
13
14 * packed complex case added for all routines (previously only used in
15 umfpack_report_vector). This allows arrays of ANSI C/C++ complex
16 type to be passed directly to UMFPACK.
17
18 * added umf_multicomple.c to assist in the compilation of UMFPACK
19 in Microsoft Visual Studio, which does not have the required
20 flexibility of the Unix "make" command.
21
22 * local variable declarations reordered to encourage double-word
23 alignment of double's and Entry's, for better performance.
24
25 * note that with the exception of the behavior when a user-provided
26 ordering is passed to umfpack_*_qsymbolic, versions 4.1 through 4.4
27 have comparable performance (ordering quality, memory usage,
28 and run time). v4.1 is much better than v4.0 in performance.
29
30 Jan. 11, 2005: v4.3.1 released
31
32 * bug fix in umf_solve. This bug is only the 4th one found in the C
33 versions of UMFPACK to date (Version 3.0 to 4.3.1, from March 2001 to
34 Jan. 2005, excluding workarounds for quirky compilers). No bugs have
35 been reported in the last Fortran version of UMFPACK (MA38, or UMFPACK
36 V2.2.1) since its release in Jan. 1998.
37
38 In Version 4.3, a bug in umf_solve caused iterative refinement
39 to be disabled when solving A'x=b or A.'x=b after factorizing A.
40 Modified the umfpack mexFunction to factorize A and then solve A'x=b
41 when performing the operation x=b/A (as "umfpack(b,'/',A). Note that
42 this has no effect on the use of UMFPACK in MATLAB itself, since MATLAB
43 does not use the umfpack mexFunction for x=b/A. When computing x=b/A,
44 MATLAB factorizes A' and computes x=(A'\b')' instead. The following
45 source code files changed:
46
47 UMFPACK/MATLAB/umfpackmex.c (see above)
48 UMFPACK/Source/umf_solve.c (see source code: 2 lines changed)
49 UMFPACK/Include/umfpack.h (version and date changed)
50 UMFPACK/MATLAB/umfpack_test.m (new file)
51
52 Jan. 16, 2004: v4.3 released.
53
54 * user interface of v4.3 is upwardly-compatible with v4.2 and v4.1.
55 No bugs found in v4.1 (except for one workaround for an old compiler).
56 These changes add features only.
57
58 * Note that v4.0 has a bug in umf_scale_column.c. The bug was patched
59 in that version on Jan. 12, 2004. The bug does not appear in v4.1
60 and later. The bug is thus present in MATLAB 6.5, but it occurs
61 very rarely, fortunately. It can occur when dividing a nonzero entry
62 in the pivot column by the pivot value results in an underflow.
63
64 * <float.h> added to umfpackmex.c, for DBL_EPSILON. Some non-standard
65 compilers (Microsoft Visual C++) require this.
66
67 * #pragma added to umf_analyze.c, as a workaround around a bug in an
68 old Intel compiler.
69
70 * mexFunction interface to MATLAB modified. Call to mexCallMATLAB removed,
71 which can be slow. In V4.1 it was used only to get MATLAB's
72 spparms ('spumoni') value.
73
74 * The AMD mexFunction was also modified in the same way (v1.1), with
75 the call to mexCallMATLAB removed. Note that UMFPACK v4.1 through
76 v4.3 can use either AMD v1.0 or AMD v1.1.
77
78 * -DNO_DIVIDE_BY_ZERO option added. If this non-default option is enabled
79 at compile time, and if the pivot value is zero, then no division
80 occurs (zeros on the diagonal of U are treated as if they were equal
81 to one). By default, the division by zero does occur.
82
83 * -DNO_TIMER option added. If this non-default option is enabled at
84 compile time, then no timers (times ( ), clock ( ), getrusage ( ))
85 are used.
86
87 V4.2: A special release for COMSOL, Inc., only (FEMLAB)
88
89 * drop tolerance added. A few new parameters in the Control array are used,
90 and a few new Info entries.
91
92 May 6, 2003: V4.1 released.
93
94 * No bugs were found in the prior version, Version 4.0. New features
95 added only. Major changes throughout the code. User interface
96 nearly unchanged, however.
97
98 * Version 4.1 is upward-compatible with Version 4.0. The calling
99 sequence of some user-callable routines in Version 4.0 have changed
100 in this version. The routines umfpack_*_symbolic, umfpack_*_qsymbolic,
101 umfpack_*_get_symbolic, and umfpack_*_get_numeric have new arguments
102 added to them. The new arguments are optional. If you want to use
103 a calling sequence similar to v4.0, simply pass NULL pointers in
104 place of the new arguments. There are two new timing routines,
105 umfpack_tic and umfpack_toc. A new user-callable routine,
106 umfpack_*_scale, has been added.
107
108 * "auto", "unsymmetric", "symmetric", and "2-by-2" strategies added.
109 The symmetric strategy uses AMD on A+A' as the column preordering,
110 followed by a postorder of the assembly tree of A+A'. Column ordering
111 refinement is turned off, and diagonal entries are prefered as pivots.
112 V4.0 only had the unsymmetric strategy. The 2-by-2 strategy does row
113 permutations and attempts to find a zero-free diagonal while at the
114 same time maintaining structural symmetry, and then uses the
115 symmetric strategy on the permuted matrix.
116
117 * row-scaling added. The default is to divide each row by the sum of
118 the absolute values of each row. Other options are no scaling,
119 and to divide each row by the max abs value in each row.
120
121 * Matrices with upper bound memory usage greater than the maximum integer
122 (2GB for 32-bit int's) can now be factorized (assuming the actual
123 memory usage is still less than the maximum integer). With this change,
124 the UMFPACK_ERROR_problem_too_large error code is no longer returned.
125
126 * The current frontal matrix (Work->Fx) is no longer allocated as a
127 static size, via malloc. It can grow and shrink, and is allocated
128 from Numeric->Memory.
129
130 * The AMD (Version 1.0) package is now required. It is available
131 separately. To compile UMFPACK, it must appear as ../AMD if you are
132 in the main UMFPACK directory.
133
134 * The UMFPACK mexFunction now uses the internal utMalloc, utRealloc,
135 and utFree routines, by default (except on Windows).
136
137 * Three control parameters for modifying relaxed amalgamation removed.
138 These values are now fixed at compile-time.
139
140 * Many new statistics added to Info, and new control parameters added.
141
142 * The umfpack mexFunction now returns permutation matrices for P and Q,
143 not permutation vectors. It also returns the scale factors as a
144 diagonal matrix. The factorization is now L*U = P*(R\A)*Q.
145
146 * Option added for controlling the initial allocation of the workspace for
147 the current frontal matrix.
148
149 * pivot tolerance of zero treated differently. symmetric pivot tolerance
150 added.
151
152 * Makefile and GNUmakefile changed. umf_* routines with no double or
153 complex values are now compiled just twice (int and long versions)
154 rather than 4 times.
155
156 * New routines added to save and load the Numeric and Symbolic objects
157 to/from binary files.
158
159 * Simple Fortran interface added.
160
161 Apr 11, 2002:
162
163 * Version 4.0 released.
164
165 * bug fix: the Microsoft compiler doesn't handle NaN's properly.
166 utIsNaN, and other ut* routines, added for MathWorks version
167 to handle this properly.
168
169 Apr 1, 2002:
170
171 * bug fix: if a column was all NaN's, then UMFPACK would fail
172 to find a pivot row. umf_row_search.c and umf_internal.h
173 modified to fix this problem.
174
175 Mar 9, 2002: V4.0beta released
176
177 * Map argument added to umfpack_*_triplet_to_col. New files
178 (umf_triplet.[ch]) added.
179 * minor changes made so that UMFPACK can be compiled with g++
180 * additional error checking added to umfpack_*_numeric, for
181 detecting more changes in pattern (Ap, Ai) since last
182 call to umfpack_*_symbolic
183
184 Feb 21, 2002:
185
186 * User Guide explains the Makefile vs. GNUmakefile
187
188 * umf_config.h modified, so that the complex SCSL C-BLAS uses
189 (void *) arguments instead of (scsl_zomplex *). gcc generates
190 some spurious warnings (cc doesn't complain). Affects the SGI
191 IRIX only.
192
193 * ported to Compaq Alpha
194
195 Feb 20, 2002: V4.0 (alpha) released.
196
197 * V4.0 not yet ported to the Compaq Alpha (V3.2 was ported).
198
199 Feb 6 to Feb 19, 2002:
200
201 * Relaxed restrictions on sizes of arrays for umfpack_*_transpose and
202 umfpack_*_triplet_to_col. Size of "max(n,nz)" now just size nz.
203
204 * workspace for umfpack_*_wsolve increased in size.
205
206 * two user arrays for umfpack_*_get_symbolic increased in size,
207 by 1 (Chain_maxrows, Chain_maxcols).
208
209 * lu_normest.m added.
210
211 Jan 18 to Feb 5, 2002:
212
213 * The matrix A can be complex, singular, and/or rectangular.
214 The solve step that uses the LU factors can only handle
215 matrices that are complex or real, singuluar or non-singular,
216 and *** square ***, however.
217
218 * Estimate of the condition number computed:
219 (min (abs (diag (U))) / (max (abs (diag (U)))))
220
221 * Forward/backsolves can solve with A.' as well as A'.
222
223 * char * arguments removed from user-callable routines to make it
224 easier for Fortran to call UMFPACK. No Fortran interface is (yet)
225 provided, however.
226
227 The solve codes for umfpack_*_*solve changed to #define'd
228 integers:
229
230 UMFPACK_A Ax=b
231 UMFPACK_At A'x=b
232 UMFPACK_Aat A.'x=b
233 UMFPACK_Pt_L P'Lx=b
234 UMFPACK_L Lx=b
235 UMFPACK_Lt_P L'Px=b
236 UMFPACK_Lat_P L.'Px=b
237 UMFPACK_Lt L'x=b
238 UMFPACK_U_Qt UQ'x=b
239 UMFPACK_U Ux=b
240 UMFPACK_Q_Ut QU'x=b
241 UMFPACK_Q_Uat QU.'x=b
242 UMFPACK_Ut U'x=b
243 UMFPACK_Uat U.'x=b
244
245 All arguments are now either int, long scalars (pass by value),
246 or int, long, double arrays (pass by reference), or void * pointers
247 (pass by value or reference). A void * pointer is of size 32 or 64
248 bits on most machines. There is no need for the caller (C or Fortran)
249 to dereference the void * pointers, so these can be treated as
250 integer*4 or integer*8 in Fortran. A Fortran interface would have to
251 have all arguments passed by reference.
252
253 * All user-callable routine names changed. The four sets are now:
254 umfpack_di_* real (double precision), int's as integers
255 umfpack_dl_* real (double precision), longs's as integers
256 umfpack_zi_* real (double precision), int's as integers
257 umfpack_zl_* real (double precision), longs's as integers
258
259 * Ptree (row preordering) and info on pivotal rows for each front
260 added to Symbolic object (extracted by umfpack_*_get_symbolic).
261 Ptree added as output argument to "umfpack (A, 'symbolic')"
262 mexFunction.
263
264 * umfpack_*_transpose can do A' or A.'
265
266 * umfpack_wsolve.c file removed (now generated from umfpack_solve.c).
267
268 * Can now extract just the diagonal of U with umfpack_*_get_numeric,
269 without having to extract the entire matrix U.
270
271 * UMFPACK_ERROR_singular_matrix (-2) removed.
272
273 * UMFPACK_WARNING_singular_matrix (1) added.
274
275 * Control [UMFPACK_PIVOT_OPTION] removed. No longer any symmetric
276 pivot option (conflicts with the handling of singular and
277 rectangular matrices).
278
279 * Iterative refinement can do Ax=b, A'x=b, or A.'x=b.
280
281 * Most floating-point operations done in macros, to support the complex
282 versions.
283
284 * Info [UMFPACK_N] is now Info [UMFPACK_NROW]
285
286 * Info [UMFPACK_NCOL], Info [UMFPACK_UDIAG_NZ], Info [UMFPACK_UDIAG_NZ]
287 added.
288
289 * umfpack_* routines with "n" as input now use two arguments,
290 n_row and n_col.
291
292 * umfpack mexFunction now explicitly transposes A for b/A. It computes
293 it using the array transpose as (A.'\b.').'
294
295 January 1, 2002: UMFPACK Version 3.2 released. Submitted to ACM Trans.
296 on Mathematical Software.
297
298 * The umfpack mexFunction now returns the Info array when the matrix
299 is singular. Returned an empty array prior to this change.
300
301 * Renamed variable that conflicted with system library routines
302 (system and j1).
303
304 * Added a #ifdef MATHWORKS definition, so the built-in UMFPACK routine
305 (in a future release of MATLAB) can use the internal ut* memory
306 allocation routines, ut* assertion routine, and utPrintf.
307
308 * MAX and MIN are not defined if they are already defined.
309
310 * A bug fix in umf_kernel_init (a variable was not properly initialized).
311
312 * Removed unused variables.
313
314 October 8, 2001: UMFPACK Version 3.1 released.
315
316 August-October, 2001:
317
318 * added umfpack_btf M-file.
319
320 * modified the BLAS update in the frontal matrix. If there are only
321 a few pivots in remaining in the current front, then the BLAS3 update
322 is delayed to include pivots in the next front.
323
324 * Removed the special-case handling of dense columns from the numerical
325 factorization (kept it in the colamd preordering). This improves the
326 performance of UMFPACK on dense matrices by a factor of 5 or so, and
327 simplifies the code.
328
329 * Added a symmetric-preference pivoting option. The option slightly
330 (but uniformly) improves the ordering when factorizing matrices with
331 symmetric nonzero pattern. That class of matrix is better handled by
332 the symmetric-pattern multifrontal method (MA41 in the Harwell
333 Subroutine Library), however.
334
335 * Fixed the detection of integer overflow. The 32-bit version cannot
336 make use of more than 2GB of main memory (use the 64-bit version
337 in that case, instead). The 32-bit version did not correctly detect
338 when it was trying to factorize too large of a matrix.
339
340 May 4, 2001:
341
342 * SGI port extended. It can now call the SCSL Scientific Library, with
343 64-bit BLAS. Make.sgi and umf_config.h modified.
344
345 April 30, 2001: UMFPACK Version 3.0 released. Changes since 3.0Beta release:
346
347 * Long integer version added (umfpack_l_* user-callable routines).
348
349 * Peak memory usage in the numerical factorization reduced by a total of
350 12n integers (8n temporary workspace used during numerical factorization,
351 and 4n for the permanent LU factors which was allocated
352 at the beginning of factorization).
353
354 * Ported to the IBM RS 6000 and Compaq Alpha, with help from Anshul Gupta
355 and Friedrich Grund, respectively.
356
357 * 64-bit version added. Uses dgemm_64, dgemv_64, and dger_64 in the Sun
358 Performance Library. 64-bit versions with the BLAS might not work on
359 any other platform, because they take int's as their integer input
360 arguments instead of long's. Unfortunately, the proposed ANSI
361 definition of the C-BLAS also uses int's as input integer arguments.
362 It ought to use long's, or include a version that uses long's, just
363 like the Sun Performance Library BLAS.
364
365 * Additional statistics returned in Info:
366 Info [UMFPACK_SIZE_OF_INT] sizeof (int)
367 Info [UMFPACK_SIZE_OF_LONG] sizeof (long)
368 Info [UMFPACK_SIZE_OF_POINTER] sizeof (void *)
369 Info [UMFPACK_SIZE_OF_ENTRY] (was Info [UMFPACK_WORD])
370 Info [UMFPACK_MAX_FRONT_SIZE_ESTIMATE] est. front matrix size
371 Info [UMFPACK_MAX_FRONT_SIZE] actual max frontal matrix size.
372 Contents of Info rearranged.
373
374 * UMFPACK_ERROR_bad_configurution error code replaced with
375 UMFPACK_ERROR_problem_too_large error code. The "bad configuration"
376 error occured when sizeof (int) < sizeof (size_t). Now, the int
377 version of UMFPACK can use 32-bit int's and 64-bit pointers, and the
378 long version can use 64-bit long's and 64-bit pointers. Both versions
379 check to see if the array sizes allocated are larger than what can be
380 accessed by an integer index variable (int or long, depending on the
381 version), and returns UMFPACK_ERROR_problem_too_large if they become
382 too large.
383
384 March 15, 2001: UMFPACK Version 3.0Beta released.
385