Mercurial > octave-nkf
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 |