May 5, 2025: version 5.3.3

    * cholmod_analyze: restore Common->try_catch after trying ordering methods.

Apr 10, 2025: version 5.3.2

    * build system: use CUDA as linker if applicable

Feb 20, 2025: version 5.3.1

    * minor changes: removing compiler warnings

June 20, 2024: version 5.3.0

    * added cholmod_query: to deterimine at run time which modules
        of CHOLMOD have been compiled into the libcholmod.so.
        Also added CHOLMOD_HAS_* #defines in cholmod.h, configured
        by cmake when CHOLMOD is compiled.

Mar 22, 2024: version 5.2.1

    * minor updates to build system

Jan 20, 2024: version 5.2.0

    * bug fix:  CHOLMOD 5.1.0 added a new variable in the CHOLMOD Common
        struct for development only but this change broke ABI compatibility
        since the SOVERSION was not bumped at the same time.  v5.2.0 reverts
        this change so the new variable does not appear in production, thus
        restoring ABI compatibility with v5.0.x.

Jan 10, 2024: version 5.1.1

    * MATLAB interface:  add -DNO_SSIZE_T for Windows
    * minor updates to build system

Dec 30, 2023: version 5.1.0

    * major change to build system: by Markus Mützel
    * support for single precision matrices:  for all Modules, except for the
        GPU kernels (which are only supported for double and complex double
        matrices).
    * GPU: various bug fixes

Oct 31, 2023, version 5.0.1

    * cholmod.h: remove use of "I" which conflicts with
        #include <complex.h>.

Oct 23, 2023, version 5.0.0

    * CHOLMOD v5.0.0: introduces the first part of support for single
        precision sparse matrices, with the introduction of the new
        CHOLMOD:Utility Module.  The CHOLMOD:Utility Module replaces
        CHOLMOD:Core in prior versions. Single precision is not yet
        incorporated into the remaining Modules, however.

