3
* Update to UFget. Now relies on the MATLAB urlwrite function instead of
8
* Added UFgrep to UFget toolbox.
10
* No changes to C Source code, except for version number and date.
12
* Added two test matrices: ibm32a and ibm32b. ibm32ais the Harwell/
13
Boeing matrix ibm32, but with the last column removed. ibm32b
14
is the transpose of ibm32a. With optimization enabled (-O),
15
2 lines in cs_maxtrans.c are not tested; these matrices correct
18
* Fixed UFget. Earlier version could not download matrices larger than
21
* Modified UFget/UFweb, to reflect changes in the UF Sparse Matrix
24
* Added ccspy.m and cs_scc2.m MATLAB functions
26
* Added examples to help info in each *.m MATLAB file
28
* modified cs_dmspy to speed up the plotting of large matrices with many
31
* minor change to cspy: now draws a box around the matrix.
33
* minor changes to MATLAB demos and tests.
37
* minor modification to cs_updown.c. "n" was incorrectly declared "double".
38
It should be "int". This was safe, just a little confusing (n was only
39
used in an argument to cs_malloc, and is thus typecast).
43
* minor modifications to MATLAB interface, to allow CSparse to be used
46
* added examples to m-files, other minor m-file cleanup.
48
* bug fix to cspy, to handle NaN's properly.
52
* change to cs_updown mexFunction, to handle multiple rank updates
54
* symbolic links removed from Tcov/ directory in the distribution.
55
They are now created by Tcov/Makefile as needed. This makes the
56
zip files cleaner. Tcov/*test.c test files renamed.
60
* minor fix to cs_must_compile.m and cs_make.m, to allow CSparse to be
61
compiled in MATLAB 6.5 with cs_make.
63
* minor fix to cspy for complex matrices (imaginary part was ignored).
65
* no change to version number or date, since there are no changes that
66
affect the appearance of CSparse in the book ("Direct Methods for
67
Sparse Linear Systems", SIAM, 2006).
71
* minor typos in comments corrected. No change in code itself,
72
and no change in version number or date.
76
* minor bug fix. cs_util.c modified, so that cs_sprealloc (T,0) works
77
properly for a triplet matrix T (setting T->nzmax equal to T->nz).
80
nzmax = (nzmax <= 0) ? (A->p [A->n]) : nzmax ;
82
changes to the following in v2.0.1:
84
if (nzmax <= 0) nzmax = (CS_CSC (A)) ? (A->p [A->n]) : A->nz ;
86
* minor typographical changes arising from the editting of the book.
90
* random permutation option added to cs_maxtrans and cs_dmperm, to help
91
avoid rare cases where the O(|A|n) time complexity is reached in
92
practice (GHS_indef/boyd2 in the UF sparse matrix collection, for
93
example). New cs_randperm function added.
97
* stylistic changes for the book (except for the bug fix):
99
* "int order" parameter of cs_amd, cs_lusol, cs_cholsol, cs_qrsol, cs_sqr,
100
cs_schol changed. Now 0 means no ordering, 1 is A+A', 2 is S*S', and
101
3 is A*A'. In v1.2 and earlier, "order" took on a value ranging from
102
-1 to 2. "int n" parameter rearranged for cs_ipvec, cs_pvec, cs_post
103
(int n moved to the end). cs_triplet renamed cs_compress.
105
To ensure that these changes are propagated into user code that calls
106
CSparse, the "order" parameter has been placed as the first parameter
107
in all these routines. Your compiler will complain (gcc will halt) if
108
you upgrade from v1.2 to v2.0 without changing your code. This is much
109
better than a silent error in which you get the wrong ordering by
110
mistake (with a huge penalty in run-time performance and no compiler
113
New syntax (v2.0 and later):
114
----------------------------
116
order = 0: natural ordering
117
order = 1: amd (A+A')
118
order = 2: amd (S'*S), where S=A except dense rows dropped
119
order = 3: amd (A'*A)
121
int cs_cholsol (int order, const cs *A, double *b) ;
122
int cs_lusol (int order, const cs *A, double *b, double tol) ;
123
int cs_qrsol (int order, const cs *A, double *b) ;
124
int *cs_amd (int order, const cs *A) ;
125
css *cs_schol (int order, const cs *A) ;
126
css *cs_sqr (int order, const cs *A, int qr) ;
128
int *cs_post (const int *parent, int n) ;
129
int cs_ipvec (const int *p, const double *b, double *x, int n) ;
130
int cs_pvec (const int *p, const double *b, double *x, int n) ;
132
cs *cs_compress (const cs *T) ;
134
Old syntax (v1.2 and earlier):
135
------------------------------
137
order = -1: natural ordering
138
order = 0: amd (A+A')
139
order = 1: amd (S'*S), where S=A except dense rows dropped
140
order = 2: amd (A'*A)
142
int cs_cholsol (const cs *A, double *b, int order) ;
143
int cs_lusol (const cs *A, double *b, int order, double tol) ;
144
int cs_qrsol (const cs *A, double *b, int order) ;
145
int *cs_amd (const cs *A, int order) ;
146
css *cs_schol (const cs *A, int order) ;
147
css *cs_sqr (const cs *A, int order, int qr) ;
149
int *cs_post (int n, const int *parent) ;
150
int cs_ipvec (int n, const int *p, const double *b, double *x) ;
151
int cs_pvec (int n, const int *p, const double *b, double *x) ;
153
cs *cs_triplet (const cs *T) ;
155
* CS_OVERFLOW macro removed (removed from cs_malloc.c; not needed).
157
* S->leftmost added to css (it was tacked onto S->pinv before).
159
* P,Q,R,S components of csd struct changed to p,q,r,s.
161
* Pinv and Q components of css struct changed to pinv and q.
163
* CS_CSC and CS_TRIPLET macros added, to clarify which CSparse functions
164
accept cs matrices in compressed column form, triplet form, or both.
166
* check for negative row/column indices added to cs_entry.
168
* cs_ereach and cs_leaf functions added.
170
* call to cs_sprealloc added to cs_fkeep.
172
* bug fixes in cs_counts and cs_amd (memory leak under rare out-of-memory
177
* cs_scc modified so that the row and columns of each component are put in
178
their natural order. cs_dmperm modified so that columns of each block
179
(instead of rows) are placed in their natural order.
181
* cs_splsolve renamed cs_spsolve, generalized to handle both Lx=b and
182
Ux=b, and non-unit diagonal, and placed in its own file (cs_spsolve.c;
183
it was a static function in cs_lu.c). cs_lsolve_mex.c and
184
cs_splsolve_mex.c merged (the latter was removed). cs_spsolve.c file
187
* cs_dmspy changed, so that block borders line up better with the matrix.
191
* Makefile modified so that the Tcov tests (which may not be portable)
192
are not compiled and run by the default "make" in the CSparse directory.
193
To compile everything, including the Tcov tests, use "make all".
194
Trivial change to cs.h.
198
* cs_reach, cs_dfs, cs_splsolve, cs_lu, and cs_scc changed to remove O(n)
199
initialized workspace.
200
* cs_reach and cs_splsolve now user-callable (were static in cs_lu.c).
204
* various changes to simplify the construction of CXSparse
208
* changed prototypes, adding "const" where appropriate.