411 lines
14 KiB
Plaintext
411 lines
14 KiB
Plaintext
Jan 10, 2024: version 4.3.1
|
|
|
|
* minor updates to build system
|
|
|
|
Dec 30, 2023: version 4.3.0
|
|
|
|
* major change to build system: by Markus Mützel
|
|
* cxsparse_version: added to return CXSparse version
|
|
|
|
Sept 18, 2023: version 4.2.1
|
|
|
|
* cmake update: add "None" build type, from Antonio Rojas, for Arch Linux
|
|
|
|
Sept 8, 2023: version 4.2.0
|
|
|
|
* cmake updates: SuiteSparse:: namespace by Markus Muetzel
|
|
* complex types: more changes for C++, from Markus Muetzel
|
|
|
|
June 16, 2023: version 4.0.4
|
|
|
|
* cmake build system updates: update by Markus Muetzel
|
|
* complex type: changed to work better with C++; update from Markus
|
|
Muetzel
|
|
|
|
Jan 17, 2023: version 4.0.3
|
|
|
|
* SuiteSparse_config: now v7.0.0
|
|
|
|
Dec 9, 2022: version 4.0.2
|
|
|
|
* minor change to build system
|
|
|
|
Nov 12, 2022: version 4.0.0
|
|
|
|
* using CMake build system
|
|
* integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced
|
|
with int32_t and int64_t. cs_long_t changed to int64_t.
|
|
* double _Complex: changed to "double complex". ANSI C11 required.
|
|
|
|
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
|
|
|
|
* now based on CSparse v3.1.0
|
|
* This version of CXSparse changes the 'long' integer from UF_long to
|
|
cs_long_t. UF_long is still available to user codes, however, so this
|
|
change is backward compatible with user codes. Future user codes
|
|
should use cs_long_t instead of UF_long.
|
|
* changed unsigned integer in cs_amd.c to signed, for hash code.
|
|
* in Source, only changes are to cs_demo*.c, cs_print.c
|
|
|
|
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.
|
|
* CXSparse/MATLAB/Test ported to Windows
|
|
|
|
* 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.
|
|
|
|
* back-port to MATLAB 7.2 and earlier (which does not have mwIndex).
|
|
* more graceful failure in cs_make when attempting complex matrix support
|
|
(Windows, in particular)
|
|
* correction to CXSparse/Demo/Makefile
|
|
* added sizeof(CS_INT) printout to cs_idemo.c, cs_ldemo.c
|
|
|
|
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.
|
|
|
|
* MATLAB interface added for CXSparse.
|
|
* cs_complex_t type added (a #define for "double _Complex", which is the
|
|
complex type used in CXSparse 2.0.x). When compiling with a C++
|
|
compiler, the std::complex<double> type is used for the complex case.
|
|
* bug fix in complex sparse Cholesky (cs_chol.c).
|
|
* bug fix in complex sparse Cholesky update/downdate (cs_updown.c).
|
|
* bug fix in cs_symperm for the complex case.
|
|
* "beta" changed from complex to real, in sparse QR (cs_house.c,
|
|
cs_happly.c, cs_qr.c), (a performance/memory improvement, not a
|
|
bug fix). Similar change to "nz2" in cs_cumsum.c.
|
|
|
|
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.
|
|
|