Oct 18, 2023: version 4.2.2

    * CHOLMOD 4.2.2: bug fix to CHOLMOD/Supernodal (heuristic to determine
        # threads to use for last supernode was incorrect)

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
    * bug fix: typecast was broken in cholmod_postorder.c
    * minor fixes to debug scaffolding and test code: cholmod_internal.h,
        cholmod_metis_wrapper.c, Tcov/memory.c.
    * support for SPQR: minor changes to support SPQR v4.2.0 with 32-bit
        integers; no change to user-visible API.
    * METIS now using GKRAND: with threadprivate state variables, to
        avoid global system lock when using CHOLMON on many user threads

June 16, 2023: version 4.0.4

    * cmake build system updates: update by Markus Muetzel
    * METIS: fixed non-standard prototypes in gk_proto.h and gk_mkrandom.h

Jan 17, 2022: version 4.0.3

    * NFORTRAN: option added to disable Fortran entirely
    * SuiteSparse_config: now v7.0.0

Dec 9, 2022: version 4.0.2

    * minor change to build system
    * Fortran: no longer required to build CHOLMOD
    * NPARTITION: if CHOLMOD is compiled with -DNPARTITION, then
        METIS is not compiled.  However, the CHOLMOD interface to METIS is
        still present; they simply return CHOLMOD_NOT_INSTALLED.  This
        allows methods that depend on CHOLMOD's METIS interface to use
        a run-time test, instead of requiring them to be compiled with
        -DNPARTITION (SPQR in particular).

Nov 12, 2022: version 4.0.1

    * BLAS definitions: no longer exposed to the user application

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.
    * cholmod.h: single include file for all Modules
    * BLAS/LAPACK: relying on SuiteSparse_config and CMake to find and link
        with the BLAS and LAPACK libraries
    * libcholmod_cuda.so: CUDA support split into a separate library.
    * OpenMP: CHOLMOD_OMP_NUM_THREADS removed, replaced with run time
        controls (Common->nthreads_max, Common->chunk)
    * METIS: no longer built as a separate libary.  A slightly modified version
        of METIS is embedded into the CHOLMOD library, with a prefix appended
        to each function name so it won't conflict with a standard METIS
        library that may already exist in the application.

June 30, 2020: no change to version number

    * minor update to MATLAB tests: no change to compiled library,
        so version number remains 3.0.14.
    * replaced UFget with ssget in MATLAB tests

Feb 20, 2020: version 3.0.14

    * minor update to cholmod_check to print a matrix

Dec 20, 2018: version 3.0.13

    * bug fix to cholmod_core.h: so that a CUDA include file is properly
        included in a C++ caller; also required for SPQR.

Mar 12, 2018: version 3.0.12

    * bug fix to cholmod_rowcolcounts.c (int overflow was possible)

May 4, 2016: version 3.0.11

    * minor changes to Makefile

Apr 1, 2016: version 3.0.10

    * licensing simplified (no other change); refer to CHOLMOD/Doc/License.txt

Feb 1, 2016: version 3.0.9

    * update to Makefiles
    * minor change to CHOLMOD/Check/cholmod_write.c, when compiling with
	certain modules disabled.
    * more verbose error reporting
    * Demos now compile with MatrixOps module disabled, but they don't
        compute all residuals (requires the CHOLMOD/MatrixOps package)

Jan 30, 2016: version 3.0.8

    * better Makefiles for creating and installing shared libraries
    * CHOLMOD now uses METIS 5.1.0, which is distributed with SuiteSparse
    * correction to mexFunctions required for MATLAB R2015b,
	for sparse empty matrices and NULL mxGetPr

Jan 1, 2016: version 3.0.7

    * modified Makefile to create shared libraries
        No change to C code except version number

July 14, 2015: version 3.0.6

    * disabling of MatrixOps, Modify, and Supernodal modules didn't work
        properly.
    * added MATLAB interface for row add/delete (lurowmod mexFunction)

Jan 19, 2015: version 3.0.5

    * minor bug fix to cholmod_symmetry.c for the 'quick return'
        (option == 0).

Jan 7, 2015: version 3.0.4

    * serious bug fix to supernodal factorization.  The bug was introduced in
	CHOLMOD v3.0.0 when the GPU acceleration was given a major update.
	The bug can cause a segfault, whether or not the GPU is used.

Oct 23, 2014: version 3.0.3

    * minor fix for CHOLMOD/Supernodal/cholmod_super_symbolic.c (was using a
      non-ANSI C method to declare and initialize a variable).
    * added additional paper in CHOLMOD/Doc

Oct 10, 2014: version 3.0.2

    * changes to accomodate GPU-accelerated SPQR
    * added CHOLMOD/Include/cholmod_function.h for backward compatibility
        for function pointers (moved from Common to SuiteSparse_config,
        as of v2.2.0)

July 18, 2014: version 3.0.1

    * minor correction to 3.0.0 Beta build process, to compile SPQR when
        CHOLMOD is compiled on the GPU
    * added cholmod_rowfac_mask2 function for LPDASA
    * to test the GPU, use 'make big' in CHOLMOD/Demo.  You will need to first
        download the GHS_psdef/audikw_1.mtx:
        http://sparse.tamu.edu/GHS_psdef/audikw_1

March 26, 2014: version 3.0.0 (beta)

    * major update to GPU acceleration.  Released at NVIDIA GTC 2014.

July 31, 2013: version 2.2.0

    * modified the CHOLMOD Common so that it is the same size regardless
        of whether or not the GPU is used.
    * changed malloc, printf, hypot, and divcomplex pointers to use
        SuiteSparse_config.  Removed CHOLMOD Common-> function pointers.

Apr 25, 2013: version 2.1.2

    * minor update for CHOLMOD/Cholesky/*solve*.c:
        version 2.1.0 broke the Microsoft Visual C/C++ compiler

Apr 16, 2013: version 2.1.1

    * bug fix to Lib/Makefile and Demo/Makefile, to handle -DNCAMD correctly.
    * changes to Supernodal/t_cholmod_gpu.c: to fix a GPU memory leak,
        to fix the statistics on TRSM timing, and to reduce CPU-GPU memory
        traffic.
    * added cholmod_version function.

Mar 27, 2013: version 2.1.0

    * added the -DNCAMD option.  Formerly, the -DNPARTITION option disabled
        both METIS and the interface to CAMD, CCOLAMD, and CSYMAMD.
        Now, -DNPARTITION controls just whether or not the interface to
        METIS is compiled.  The new -DNCAMD option controls whether or not
        the interfaces to CAMD, CCOLAMD, and CSYMAMD are compiled.
        Both features remain in the Partition Module, as in prior versions.
    * added cholmod_lsolve_pattern and modified cholmod_row_lsubtree,
        to compute nonzero pattern of L\b where b is sparse
    * added cholmod_solve2 and cholmod_ensure_dense, so that repeated
        forward/backsolves can be done without the need to malloc/free,
        memory on each solve.  Also provides the option for solving for
        a subset of the solution vector x (via the Bset and Xset
        parameters to cholmod_solve2).  The last option required an IPerm
        member to be added to the Cholesky factorization object.  It is only
        allocated and used if cholmod_solve2 solves with Bset.

Jun 20, 2012: verison 2.0.1

    * minor update for Windows (removed filesep, compiler port fix)
    * minor changes to format of User Guide
    * bug fix for GPU code (singular case)

Jun 1, 2012: version 2.0.0

    * changed from UFconfig to SuiteSparse_config
    * added interface to CUDA BLAS

Dec 7, 2011: version 1.7.4

    * fixed the Makefile to better align with CFLAGS and other standards
    * Makefile now detects whether or not METIS is present, and
        sets -DNPARTITION if it is not

Jan 25, 2011: version 1.7.3

    * minor fix to "make install"
    * minor change to Core/cholmod_memory.c, rename "I" which conflicts with
        a predefined token in some compilers

Nov 30, 2009: version 1.7.2

    * added "make install" and "make uninstall"
    * fixed interface to 64-bit BLAS for MATLAB 7.8

Sept 30, 2008, version 1.7.1

    * bug fix to cholmod_symmetry; it reported incorrectly if the matrix
        had a zero-free diagonal or not.  No effect on the use of CHOLMOD in
        MATLAB.  No effect on the mwrite function, either, which uses
        cholmod_symmetry.  Note that the number of nonzeros on the diagonal was
        (and still is) correctly computed.  Only effect is on the
        UF_Index.cholcand statistic reported in the UFget index, and on the web
        pages, for the UF Sparse Matrix Collection (the UF_Index.cholcand
        field).  This affects the output of spsym.

Sept 20, 2008, version 1.7.0

    * update for SuiteSparseQR:

	- add SuiteSparseQR knobs and stats to CHOLMOD Common
	- SuiteSparseQR uses CHOLMOD for its multifrontal symbolic analysis
	- changed (char *) input parameters to (const char *), to avoid
	    spurious compiler warnings when C++ calls C.
	- minor change to the AMD backup strategy in cholmod_analyze, to better
	    suit SuiteSparseQR
	- modified cholmod_analyze and cholmod_super_symbolic,
	    to add "for_cholesky" parameter; new function cholmod_analyze_p2.
	    This parameter is false for SuiteSparseQR.
	- minor correction to comments in cholmod_postorder.c
	- performance enhancement to supernodal symbolic analysis, when
	    A or AA' is fairly dense

Nov 1, 2007, version 1.6.0

    * minor lint cleanup (no bugs)

    * new CHOLMOD_CLEAR_FLAG macro, which speeds up the calls to
	cholmod_clear_flag, avoiding the function call if not needed.  Note
	that this leads to untested lines in the Tcov test, but the lines of
	the macro are tested in several places, just not everywhere it appers.

    * port to MATLAB 7.5 (mex -lmwblas option now required for Linux)

    * minor bug fix to cholmod_add.c to avoid potential Int overflow

    * extra option added to cholmod2 mexFunction

    * sparse2 mexFunction modified to ensure nnz(A) == nzmax(A) always holds
	(It didn't in v1.5.0 if numerically zero entries were dropped in A).

    * correction to Help comments for spsym function

    * bug fix to cholmod_symmetry.c: determination of Hermitian vs non-Hermitian
	matrices was incorrect if the diagonal was imaginary.

    * performance fix for cholmod_nesdis.c and nesdis mexFunction

May 31, 2007, version 1.5.0

    * 64-bit MATLAB interface
    
    * MATLAB interface back-ported to MATLAB 6.1.

    * bug fix: solving Dx=b using a supernodal factorization, in
	cholmod_l_solve, when sizeof(UF_long) > sizeof(BLAS integer)

    * changes to Makefiles to reflect directory changes in COLAMD and CCOLAMD
	v2.7.0 directory structure (CHOLMOD v1.5 requires v2.7.0 of those
	two packages)

    * update to Modify/cholmod_updown.c, to allow input vector R to be packed
	or unpacked.

    * bug fix to Tcov/huge.c test code, for 64-bit case (this has no effect
	on the CHOLMOD library itself, just the test code)

Dec 12, 2006, version 1.4.0

    * added support for large files (larger than 2GB)

    * minor MATLAB cleanup

    * renamed MATLAB function from cholmod to cholmod2, to avoid filename clash
	with itself (the built-in version of cholmod).

Dec 2, 2006, version 1.3.0

    * Major modification to cholmod_read.c; now fully supports all forms of the
	Matrix Market format.  Added cholmod_read_dense and cholmod_read_matrix
	functions to cholmod_read.c.  Major changes to mread MATLAB function.
	Added Common->prefer_binary option for cholmod_read.

    * Added cholmod_write.c (cholmod_write_sparse and cholmod_write_dense
	functions).  Added mwrite MATLAB function.

    * Added 2nd output argument to sparse2 (Z, binary pattern of explicit
	zero entries).

    * Added the function cholmod_symmetry to the MatrixOps module.
	Added spsym MATLAB function.

    * 2nd argument to cholmod_triplet_to_sparse changed from int to size_t.

    * minor correction to cholmod_analyze_ordering, cholmod_dense.c

    * minor change to cholmod_rowfac.c, cholmod_solve.c, ...
	to allow for easier testing.

Sept 28, 2006, version 1.2.1

    * bug fix to cholmod_matlab.c, when working with sparse INT64 matrices
	in the "sparse2" function

Aug 31, 2006, version 1.2

    * Common->default_nesdis parameter and Common->called_nd statistic added.
	Otherwise, no change to user interface.  v1.2 is fully upward
	compatible with v1.1 (even binary compatible).

    * non-supernodal Lx=b and L'x=b solves simplified, slight increase in
	performance.

    * update/downdate performance improved.

    * ordering options and output statistics added to MATLAB/cholmod
	mexFunction.

July 27, 2006, version 1.1.1

    * bug fix for cholmod_rowfac_mask, for the complex case.  Has no
	effect on MATLAB.

June 27, 2006:

    * trivial changes to nested dissection code, and cholmod_read.c (for
	debugging, and to add explicit typecasts so compilers don't complain).

May, 2006:

    * Added new routines for LPDASA: cholmod_rowfac_mask, cholmod_updown_mask.
	Added cholmod_collapse_septree.  Added nd_oksep, nd_components
	parameters to Common.

Apr 30, 2006: version 1.1

    * added interface to CAMD.  cholmod_nested_dissection can now call
	CCOLAMD, CSYMAMD, and CAMD.  Common->nd_camd usage extended.
	New argument added to nesdis mexFunction.  New cholmod_camd function
	added.  No other changes to CHOLMOD user interface.

    * more careful integer overflow checks.  Added non-user-callable functions
	to add and multiply size_t integers, with overflow checks.

    * added Common->no_workspace_reallocate

    * flop count is now correct for A*A' case (Common->rowfacfl).

Jan 18, 2006: version 1.0.2

    * bug fix: MATLAB interface incorrect for full logical matrices.

    * Tcov tests modified to generate fewer intentional nan's, to make it
	easier to look for errors in BLAS libraries that incorrectly
	generate nan's.

Dec 16, 2005: version 1.0.1

    * bug fix: cholmod_amd allocated too small of a workspace when ordering A*A'

Dec 8, 2005: version 1.0

    * no real changes.  Version 1.0 is the same as version 0.8.  Version 1.0 is
	simply the formal stable release.

    * known issue:  the floating point operation count, Common->rowfacfl, is
	statistic is incorrect when factorizing A*A'.  This will be fixed in
	version 1.1.

Nov 15, 2005: version 0.8

    * bug fix in t_cholmod_super_numeric, for [R,p]=chol(A) usage.

    * Common->quick_return_if_not_posdef added.

    * Added cholmod_row_lsubtree (required for LPDASA)

    * bug fix: cholmod_rcond returned sqrt(1/cond) for an LL' factorization;
	1/cond is required.

    * new statistics added: flop counts for cholmod_rowfac, # of factor column
	reallocations, # of factor reallocations due to column reallocations,
	and # of times the (non-default) bounds on diag(L) are hit.

    * factor column reallocation skipped if space already big enough.

    * bug fix: cholmod_copy_factor did not copy L->is_monotonic.

    * bug fix: cholmod_change_factor (diagonal entry was wrong in one case)

    * rcond added to cholmod mexFunction ([x,rcond] = cholmod(A,b)).

    * cholmod_rowadd, cholmod_rowdel modified.  rowdel no longer removes
	entries from the matrix; it sets them to zero instead.

Oct 10, 2005: version 0.7

    * minor changes:  minor change to Check/cholmod_check.c (coerce
	sizeof(...) to (int) when printing. Less strict check on A->p for
	unpacked matrices) , removed a few unused variables in
	Check/cholmod_read.c and Demo/cholmod*demo.c, changed "exit(0)" to
	"return(0)" in Demo/cholmod_simple.c.  Changed Makefile so that "." is
	not assumed to be on the $path.  Added Cygwin to architecture detection
	in Include/cholmod_blas.h.  Added cparent and cmember to nesdis.m.
	Space for future expansion added to cholmod_common.

    * removed "rowmark" from the Modify module, which affects how partial
	updates to Lx=b solves are done during update/downdate.  Should only
	affect LPDASA.

    * added CHOLMOD_SUBSUB_VERSION

Aug 31, 2005:  version 0.6 released.
