1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347
|
Sept 12, 2017: version 3.2.0
* replaced UFget with ssget
* added comment to cs_lu.c
May 4, 2016: version 3.1.9
* minor changes to Makefile
Apr 1, 2016: version 3.1.8
* licensing simplified (no other change); refer to CSparse/Doc/License.txt
Feb 17, 2016: version 3.1.8beta (not released publically)
* minor update to cs_sprealloc, for handling sparse empty matrices.
Feb 1, 2016: version 3.1.7
* update to Makefiles
Jan 30, 2016: version 3.1.6
* correction to Makefiles
* correction to mexFunctions required for MATLAB R2015b,
for sparse empty matrices and NULL mxGetPr
Jan 1, 2016: version 3.1.5
* Makefile now creates both static (*.a) and shared (*.so / *.dylib)
libraries. No change to C code except version number in cs.h.
Oct 10, 2014: version 3.1.4
modified cs_make.m. No change to C code except version number.
Mar 26, 2014: version 3.1.3
* minor update to UFget
Apr 16, 2013: verison 3.1.2
* removed a useless line from cs_sqr.c (no integer overflow can
occur in S->lnz, S->unz at that point)
Jun 20, 2012: verison 3.1.1
* minor update for Windows (removed filesep)
Jun 1, 2012: version 3.1.0
* minor changes to enable the creation of CXSparse 3.1.0
Dec 7, 2011: version 3.0.2
* fixed the Makefile to better align with CFLAGS and other standards
* minor fix to MATLAB cs_install.m
Jan 18, 2010: version 3.0.0
* changed "int" to "csi", which is normally "ptrdiff_t". This way,
CSparse can be used on a 64-bit platform (and in 64-bit MATLAB
in particular), without the need to use CXSparse. If you wish
to use "int", simply edit CSparse/Include/cs.h and change the
definition of csi, or compile with -Dcsi=int.
Jan 25, 2011: version 2.2.5
* minor fix to "make install"
* minor change to cs_util.c, typecast return (cs_free (...))
* minor fixes to UFget: help file, UFsettings.txt
Nov 30, 2009: version 2.2.4
* added "make install" and "make uninstall"
* minor change to cs_make.m
Jan 20, 2009, v2.2.3
* all tabs expanded to 8 spaces (except for Makefiles)
* example corrected in cs_gaxpy.m
* minor change to cs_sparse to allow for i,j,x to be either
row or column vectors (or any mixture)
Sept 8, 2008, v2.2.2
* minor change to cs_make.m, to change "/" to filesep ("/" on Unix, "\"
on Windows), to handle limitations in some Windows compilers
Nov 1, 2007, v2.2.1
* very minor change to Include/cs.h: Changed name of 2nd argument of
cs_permute, to match the code. This has no affect on the code itself,
since the type ("int *") is unchanged. It's just a documentation issue.
* minor lint cleanup in mexFunctions
Mar 31, 2007, v2.2.0
* few changes to primary Source/ files. Changes mostly affect MATLAB
interface.
* Source/cs_house.c: correction to comment
* Souce/cs_updown.c: whitespace changed to reflect change in CXSparse,
no impact at all on CSparse itself.
* Doc/, Lib/ and Include/ directories created.
* Source/cs.h moved to Include/cs.h, version number changed to 2.2.0.
* modification to Makefiles, cs_make.m
* correction to help comments in cs_dmperm.m, cs_qr.m, cs_scc2.m, cs_scc.m
* if complex matrix passed to CSparse in MATLAB, error message
suggests using CXSparse instead
* minor performance fix to cs_sparse_mex.c
* cs_randperm added to MATLAB/Makefile; already appeared in cs_make.m
* minor improvements to MATLAB/ demos.
Mar 1, 2007, v2.1.0
* Source/cs_add.c: added test for matrix dimensions
* Source/cs_multiply.c: added test for matrix dimensions
* correction to MATLAB demo3 (no error in C code version of the demo)
* minor corrections to MATLAB m-file help comments.
Dec 12, 2006, v2.0.7
* minor MATLAB cleanup
Dec 6, 2006, v2.0.6
* Update to UFget. Now relies on the MATLAB urlwrite function instead of
my own Java code.
Nov 2006, v2.0.5
* Added UFgrep to UFget toolbox.
* No changes to C Source code, except for version number and date.
* Added two test matrices: ibm32a and ibm32b. ibm32a is the Harwell/
Boeing matrix ibm32, but with the last column removed. ibm32b
is the transpose of ibm32a. With optimization enabled (-O),
2 lines in cs_maxtrans.c are not tested; these matrices correct
that problem.
* Fixed UFget. Earlier version could not download matrices larger than
32MB.
* Modified UFget/UFweb, to reflect changes in the UF Sparse Matrix
Collection.
* Added ccspy.m and cs_scc2.m MATLAB functions
* Added examples to help info in each *.m MATLAB file
* modified cs_dmspy to speed up the plotting of large matrices with many
singletons
* minor change to cspy: now draws a box around the matrix.
* minor changes to MATLAB demos and tests.
Oct 13, 2006, v2.0.4
* minor modification to cs_updown.c. "n" was incorrectly declared "double".
It should be "int". This was safe, just a little confusing (n was only
used in an argument to cs_malloc, and is thus typecast).
Sept 28, 2006, v2.0.3
* minor modifications to MATLAB interface, to allow CSparse to be used
in MATLAB 6.5.
* added examples to m-files, other minor m-file cleanup.
* bug fix to cspy, to handle NaN's properly.
Aug 23, 2006: v2.0.2
* change to cs_updown mexFunction, to handle multiple rank updates
* symbolic links removed from Tcov/ directory in the distribution.
They are now created by Tcov/Makefile as needed. This makes the
zip files cleaner. Tcov/*test.c test files renamed.
July 19, 2006:
* minor fix to cs_must_compile.m and cs_make.m, to allow CSparse to be
compiled in MATLAB 6.5 with cs_make.
* minor fix to cspy for complex matrices (imaginary part was ignored).
* no change to version number or date, since there are no changes that
affect the appearance of CSparse in the book ("Direct Methods for
Sparse Linear Systems", SIAM, 2006).
June 24, 2006:
* minor typos in comments corrected. No change in code itself,
and no change in version number or date.
May 27, 2006, v2.0.1: (this version is printed in the book)
* minor bug fix. cs_util.c modified, so that cs_sprealloc (T,0) works
properly for a triplet matrix T (setting T->nzmax equal to T->nz).
The line in v2.0.0:
nzmax = (nzmax <= 0) ? (A->p [A->n]) : nzmax ;
changes to the following in v2.0.1:
if (nzmax <= 0) nzmax = (CS_CSC (A)) ? (A->p [A->n]) : A->nz ;
* minor typographical changes arising from the editting of the book.
Apr 12, 2006, v2.0.0:
* random permutation option added to cs_maxtrans and cs_dmperm, to help
avoid rare cases where the O(|A|n) time complexity is reached in
practice (GHS_indef/boyd2 in the UF sparse matrix collection, for
example). New cs_randperm function added.
Apr 10, 2006:
* stylistic changes for the book (except for the bug fix):
* "int order" parameter of cs_amd, cs_lusol, cs_cholsol, cs_qrsol, cs_sqr,
cs_schol changed. Now 0 means no ordering, 1 is A+A', 2 is S*S', and
3 is A*A'. In v1.2 and earlier, "order" took on a value ranging from
-1 to 2. "int n" parameter rearranged for cs_ipvec, cs_pvec, cs_post
(int n moved to the end). cs_triplet renamed cs_compress.
To ensure that these changes are propagated into user code that calls
CSparse, the "order" parameter has been placed as the first parameter
in all these routines. Your compiler will complain (gcc will halt) if
you upgrade from v1.2 to v2.0 without changing your code. This is much
better than a silent error in which you get the wrong ordering by
mistake (with a huge penalty in run-time performance and no compiler
warnings).
New syntax (v2.0 and later):
----------------------------
order = 0: natural ordering
order = 1: amd (A+A')
order = 2: amd (S'*S), where S=A except dense rows dropped
order = 3: amd (A'*A)
int cs_cholsol (int order, const cs *A, double *b) ;
int cs_lusol (int order, const cs *A, double *b, double tol) ;
int cs_qrsol (int order, const cs *A, double *b) ;
int *cs_amd (int order, const cs *A) ;
css *cs_schol (int order, const cs *A) ;
css *cs_sqr (int order, const cs *A, int qr) ;
int *cs_post (const int *parent, int n) ;
int cs_ipvec (const int *p, const double *b, double *x, int n) ;
int cs_pvec (const int *p, const double *b, double *x, int n) ;
cs *cs_compress (const cs *T) ;
Old syntax (v1.2 and earlier):
------------------------------
order = -1: natural ordering
order = 0: amd (A+A')
order = 1: amd (S'*S), where S=A except dense rows dropped
order = 2: amd (A'*A)
int cs_cholsol (const cs *A, double *b, int order) ;
int cs_lusol (const cs *A, double *b, int order, double tol) ;
int cs_qrsol (const cs *A, double *b, int order) ;
int *cs_amd (const cs *A, int order) ;
css *cs_schol (const cs *A, int order) ;
css *cs_sqr (const cs *A, int order, int qr) ;
int *cs_post (int n, const int *parent) ;
int cs_ipvec (int n, const int *p, const double *b, double *x) ;
int cs_pvec (int n, const int *p, const double *b, double *x) ;
cs *cs_triplet (const cs *T) ;
* CS_OVERFLOW macro removed (removed from cs_malloc.c; not needed).
* S->leftmost added to css (it was tacked onto S->pinv before).
* P,Q,R,S components of csd struct changed to p,q,r,s.
* Pinv and Q components of css struct changed to pinv and q.
* CS_CSC and CS_TRIPLET macros added, to clarify which CSparse functions
accept cs matrices in compressed column form, triplet form, or both.
* check for negative row/column indices added to cs_entry.
* cs_ereach and cs_leaf functions added.
* call to cs_sprealloc added to cs_fkeep.
* bug fixes in cs_counts and cs_amd (memory leak under rare out-of-memory
conditions).
Mar 15, 2006:
* cs_scc modified so that the row and columns of each component are put in
their natural order. cs_dmperm modified so that columns of each block
(instead of rows) are placed in their natural order.
* cs_splsolve renamed cs_spsolve, generalized to handle both Lx=b and
Ux=b, and non-unit diagonal, and placed in its own file (cs_spsolve.c;
it was a static function in cs_lu.c). cs_lsolve_mex.c and
cs_splsolve_mex.c merged (the latter was removed). cs_spsolve.c file
added
* cs_dmspy changed, so that block borders line up better with the matrix.
Mar 6, 2006:
* Makefile modified so that the Tcov tests (which may not be portable)
are not compiled and run by the default "make" in the CSparse directory.
To compile everything, including the Tcov tests, use "make all".
Trivial change to cs.h.
Feb 27, 2006:
* cs_reach, cs_dfs, cs_splsolve, cs_lu, and cs_scc changed to remove O(n)
initialized workspace.
* cs_reach and cs_splsolve now user-callable (were static in cs_lu.c).
Feb 20, 2006:
* various changes to simplify the construction of CXSparse
Feb 7, 2006:
* changed prototypes, adding "const" where appropriate.
|