Merge lp:~logan/ubuntu/trusty/suitesparse/4.2.1-3ubuntu1 into lp:ubuntu/trusty/suitesparse

Proposed by Logan Rosen
Status: Needs review
Proposed branch: lp:~logan/ubuntu/trusty/suitesparse/4.2.1-3ubuntu1
Merge into: lp:ubuntu/trusty/suitesparse
Diff against target: 178439 lines (+77955/-59290)
1823 files modified
.pc/.quilt_patches (+1/-0)
.pc/.quilt_series (+1/-0)
.pc/.version (+1/-0)
AMD/Demo/Makefile (+6/-5)
AMD/Demo/amd_demo.c (+3/-4)
AMD/Demo/amd_demo.out (+3/-3)
AMD/Demo/amd_demo2.c (+1/-2)
AMD/Demo/amd_demo2.out (+2/-2)
AMD/Demo/amd_f77cross.f (+2/-3)
AMD/Demo/amd_f77demo.f (+2/-3)
AMD/Demo/amd_f77simple.f (+2/-3)
AMD/Demo/amd_f77wrapper.c (+1/-2)
AMD/Demo/amd_l_demo.c (+7/-8)
AMD/Demo/amd_l_demo.out (+3/-3)
AMD/Demo/amd_simple.c (+1/-2)
AMD/Doc/AMD_UserGuide.tex (+13/-436)
AMD/Doc/ChangeLog (+24/-0)
AMD/Doc/License (+1/-1)
AMD/Doc/Makefile (+6/-3)
AMD/Include/amd.h (+183/-184)
AMD/Include/amd_internal.h (+27/-30)
AMD/Lib/GNUmakefile (+15/-15)
AMD/Lib/Makefile (+6/-5)
AMD/MATLAB/Contents.m (+1/-2)
AMD/MATLAB/Makefile (+0/-34)
AMD/MATLAB/amd2.m (+1/-5)
AMD/MATLAB/amd_demo.m (+1/-4)
AMD/MATLAB/amd_install.m (+1/-2)
AMD/MATLAB/amd_make.m (+3/-4)
AMD/MATLAB/amd_mex.c (+6/-7)
AMD/Makefile (+26/-20)
AMD/README.txt (+15/-17)
AMD/Source/amd_1.c (+1/-2)
AMD/Source/amd_2.c (+7/-7)
AMD/Source/amd_aat.c (+1/-2)
AMD/Source/amd_control.c (+1/-2)
AMD/Source/amd_defaults.c (+1/-2)
AMD/Source/amd_dump.c (+1/-2)
AMD/Source/amd_global.c (+1/-2)
AMD/Source/amd_info.c (+1/-2)
AMD/Source/amd_order.c (+1/-2)
AMD/Source/amd_post_tree.c (+1/-2)
AMD/Source/amd_postorder.c (+1/-2)
AMD/Source/amd_preprocess.c (+1/-2)
AMD/Source/amd_valid.c (+1/-2)
BTF/Doc/ChangeLog (+16/-0)
BTF/Include/btf.h (+15/-11)
BTF/Include/btf_internal.h (+3/-3)
BTF/Lib/Makefile (+5/-5)
BTF/MATLAB/Contents.m (+1/-1)
BTF/MATLAB/Makefile (+0/-37)
BTF/MATLAB/Test/btf_test.m (+1/-1)
BTF/MATLAB/Test/checkbtf.m (+1/-1)
BTF/MATLAB/Test/test1.m (+2/-2)
BTF/MATLAB/Test/test2.m (+2/-3)
BTF/MATLAB/Test/test3.m (+1/-4)
BTF/MATLAB/Test/test4.m (+1/-1)
BTF/MATLAB/Test/test5.m (+1/-1)
BTF/MATLAB/Test/test6.m (+1/-1)
BTF/MATLAB/btf.c (+9/-8)
BTF/MATLAB/btf.m (+1/-1)
BTF/MATLAB/btf_demo.m (+1/-2)
BTF/MATLAB/btf_install.m (+1/-1)
BTF/MATLAB/btf_make.m (+2/-2)
BTF/MATLAB/drawbtf.m (+1/-1)
BTF/MATLAB/maxtrans.c (+7/-6)
BTF/MATLAB/maxtrans.m (+1/-1)
BTF/MATLAB/strongcomp.c (+10/-9)
BTF/MATLAB/strongcomp.m (+1/-1)
BTF/Makefile (+23/-5)
BTF/README.txt (+5/-5)
BTF/Source/btf_maxtrans.c (+1/-1)
BTF/Source/btf_order.c (+1/-1)
BTF/Source/btf_strongcomp.c (+1/-1)
CAMD/Demo/Makefile (+6/-7)
CAMD/Demo/camd_demo.c (+1/-2)
CAMD/Demo/camd_demo.out (+2/-2)
CAMD/Demo/camd_demo2.c (+1/-2)
CAMD/Demo/camd_demo2.out (+1/-1)
CAMD/Demo/camd_l_demo.c (+6/-9)
CAMD/Demo/camd_l_demo.out (+2/-2)
CAMD/Demo/camd_simple.c (+1/-2)
CAMD/Doc/CAMD_UserGuide.tex (+13/-438)
CAMD/Doc/ChangeLog (+24/-0)
CAMD/Doc/License (+1/-1)
CAMD/Doc/Makefile (+8/-4)
CAMD/Include/camd.h (+186/-187)
CAMD/Include/camd_internal.h (+27/-30)
CAMD/Lib/GNUmakefile (+5/-6)
CAMD/Lib/Makefile (+4/-3)
CAMD/MATLAB/Contents.m (+1/-2)
CAMD/MATLAB/Makefile (+0/-34)
CAMD/MATLAB/camd.m (+1/-2)
CAMD/MATLAB/camd_demo.m (+1/-3)
CAMD/MATLAB/camd_make.m (+3/-4)
CAMD/MATLAB/camd_mex.c (+8/-9)
CAMD/Makefile (+27/-21)
CAMD/README.txt (+14/-15)
CAMD/Source/camd_1.c (+1/-2)
CAMD/Source/camd_2.c (+1/-2)
CAMD/Source/camd_aat.c (+1/-2)
CAMD/Source/camd_control.c (+1/-2)
CAMD/Source/camd_defaults.c (+1/-2)
CAMD/Source/camd_dump.c (+1/-2)
CAMD/Source/camd_global.c (+1/-2)
CAMD/Source/camd_info.c (+1/-2)
CAMD/Source/camd_order.c (+1/-2)
CAMD/Source/camd_postorder.c (+1/-2)
CAMD/Source/camd_preprocess.c (+1/-2)
CAMD/Source/camd_valid.c (+1/-2)
CCOLAMD/Demo/Makefile (+7/-6)
CCOLAMD/Demo/ccolamd_example.c (+0/-1)
CCOLAMD/Demo/ccolamd_example.out (+2/-2)
CCOLAMD/Demo/ccolamd_l_example.c (+8/-13)
CCOLAMD/Demo/ccolamd_l_example.out (+2/-2)
CCOLAMD/Doc/ChangeLog (+17/-0)
CCOLAMD/Include/ccolamd.h (+68/-70)
CCOLAMD/Lib/Makefile (+10/-9)
CCOLAMD/MATLAB/Makefile (+0/-35)
CCOLAMD/MATLAB/ccolamd_demo.m (+12/-17)
CCOLAMD/MATLAB/ccolamd_make.m (+2/-1)
CCOLAMD/MATLAB/ccolamd_test.m (+2/-1)
CCOLAMD/MATLAB/ccolamdmex.c (+25/-26)
CCOLAMD/MATLAB/ccolamdtestmex.c (+33/-34)
CCOLAMD/MATLAB/csymamd.m (+2/-2)
CCOLAMD/MATLAB/csymamdmex.c (+22/-23)
CCOLAMD/MATLAB/csymamdtestmex.c (+32/-33)
CCOLAMD/Makefile (+25/-18)
CCOLAMD/README.txt (+10/-19)
CCOLAMD/Source/ccolamd.c (+27/-31)
CCOLAMD/Source/ccolamd_global.c (+0/-1)
CHOLMOD/Check/License.txt (+1/-1)
CHOLMOD/Check/cholmod_check.c (+96/-35)
CHOLMOD/Check/cholmod_read.c (+0/-1)
CHOLMOD/Cholesky/License.txt (+1/-1)
CHOLMOD/Cholesky/cholmod_amd.c (+0/-1)
CHOLMOD/Cholesky/cholmod_analyze.c (+16/-4)
CHOLMOD/Cholesky/cholmod_colamd.c (+0/-1)
CHOLMOD/Cholesky/cholmod_etree.c (+0/-1)
CHOLMOD/Cholesky/cholmod_factorize.c (+0/-1)
CHOLMOD/Cholesky/cholmod_postorder.c (+1/-2)
CHOLMOD/Cholesky/cholmod_rcond.c (+0/-1)
CHOLMOD/Cholesky/cholmod_resymbol.c (+0/-1)
CHOLMOD/Cholesky/cholmod_rowcolcounts.c (+0/-1)
CHOLMOD/Cholesky/cholmod_rowfac.c (+82/-26)
CHOLMOD/Cholesky/cholmod_solve.c (+577/-93)
CHOLMOD/Cholesky/cholmod_spsolve.c (+0/-1)
CHOLMOD/Cholesky/t_cholmod_lsolve.c (+56/-49)
CHOLMOD/Cholesky/t_cholmod_ltsolve.c (+58/-50)
CHOLMOD/Cholesky/t_cholmod_rowfac.c (+0/-1)
CHOLMOD/Cholesky/t_cholmod_solve.c (+32/-19)
CHOLMOD/Core/License.txt (+1/-1)
CHOLMOD/Core/cholmod_aat.c (+0/-1)
CHOLMOD/Core/cholmod_add.c (+0/-1)
CHOLMOD/Core/cholmod_band.c (+6/-7)
CHOLMOD/Core/cholmod_change_factor.c (+0/-1)
CHOLMOD/Core/cholmod_common.c (+32/-3)
CHOLMOD/Core/cholmod_complex.c (+0/-1)
CHOLMOD/Core/cholmod_copy.c (+0/-1)
CHOLMOD/Core/cholmod_dense.c (+63/-2)
CHOLMOD/Core/cholmod_error.c (+0/-1)
CHOLMOD/Core/cholmod_factor.c (+3/-2)
CHOLMOD/Core/cholmod_memory.c (+61/-49)
CHOLMOD/Core/cholmod_sparse.c (+1/-2)
CHOLMOD/Core/cholmod_transpose.c (+0/-1)
CHOLMOD/Core/cholmod_triplet.c (+0/-1)
CHOLMOD/Core/cholmod_version.c (+37/-0)
CHOLMOD/Core/t_cholmod_change_factor.c (+0/-1)
CHOLMOD/Core/t_cholmod_dense.c (+0/-1)
CHOLMOD/Core/t_cholmod_transpose.c (+0/-1)
CHOLMOD/Core/t_cholmod_triplet.c (+0/-1)
CHOLMOD/Demo/License.txt (+1/-1)
CHOLMOD/Demo/Makefile (+62/-21)
CHOLMOD/Demo/Matrix/two.tri (+5/-0)
CHOLMOD/Demo/cholmod_demo.c (+319/-99)
CHOLMOD/Demo/cholmod_demo.h (+4/-3)
CHOLMOD/Demo/cholmod_l_demo.c (+318/-102)
CHOLMOD/Demo/cholmod_simple.c (+0/-1)
CHOLMOD/Demo/lperf.m (+56/-0)
CHOLMOD/Demo/make.out (+0/-213)
CHOLMOD/Doc/ChangeLog (+59/-0)
CHOLMOD/Doc/Makefile (+10/-4)
CHOLMOD/Doc/UserGuide.tex (+225/-80)
CHOLMOD/Include/License.txt (+0/-1)
CHOLMOD/Include/README.txt (+1/-1)
CHOLMOD/Include/cholmod.h (+10/-7)
CHOLMOD/Include/cholmod_blas.h (+43/-45)
CHOLMOD/Include/cholmod_camd.h (+102/-0)
CHOLMOD/Include/cholmod_check.h (+19/-10)
CHOLMOD/Include/cholmod_cholesky.h (+75/-27)
CHOLMOD/Include/cholmod_config.h (+4/-2)
CHOLMOD/Include/cholmod_core.h (+180/-75)
CHOLMOD/Include/cholmod_internal.h (+50/-45)
CHOLMOD/Include/cholmod_io64.h (+1/-2)
CHOLMOD/Include/cholmod_matrixops.h (+9/-7)
CHOLMOD/Include/cholmod_modify.h (+11/-9)
CHOLMOD/Include/cholmod_partition.h (+25/-92)
CHOLMOD/Include/cholmod_supernodal.h (+4/-4)
CHOLMOD/Lib/Makefile (+56/-11)
CHOLMOD/MATLAB/Contents.m (+1/-2)
CHOLMOD/MATLAB/License.txt (+1/-1)
CHOLMOD/MATLAB/Makefile (+0/-700)
CHOLMOD/MATLAB/README.txt (+4/-3)
CHOLMOD/MATLAB/Test/Contents.m (+4/-1)
CHOLMOD/MATLAB/Test/cholmod_test.m (+40/-33)
CHOLMOD/MATLAB/Test/cholmod_test_11-May-2007_13-29-15.txt (+0/-12324)
CHOLMOD/MATLAB/Test/dg.m (+1/-3)
CHOLMOD/MATLAB/Test/ltest.m (+70/-0)
CHOLMOD/MATLAB/Test/ltest2.m (+112/-0)
CHOLMOD/MATLAB/Test/lxtest.m (+82/-0)
CHOLMOD/MATLAB/Test/n2.m (+1/-1)
CHOLMOD/MATLAB/Test/nn.m (+1/-1)
CHOLMOD/MATLAB/Test/test0.m (+3/-4)
CHOLMOD/MATLAB/Test/test1.m (+1/-1)
CHOLMOD/MATLAB/Test/test10.m (+1/-1)
CHOLMOD/MATLAB/Test/test11.m (+2/-2)
CHOLMOD/MATLAB/Test/test11results.m (+1/-2)
CHOLMOD/MATLAB/Test/test12.m (+1/-1)
CHOLMOD/MATLAB/Test/test13.m (+1/-1)
CHOLMOD/MATLAB/Test/test14.m (+1/-1)
CHOLMOD/MATLAB/Test/test15.m (+1/-1)
CHOLMOD/MATLAB/Test/test16.m (+1/-2)
CHOLMOD/MATLAB/Test/test17.m (+1/-1)
CHOLMOD/MATLAB/Test/test18.m (+1/-1)
CHOLMOD/MATLAB/Test/test19.m (+1/-1)
CHOLMOD/MATLAB/Test/test2.m (+1/-1)
CHOLMOD/MATLAB/Test/test20.m (+1/-1)
CHOLMOD/MATLAB/Test/test21.m (+1/-1)
CHOLMOD/MATLAB/Test/test22.m (+1/-1)
CHOLMOD/MATLAB/Test/test23.m (+1/-1)
CHOLMOD/MATLAB/Test/test24.m (+1/-1)
CHOLMOD/MATLAB/Test/test25.m (+1/-1)
CHOLMOD/MATLAB/Test/test26.m (+1/-1)
CHOLMOD/MATLAB/Test/test27.m (+1/-1)
CHOLMOD/MATLAB/Test/test28.m (+1/-1)
CHOLMOD/MATLAB/Test/test3.m (+1/-1)
CHOLMOD/MATLAB/Test/test4.m (+1/-1)
CHOLMOD/MATLAB/Test/test5.m (+1/-1)
CHOLMOD/MATLAB/Test/test6.m (+1/-1)
CHOLMOD/MATLAB/Test/test7.m (+1/-1)
CHOLMOD/MATLAB/Test/test8.m (+1/-1)
CHOLMOD/MATLAB/Test/test9.m (+1/-3)
CHOLMOD/MATLAB/Test/testmm.m (+1/-1)
CHOLMOD/MATLAB/Test/testsolve.m (+1/-1)
CHOLMOD/MATLAB/Windows/README.txt (+2/-0)
CHOLMOD/MATLAB/analyze.c (+2/-2)
CHOLMOD/MATLAB/analyze.m (+1/-2)
CHOLMOD/MATLAB/bisect.c (+5/-5)
CHOLMOD/MATLAB/bisect.m (+1/-2)
CHOLMOD/MATLAB/chol2.c (+2/-2)
CHOLMOD/MATLAB/chol2.m (+2/-3)
CHOLMOD/MATLAB/cholmod2.c (+4/-4)
CHOLMOD/MATLAB/cholmod2.m (+1/-2)
CHOLMOD/MATLAB/cholmod_demo.m (+3/-11)
CHOLMOD/MATLAB/cholmod_make.m (+117/-129)
CHOLMOD/MATLAB/cholmod_matlab.c (+95/-95)
CHOLMOD/MATLAB/cholmod_matlab.h (+60/-60)
CHOLMOD/MATLAB/etree2.c (+8/-8)
CHOLMOD/MATLAB/etree2.m (+1/-2)
CHOLMOD/MATLAB/graph_demo.m (+2/-6)
CHOLMOD/MATLAB/lchol.c (+2/-2)
CHOLMOD/MATLAB/lchol.m (+2/-3)
CHOLMOD/MATLAB/ldl_normest.m (+1/-7)
CHOLMOD/MATLAB/ldlchol.c (+2/-2)
CHOLMOD/MATLAB/ldlchol.m (+1/-3)
CHOLMOD/MATLAB/ldlsolve.c (+6/-6)
CHOLMOD/MATLAB/ldlsolve.m (+1/-2)
CHOLMOD/MATLAB/ldlsplit.m (+1/-2)
CHOLMOD/MATLAB/ldlupdate.c (+6/-6)
CHOLMOD/MATLAB/ldlupdate.m (+1/-2)
CHOLMOD/MATLAB/lsubsolve.c (+247/-0)
CHOLMOD/MATLAB/lxbpattern.c (+150/-0)
CHOLMOD/MATLAB/metis.c (+5/-5)
CHOLMOD/MATLAB/metis.m (+1/-2)
CHOLMOD/MATLAB/mread.c (+3/-3)
CHOLMOD/MATLAB/mread.m (+1/-2)
CHOLMOD/MATLAB/mwrite.c (+1/-1)
CHOLMOD/MATLAB/nesdis.c (+9/-9)
CHOLMOD/MATLAB/nesdis.m (+1/-2)
CHOLMOD/MATLAB/rename.h (+0/-10)
CHOLMOD/MATLAB/resymbol.c (+5/-5)
CHOLMOD/MATLAB/resymbol.m (+1/-2)
CHOLMOD/MATLAB/sdmult.c (+2/-2)
CHOLMOD/MATLAB/sdmult.m (+1/-2)
CHOLMOD/MATLAB/septree.c (+7/-7)
CHOLMOD/MATLAB/septree.m (+1/-2)
CHOLMOD/MATLAB/sparse2.m (+1/-2)
CHOLMOD/MATLAB/spsym.c (+2/-2)
CHOLMOD/MATLAB/spsym.m (+1/-2)
CHOLMOD/MATLAB/symbfact2.c (+13/-13)
CHOLMOD/MATLAB/symbfact2.m (+1/-2)
CHOLMOD/Makefile (+27/-11)
CHOLMOD/MatrixOps/License.txt (+1/-1)
CHOLMOD/MatrixOps/cholmod_drop.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_horzcat.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_norm.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_scale.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_sdmult.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_ssmult.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_submatrix.c (+3/-3)
CHOLMOD/MatrixOps/cholmod_symmetry.c (+1/-1)
CHOLMOD/MatrixOps/cholmod_vertcat.c (+1/-1)
CHOLMOD/MatrixOps/t_cholmod_sdmult.c (+1/-1)
CHOLMOD/Modify/License.txt (+1/-1)
CHOLMOD/Modify/cholmod_rowadd.c (+1/-1)
CHOLMOD/Modify/cholmod_rowdel.c (+1/-1)
CHOLMOD/Modify/cholmod_updown.c (+1/-1)
CHOLMOD/Modify/t_cholmod_updown.c (+1/-1)
CHOLMOD/Modify/t_cholmod_updown_numkr.c (+1/-1)
CHOLMOD/Partition/License.txt (+1/-1)
CHOLMOD/Partition/cholmod_camd.c (+4/-4)
CHOLMOD/Partition/cholmod_ccolamd.c (+3/-4)
CHOLMOD/Partition/cholmod_csymamd.c (+3/-4)
CHOLMOD/Partition/cholmod_metis.c (+4/-5)
CHOLMOD/Partition/cholmod_nesdis.c (+6/-6)
CHOLMOD/README.txt (+13/-16)
CHOLMOD/Supernodal/License.txt (+1/-1)
CHOLMOD/Supernodal/cholmod_super_numeric.c (+11/-2)
CHOLMOD/Supernodal/cholmod_super_solve.c (+1/-1)
CHOLMOD/Supernodal/cholmod_super_symbolic.c (+1/-1)
CHOLMOD/Supernodal/t_cholmod_gpu.c (+972/-0)
CHOLMOD/Supernodal/t_cholmod_super_numeric.c (+234/-94)
CHOLMOD/Supernodal/t_cholmod_super_solve.c (+1/-1)
CHOLMOD/Tcov/License.txt (+1/-1)
CHOLMOD/Tcov/Make.inc (+1/-1)
CHOLMOD/Tcov/Makefile (+71/-27)
CHOLMOD/Tcov/Matrix/rename.h (+0/-10)
CHOLMOD/Tcov/README.txt (+16/-0)
CHOLMOD/Tcov/amdtest.c (+2/-2)
CHOLMOD/Tcov/aug.c (+1/-1)
CHOLMOD/Tcov/camdtest.c (+3/-3)
CHOLMOD/Tcov/cctest.c (+3/-3)
CHOLMOD/Tcov/cm.c (+13/-5)
CHOLMOD/Tcov/cm.h (+4/-3)
CHOLMOD/Tcov/cmread.c (+2/-2)
CHOLMOD/Tcov/covs (+3/-3)
CHOLMOD/Tcov/ctest.c (+1/-1)
CHOLMOD/Tcov/huge.c (+4/-4)
CHOLMOD/Tcov/leak.c (+1/-1)
CHOLMOD/Tcov/lpdemo.c (+1/-1)
CHOLMOD/Tcov/memory.c (+2/-2)
CHOLMOD/Tcov/null.c (+13/-6)
CHOLMOD/Tcov/null2.c (+34/-17)
CHOLMOD/Tcov/raw_factor.c (+3/-3)
CHOLMOD/Tcov/solve.c (+383/-18)
CHOLMOD/Tcov/test_ops.c (+7/-6)
CHOLMOD/Tcov/unpack.c (+1/-1)
CHOLMOD/Valgrind/License.txt (+1/-1)
CHOLMOD/Valgrind/Make.inc (+1/-1)
CHOLMOD/Valgrind/README.txt (+1/-0)
COLAMD/Demo/Makefile (+7/-6)
COLAMD/Demo/colamd_example.c (+1/-2)
COLAMD/Demo/colamd_example.out (+2/-2)
COLAMD/Demo/colamd_l_example.c (+9/-12)
COLAMD/Demo/colamd_l_example.out (+2/-2)
COLAMD/Doc/ChangeLog (+16/-0)
COLAMD/Include/colamd.h (+26/-30)
COLAMD/Lib/Makefile (+10/-9)
COLAMD/MATLAB/Makefile (+0/-35)
COLAMD/MATLAB/colamd_demo.m (+1/-2)
COLAMD/MATLAB/colamd_make.m (+2/-1)
COLAMD/MATLAB/colamd_test.m (+2/-1)
COLAMD/MATLAB/colamdmex.c (+24/-32)
COLAMD/MATLAB/colamdtestmex.c (+46/-54)
COLAMD/MATLAB/symamdmex.c (+22/-29)
COLAMD/MATLAB/symamdtestmex.c (+43/-51)
COLAMD/Makefile (+25/-18)
COLAMD/README.txt (+10/-19)
COLAMD/Source/colamd.c (+23/-30)
COLAMD/Source/colamd_global.c (+1/-1)
CSparse/Demo/Makefile (+6/-8)
CSparse/Demo/README.txt (+2/-0)
CSparse/Demo/cs_demo.c (+25/-22)
CSparse/Demo/cs_demo.h (+3/-3)
CSparse/Demo/cs_demo.out (+21/-21)
CSparse/Demo/cs_demo1.c (+1/-1)
CSparse/Doc/ChangeLog (+37/-0)
CSparse/Doc/License.txt (+1/-1)
CSparse/Include/cs.h (+88/-79)
CSparse/Lib/Makefile (+8/-10)
CSparse/MATLAB/CSparse/Contents.m (+1/-2)
CSparse/MATLAB/CSparse/Makefile (+0/-259)
CSparse/MATLAB/CSparse/README.txt (+2/-0)
CSparse/MATLAB/CSparse/ccspy.m (+1/-2)
CSparse/MATLAB/CSparse/cs_add.m (+1/-2)
CSparse/MATLAB/CSparse/cs_amd.m (+1/-2)
CSparse/MATLAB/CSparse/cs_amd_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_chol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_chol_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_cholsol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_cholsol_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_counts.m (+1/-2)
CSparse/MATLAB/CSparse/cs_counts_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_dmperm.m (+1/-2)
CSparse/MATLAB/CSparse/cs_dmperm_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_dmsol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_dmspy.m (+1/-2)
CSparse/MATLAB/CSparse/cs_droptol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_droptol_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_esep.m (+1/-2)
CSparse/MATLAB/CSparse/cs_etree.m (+1/-2)
CSparse/MATLAB/CSparse/cs_etree_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_gaxpy.m (+1/-2)
CSparse/MATLAB/CSparse/cs_lsolve.m (+1/-2)
CSparse/MATLAB/CSparse/cs_lsolve_mex.c (+2/-2)
CSparse/MATLAB/CSparse/cs_ltsolve.m (+1/-2)
CSparse/MATLAB/CSparse/cs_lu.m (+1/-2)
CSparse/MATLAB/CSparse/cs_lu_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_lusol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_lusol_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_make.m (+54/-23)
CSparse/MATLAB/CSparse/cs_mex.c (+16/-16)
CSparse/MATLAB/CSparse/cs_mex.h (+6/-6)
CSparse/MATLAB/CSparse/cs_multiply.m (+1/-2)
CSparse/MATLAB/CSparse/cs_must_compile.m (+1/-2)
CSparse/MATLAB/CSparse/cs_nd.m (+1/-2)
CSparse/MATLAB/CSparse/cs_nsep.m (+1/-2)
CSparse/MATLAB/CSparse/cs_permute.m (+1/-2)
CSparse/MATLAB/CSparse/cs_permute_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_print.m (+1/-2)
CSparse/MATLAB/CSparse/cs_print_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_qleft.m (+1/-2)
CSparse/MATLAB/CSparse/cs_qr.m (+1/-2)
CSparse/MATLAB/CSparse/cs_qr_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_qright.m (+1/-2)
CSparse/MATLAB/CSparse/cs_qrsol.m (+1/-2)
CSparse/MATLAB/CSparse/cs_qrsol_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_randperm.m (+1/-2)
CSparse/MATLAB/CSparse/cs_randperm_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_scc.m (+1/-2)
CSparse/MATLAB/CSparse/cs_scc2.m (+1/-2)
CSparse/MATLAB/CSparse/cs_scc_mex.c (+2/-2)
CSparse/MATLAB/CSparse/cs_sep.m (+1/-2)
CSparse/MATLAB/CSparse/cs_sparse.m (+1/-2)
CSparse/MATLAB/CSparse/cs_sqr.m (+2/-3)
CSparse/MATLAB/CSparse/cs_sqr_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_symperm.m (+1/-2)
CSparse/MATLAB/CSparse/cs_symperm_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_thumb_mex.c (+4/-4)
CSparse/MATLAB/CSparse/cs_transpose.m (+1/-2)
CSparse/MATLAB/CSparse/cs_updown.m (+1/-2)
CSparse/MATLAB/CSparse/cs_updown_mex.c (+1/-1)
CSparse/MATLAB/CSparse/cs_usolve.m (+1/-2)
CSparse/MATLAB/CSparse/cs_usolve_mex.c (+2/-2)
CSparse/MATLAB/CSparse/cs_utsolve.m (+1/-2)
CSparse/MATLAB/CSparse/cspy.m (+1/-2)
CSparse/MATLAB/CSparse/private/drawbox.m (+1/-2)
CSparse/MATLAB/CSparse/private/drawboxes.m (+1/-2)
CSparse/MATLAB/Demo/README.txt (+2/-0)
CSparse/MATLAB/Demo/cs_demo.m (+1/-3)
CSparse/MATLAB/Demo/cs_demo1.m (+2/-3)
CSparse/MATLAB/Demo/cs_demo2.m (+2/-3)
CSparse/MATLAB/Demo/cs_demo3.m (+2/-3)
CSparse/MATLAB/Demo/private/demo2.m (+1/-2)
CSparse/MATLAB/Demo/private/demo3.m (+1/-3)
CSparse/MATLAB/Demo/private/ex2.m (+1/-2)
CSparse/MATLAB/Demo/private/ex3.m (+1/-2)
CSparse/MATLAB/Demo/private/ex_1.m (+1/-2)
CSparse/MATLAB/Demo/private/frand.m (+2/-2)
CSparse/MATLAB/Demo/private/get_problem.m (+1/-4)
CSparse/MATLAB/Demo/private/is_sym.m (+1/-2)
CSparse/MATLAB/Demo/private/mesh2d1.m (+1/-2)
CSparse/MATLAB/Demo/private/mesh2d2.m (+1/-2)
CSparse/MATLAB/Demo/private/mesh3d1.m (+1/-2)
CSparse/MATLAB/Demo/private/mesh3d2.m (+1/-2)
CSparse/MATLAB/Demo/private/print_order.m (+1/-2)
CSparse/MATLAB/Demo/private/print_resid.m (+1/-2)
CSparse/MATLAB/Demo/private/rhs.m (+1/-2)
CSparse/MATLAB/Makefile (+0/-14)
CSparse/MATLAB/README.txt (+2/-0)
CSparse/MATLAB/Test/Makefile (+0/-51)
CSparse/MATLAB/Test/README.txt (+2/-0)
CSparse/MATLAB/Test/another_colormap.m (+1/-3)
CSparse/MATLAB/Test/check_if_same.m (+1/-2)
CSparse/MATLAB/Test/chol_downdate.m (+1/-2)
CSparse/MATLAB/Test/chol_example.m (+1/-3)
CSparse/MATLAB/Test/chol_left.m (+1/-2)
CSparse/MATLAB/Test/chol_left2.m (+1/-2)
CSparse/MATLAB/Test/chol_right.m (+1/-2)
CSparse/MATLAB/Test/chol_super.m (+1/-2)
CSparse/MATLAB/Test/chol_up.m (+1/-2)
CSparse/MATLAB/Test/chol_update.m (+1/-2)
CSparse/MATLAB/Test/chol_updown.m (+1/-2)
CSparse/MATLAB/Test/choldn.m (+1/-2)
CSparse/MATLAB/Test/cholup.m (+1/-2)
CSparse/MATLAB/Test/cholupdown.m (+1/-3)
CSparse/MATLAB/Test/cond1est.m (+1/-2)
CSparse/MATLAB/Test/cs_fiedler.m (+1/-2)
CSparse/MATLAB/Test/cs_frand.m (+1/-2)
CSparse/MATLAB/Test/cs_frand_mex.c (+4/-4)
CSparse/MATLAB/Test/cs_ipvec.m (+1/-2)
CSparse/MATLAB/Test/cs_ipvec_mex.c (+2/-2)
CSparse/MATLAB/Test/cs_maxtransr.m (+1/-2)
CSparse/MATLAB/Test/cs_maxtransr_mex.c (+10/-10)
CSparse/MATLAB/Test/cs_pvec.m (+1/-2)
CSparse/MATLAB/Test/cs_pvec_mex.c (+2/-2)
CSparse/MATLAB/Test/cs_q1.m (+1/-2)
CSparse/MATLAB/Test/cs_reach.m (+1/-2)
CSparse/MATLAB/Test/cs_reach_mex.c (+3/-3)
CSparse/MATLAB/Test/cs_reachr.m (+1/-2)
CSparse/MATLAB/Test/cs_reachr_mex.c (+7/-7)
CSparse/MATLAB/Test/cs_rowcnt.m (+1/-3)
CSparse/MATLAB/Test/cs_rowcnt_mex.c (+7/-7)
CSparse/MATLAB/Test/cs_sparse2.m (+1/-3)
CSparse/MATLAB/Test/cs_sparse2_mex.c (+1/-1)
CSparse/MATLAB/Test/cs_test_make.m (+31/-5)
CSparse/MATLAB/Test/cspy_test.m (+1/-2)
CSparse/MATLAB/Test/dmperm_test.m (+1/-2)
CSparse/MATLAB/Test/dmspy_test.m (+1/-3)
CSparse/MATLAB/Test/etree_sample.m (+1/-2)
CSparse/MATLAB/Test/givens2.m (+1/-2)
CSparse/MATLAB/Test/gqr3.m (+1/-3)
CSparse/MATLAB/Test/happly.m (+1/-3)
CSparse/MATLAB/Test/hmake1.m (+1/-2)
CSparse/MATLAB/Test/house.m (+1/-2)
CSparse/MATLAB/Test/lu_left.m (+1/-2)
CSparse/MATLAB/Test/lu_right.m (+1/-2)
CSparse/MATLAB/Test/lu_rightp.m (+1/-2)
CSparse/MATLAB/Test/lu_rightpr.m (+1/-2)
CSparse/MATLAB/Test/lu_rightr.m (+1/-2)
CSparse/MATLAB/Test/mynormest1.m (+1/-3)
CSparse/MATLAB/Test/myqr.m (+1/-3)
CSparse/MATLAB/Test/norm1est.m (+1/-2)
CSparse/MATLAB/Test/qr2.m (+1/-2)
CSparse/MATLAB/Test/qr_givens.m (+1/-2)
CSparse/MATLAB/Test/qr_givens_full.m (+1/-2)
CSparse/MATLAB/Test/qr_left.m (+1/-2)
CSparse/MATLAB/Test/qr_right.m (+1/-2)
CSparse/MATLAB/Test/sample_colormap.m (+1/-3)
CSparse/MATLAB/Test/signum.m (+1/-2)
CSparse/MATLAB/Test/sqr_example.m (+1/-2)
CSparse/MATLAB/Test/test1.m (+8/-3)
CSparse/MATLAB/Test/test10.m (+1/-4)
CSparse/MATLAB/Test/test11.m (+1/-2)
CSparse/MATLAB/Test/test12.m (+1/-2)
CSparse/MATLAB/Test/test13.m (+1/-3)
CSparse/MATLAB/Test/test14.m (+1/-3)
CSparse/MATLAB/Test/test15.m (+1/-3)
CSparse/MATLAB/Test/test16.m (+1/-2)
CSparse/MATLAB/Test/test17.m (+1/-3)
CSparse/MATLAB/Test/test18.m (+1/-3)
CSparse/MATLAB/Test/test19.m (+1/-3)
CSparse/MATLAB/Test/test2.m (+1/-2)
CSparse/MATLAB/Test/test20.m (+1/-3)
CSparse/MATLAB/Test/test21.m (+1/-3)
CSparse/MATLAB/Test/test22.m (+1/-3)
CSparse/MATLAB/Test/test23.m (+1/-2)
CSparse/MATLAB/Test/test24.m (+1/-3)
CSparse/MATLAB/Test/test25.m (+1/-3)
CSparse/MATLAB/Test/test26.m (+1/-3)
CSparse/MATLAB/Test/test27.m (+1/-4)
CSparse/MATLAB/Test/test28.m (+1/-2)
CSparse/MATLAB/Test/test3.m (+1/-2)
CSparse/MATLAB/Test/test4.m (+1/-3)
CSparse/MATLAB/Test/test5.m (+1/-3)
CSparse/MATLAB/Test/test6.m (+4/-3)
CSparse/MATLAB/Test/test7.m (+1/-2)
CSparse/MATLAB/Test/test8.m (+2/-2)
CSparse/MATLAB/Test/test9.m (+1/-2)
CSparse/MATLAB/Test/test_qr.m (+1/-2)
CSparse/MATLAB/Test/test_qr1.m (+1/-3)
CSparse/MATLAB/Test/test_qrsol.m (+1/-2)
CSparse/MATLAB/Test/test_randperms.m (+1/-2)
CSparse/MATLAB/Test/test_sep.m (+1/-3)
CSparse/MATLAB/Test/testall.m (+2/-2)
CSparse/MATLAB/Test/testh.m (+1/-3)
CSparse/MATLAB/UFget/Contents.m (+3/-1)
CSparse/MATLAB/UFget/Makefile (+7/-0)
CSparse/MATLAB/UFget/README.txt (+116/-65)
CSparse/MATLAB/UFget/UFget.m (+32/-6)
CSparse/MATLAB/UFget/UFget_defaults.m (+56/-28)
CSparse/MATLAB/UFget/UFget_example.m (+1/-1)
CSparse/MATLAB/UFget/UFget_lookup.m (+1/-1)
CSparse/MATLAB/UFget/UFgrep.m (+1/-1)
CSparse/MATLAB/UFget/UFgui.java (+2589/-0)
CSparse/MATLAB/UFget/UFhelp.html (+545/-0)
CSparse/MATLAB/UFget/UFkinds.m (+71/-0)
CSparse/MATLAB/UFget/UFsettings.txt (+6/-0)
CSparse/MATLAB/UFget/UFsvd.m (+54/-0)
CSparse/MATLAB/UFget/UFweb.m (+3/-14)
CSparse/MATLAB/UFget/matrices/UFstats.csv (+2652/-0)
CSparse/MATLAB/cs_install.m (+6/-18)
CSparse/Makefile (+15/-5)
CSparse/README.txt (+3/-2)
CSparse/Source/README.txt (+2/-0)
CSparse/Source/cs_add.c (+2/-2)
CSparse/Source/cs_amd.c (+9/-9)
CSparse/Source/cs_chol.c (+2/-2)
CSparse/Source/cs_cholsol.c (+2/-2)
CSparse/Source/cs_compress.c (+2/-2)
CSparse/Source/cs_counts.c (+6/-6)
CSparse/Source/cs_cumsum.c (+3/-3)
CSparse/Source/cs_dfs.c (+2/-2)
CSparse/Source/cs_dmperm.c (+13/-13)
CSparse/Source/cs_droptol.c (+2/-2)
CSparse/Source/cs_dropzeros.c (+2/-2)
CSparse/Source/cs_dupl.c (+3/-3)
CSparse/Source/cs_entry.c (+1/-1)
CSparse/Source/cs_ereach.c (+2/-2)
CSparse/Source/cs_etree.c (+4/-4)
CSparse/Source/cs_fkeep.c (+2/-2)
CSparse/Source/cs_gaxpy.c (+2/-2)
CSparse/Source/cs_happly.c (+2/-2)
CSparse/Source/cs_house.c (+2/-2)
CSparse/Source/cs_ipvec.c (+2/-2)
CSparse/Source/cs_leaf.c (+3/-3)
CSparse/Source/cs_load.c (+3/-3)
CSparse/Source/cs_lsolve.c (+2/-2)
CSparse/Source/cs_ltsolve.c (+2/-2)
CSparse/Source/cs_lu.c (+3/-3)
CSparse/Source/cs_lusol.c (+2/-2)
CSparse/Source/cs_malloc.c (+3/-3)
CSparse/Source/cs_maxtrans.c (+7/-7)
CSparse/Source/cs_multiply.c (+2/-2)
CSparse/Source/cs_norm.c (+1/-1)
CSparse/Source/cs_permute.c (+2/-2)
CSparse/Source/cs_pinv.c (+3/-3)
CSparse/Source/cs_post.c (+4/-4)
CSparse/Source/cs_print.c (+12/-9)
CSparse/Source/cs_pvec.c (+2/-2)
CSparse/Source/cs_qr.c (+2/-2)
CSparse/Source/cs_qrsol.c (+2/-2)
CSparse/Source/cs_randperm.c (+4/-4)
CSparse/Source/cs_reach.c (+2/-2)
CSparse/Source/cs_scatter.c (+3/-3)
CSparse/Source/cs_scc.c (+2/-2)
CSparse/Source/cs_schol.c (+3/-3)
CSparse/Source/cs_spsolve.c (+3/-3)
CSparse/Source/cs_sqr.c (+7/-8)
CSparse/Source/cs_symperm.c (+3/-3)
CSparse/Source/cs_tdfs.c (+2/-2)
CSparse/Source/cs_transpose.c (+3/-3)
CSparse/Source/cs_updown.c (+2/-2)
CSparse/Source/cs_usolve.c (+2/-2)
CSparse/Source/cs_util.c (+22/-22)
CSparse/Source/cs_utsolve.c (+2/-2)
CSparse/Tcov/Makefile (+4/-4)
CSparse/Tcov/README.txt (+2/-0)
CSparse/Tcov/cstcov_malloc_test.c (+4/-4)
CSparse/Tcov/cstcov_malloc_test.h (+1/-1)
CSparse/Tcov/cstcov_test.c (+2/-2)
CSparse_to_CXSparse (+45/-44)
CXSparse/Demo/Makefile (+27/-27)
CXSparse/Demo/README.txt (+2/-0)
CXSparse/Demo/cs_ci_demo.c (+9/-6)
CXSparse/Demo/cs_cl_demo.c (+25/-22)
CXSparse/Demo/cs_cl_demo.h (+3/-3)
CXSparse/Demo/cs_cl_demo1.c (+1/-1)
CXSparse/Demo/cs_demo.c (+9/-6)
CXSparse/Demo/cs_demo.out (+119/-119)
CXSparse/Demo/cs_di_demo.c (+9/-6)
CXSparse/Demo/cs_dl_demo.c (+25/-22)
CXSparse/Demo/cs_dl_demo.h (+3/-3)
CXSparse/Demo/cs_dl_demo1.c (+1/-1)
CXSparse/Demo/cs_ldemo.c (+1/-1)
CXSparse/Doc/ChangeLog (+37/-0)
CXSparse/Doc/License.txt (+1/-1)
CXSparse/Include/cs.h (+182/-180)
CXSparse/Lib/Makefile (+13/-16)
CXSparse/MATLAB/CSparse/Contents.m (+1/-2)
CXSparse/MATLAB/CSparse/Makefile (+0/-171)
CXSparse/MATLAB/CSparse/README.txt (+2/-0)
CXSparse/MATLAB/CSparse/ccspy.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_add.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_amd.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_chol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_cholsol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_counts.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_dmperm.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_dmsol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_dmspy.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_droptol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_esep.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_etree.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_gaxpy.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_lsolve.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_ltsolve.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_lu.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_lusol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_make.m (+3/-3)
CXSparse/MATLAB/CSparse/cs_multiply.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_must_compile.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_nd.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_nsep.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_permute.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_print.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_qleft.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_qr.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_qright.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_qrsol.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_randperm.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_scc.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_scc2.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_sep.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_sparse.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_sqr.m (+2/-3)
CXSparse/MATLAB/CSparse/cs_symperm.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_transpose.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_updown.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_usolve.m (+1/-2)
CXSparse/MATLAB/CSparse/cs_utsolve.m (+1/-2)
CXSparse/MATLAB/CSparse/cspy.m (+1/-2)
CXSparse/MATLAB/CSparse/private/cs_make_helper.m (+33/-9)
CXSparse/MATLAB/CSparse/private/drawbox.m (+1/-2)
CXSparse/MATLAB/CSparse/private/drawboxes.m (+1/-2)
CXSparse/MATLAB/Demo/README.txt (+2/-0)
CXSparse/MATLAB/Demo/cs_demo.m (+1/-3)
CXSparse/MATLAB/Demo/cs_demo1.m (+2/-3)
CXSparse/MATLAB/Demo/cs_demo2.m (+2/-3)
CXSparse/MATLAB/Demo/cs_demo3.m (+2/-3)
CXSparse/MATLAB/Demo/private/demo2.m (+1/-2)
CXSparse/MATLAB/Demo/private/demo3.m (+1/-3)
CXSparse/MATLAB/Demo/private/ex2.m (+1/-2)
CXSparse/MATLAB/Demo/private/ex3.m (+1/-2)
CXSparse/MATLAB/Demo/private/ex_1.m (+1/-2)
CXSparse/MATLAB/Demo/private/frand.m (+2/-2)
CXSparse/MATLAB/Demo/private/get_problem.m (+1/-4)
CXSparse/MATLAB/Demo/private/is_sym.m (+1/-2)
CXSparse/MATLAB/Demo/private/mesh2d1.m (+1/-2)
CXSparse/MATLAB/Demo/private/mesh2d2.m (+1/-2)
CXSparse/MATLAB/Demo/private/mesh3d1.m (+1/-2)
CXSparse/MATLAB/Demo/private/mesh3d2.m (+1/-2)
CXSparse/MATLAB/Demo/private/print_order.m (+1/-2)
CXSparse/MATLAB/Demo/private/print_resid.m (+1/-2)
CXSparse/MATLAB/Demo/private/rhs.m (+1/-2)
CXSparse/MATLAB/Makefile (+0/-14)
CXSparse/MATLAB/README.txt (+2/-0)
CXSparse/MATLAB/Test/Makefile (+0/-53)
CXSparse/MATLAB/Test/README.txt (+2/-0)
CXSparse/MATLAB/Test/another_colormap.m (+1/-3)
CXSparse/MATLAB/Test/check_if_same.m (+1/-2)
CXSparse/MATLAB/Test/chol_downdate.m (+1/-2)
CXSparse/MATLAB/Test/chol_example.m (+1/-3)
CXSparse/MATLAB/Test/chol_left.m (+1/-2)
CXSparse/MATLAB/Test/chol_left2.m (+1/-2)
CXSparse/MATLAB/Test/chol_right.m (+1/-2)
CXSparse/MATLAB/Test/chol_super.m (+1/-2)
CXSparse/MATLAB/Test/chol_up.m (+1/-2)
CXSparse/MATLAB/Test/chol_update.m (+1/-2)
CXSparse/MATLAB/Test/chol_updown.m (+1/-2)
CXSparse/MATLAB/Test/chol_updown2.m (+1/-2)
CXSparse/MATLAB/Test/choldn.m (+1/-2)
CXSparse/MATLAB/Test/cholup.m (+1/-2)
CXSparse/MATLAB/Test/cholupdown.m (+1/-3)
CXSparse/MATLAB/Test/cond1est.m (+1/-2)
CXSparse/MATLAB/Test/cs_fiedler.m (+1/-2)
CXSparse/MATLAB/Test/cs_frand.m (+1/-2)
CXSparse/MATLAB/Test/cs_ipvec.m (+1/-2)
CXSparse/MATLAB/Test/cs_maxtransr.m (+1/-2)
CXSparse/MATLAB/Test/cs_pvec.m (+1/-2)
CXSparse/MATLAB/Test/cs_q1.m (+1/-2)
CXSparse/MATLAB/Test/cs_reach.m (+1/-2)
CXSparse/MATLAB/Test/cs_reachr.m (+1/-2)
CXSparse/MATLAB/Test/cs_rowcnt.m (+1/-3)
CXSparse/MATLAB/Test/cs_sparse2.m (+1/-3)
CXSparse/MATLAB/Test/cs_test_make.m (+4/-6)
CXSparse/MATLAB/Test/cspy_test.m (+1/-2)
CXSparse/MATLAB/Test/dmperm_test.m (+1/-2)
CXSparse/MATLAB/Test/dmspy_test.m (+1/-3)
CXSparse/MATLAB/Test/etree_sample.m (+1/-2)
CXSparse/MATLAB/Test/givens2.m (+1/-2)
CXSparse/MATLAB/Test/gqr3.m (+1/-3)
CXSparse/MATLAB/Test/happly.m (+1/-3)
CXSparse/MATLAB/Test/hmake1.m (+1/-2)
CXSparse/MATLAB/Test/house.m (+1/-2)
CXSparse/MATLAB/Test/lu_left.m (+1/-2)
CXSparse/MATLAB/Test/lu_right.m (+1/-2)
CXSparse/MATLAB/Test/lu_rightp.m (+1/-2)
CXSparse/MATLAB/Test/lu_rightpr.m (+1/-2)
CXSparse/MATLAB/Test/lu_rightr.m (+1/-2)
CXSparse/MATLAB/Test/mynormest1.m (+1/-3)
CXSparse/MATLAB/Test/myqr.m (+1/-3)
CXSparse/MATLAB/Test/norm1est.m (+1/-2)
CXSparse/MATLAB/Test/qr2.m (+1/-2)
CXSparse/MATLAB/Test/qr_givens.m (+1/-2)
CXSparse/MATLAB/Test/qr_givens_full.m (+1/-2)
CXSparse/MATLAB/Test/qr_left.m (+1/-2)
CXSparse/MATLAB/Test/qr_right.m (+1/-2)
CXSparse/MATLAB/Test/sample_colormap.m (+1/-3)
CXSparse/MATLAB/Test/signum.m (+1/-2)
CXSparse/MATLAB/Test/sqr_example.m (+1/-2)
CXSparse/MATLAB/Test/test1.m (+8/-3)
CXSparse/MATLAB/Test/test10.m (+1/-4)
CXSparse/MATLAB/Test/test11.m (+1/-2)
CXSparse/MATLAB/Test/test12.m (+1/-2)
CXSparse/MATLAB/Test/test13.m (+1/-3)
CXSparse/MATLAB/Test/test14.m (+1/-3)
CXSparse/MATLAB/Test/test15.m (+1/-3)
CXSparse/MATLAB/Test/test16.m (+1/-2)
CXSparse/MATLAB/Test/test17.m (+1/-3)
CXSparse/MATLAB/Test/test18.m (+1/-3)
CXSparse/MATLAB/Test/test19.m (+1/-3)
CXSparse/MATLAB/Test/test2.m (+1/-2)
CXSparse/MATLAB/Test/test20.m (+1/-3)
CXSparse/MATLAB/Test/test21.m (+1/-3)
CXSparse/MATLAB/Test/test22.m (+1/-3)
CXSparse/MATLAB/Test/test23.m (+1/-2)
CXSparse/MATLAB/Test/test24.m (+1/-3)
CXSparse/MATLAB/Test/test25.m (+1/-3)
CXSparse/MATLAB/Test/test26.m (+1/-3)
CXSparse/MATLAB/Test/test27.m (+1/-4)
CXSparse/MATLAB/Test/test28.m (+1/-2)
CXSparse/MATLAB/Test/test3.m (+1/-2)
CXSparse/MATLAB/Test/test4.m (+1/-3)
CXSparse/MATLAB/Test/test5.m (+1/-3)
CXSparse/MATLAB/Test/test6.m (+6/-2)
CXSparse/MATLAB/Test/test7.m (+1/-2)
CXSparse/MATLAB/Test/test8.m (+1/-2)
CXSparse/MATLAB/Test/test9.m (+1/-2)
CXSparse/MATLAB/Test/test_qr.m (+1/-2)
CXSparse/MATLAB/Test/test_qr1.m (+1/-3)
CXSparse/MATLAB/Test/test_qrsol.m (+1/-2)
CXSparse/MATLAB/Test/test_randperms.m (+1/-2)
CXSparse/MATLAB/Test/test_sep.m (+1/-3)
CXSparse/MATLAB/Test/testall.m (+2/-2)
CXSparse/MATLAB/Test/testh.m (+1/-3)
CXSparse/MATLAB/UFget/Contents.m (+3/-1)
CXSparse/MATLAB/UFget/Makefile (+7/-0)
CXSparse/MATLAB/UFget/README.txt (+116/-65)
CXSparse/MATLAB/UFget/UFget.m (+32/-6)
CXSparse/MATLAB/UFget/UFget_defaults.m (+56/-28)
CXSparse/MATLAB/UFget/UFget_example.m (+1/-1)
CXSparse/MATLAB/UFget/UFget_lookup.m (+1/-1)
CXSparse/MATLAB/UFget/UFgrep.m (+1/-1)
CXSparse/MATLAB/UFget/UFgui.java (+2589/-0)
CXSparse/MATLAB/UFget/UFhelp.html (+545/-0)
CXSparse/MATLAB/UFget/UFkinds.m (+71/-0)
CXSparse/MATLAB/UFget/UFsettings.txt (+6/-0)
CXSparse/MATLAB/UFget/UFsvd.m (+54/-0)
CXSparse/MATLAB/UFget/UFweb.m (+3/-14)
CXSparse/MATLAB/UFget/matrices/UFstats.csv (+2652/-0)
CXSparse/MATLAB/cs_install.m (+6/-14)
CXSparse/Makefile (+27/-6)
CXSparse/README.txt (+38/-24)
CXSparse/Source/README.txt (+2/-0)
CXSparse/Source/cs_amd.c (+2/-2)
CXSparse/Source/cs_convert.c (+6/-6)
CXSparse/Source/cs_load.c (+5/-5)
CXSparse/Source/cs_print.c (+16/-11)
CXSparse/Source/cs_randperm.c (+1/-1)
CXSparse/Source/cs_sqr.c (+0/-1)
CXSparse/Source/cs_util.c (+5/-5)
CXSparse/Tcov/Makefile (+36/-32)
CXSparse/Tcov/README.txt (+2/-0)
CXSparse/Tcov/cstcov_test.c (+2/-2)
CXSparse_newfiles/Demo/Makefile (+27/-27)
CXSparse_newfiles/Demo/README.txt (+2/-0)
CXSparse_newfiles/Demo/cs_ldemo.c (+1/-1)
CXSparse_newfiles/Doc/License.txt (+1/-1)
CXSparse_newfiles/Include/cs.h (+182/-180)
CXSparse_newfiles/Lib/Makefile (+13/-16)
CXSparse_newfiles/MATLAB/CSparse/Contents.m (+1/-2)
CXSparse_newfiles/MATLAB/CSparse/Makefile (+0/-171)
CXSparse_newfiles/MATLAB/CSparse/README.txt (+2/-0)
CXSparse_newfiles/MATLAB/CSparse/cs_esep.m (+1/-2)
CXSparse_newfiles/MATLAB/CSparse/cs_make.m (+3/-3)
CXSparse_newfiles/MATLAB/CSparse/cs_transpose.m (+1/-2)
CXSparse_newfiles/MATLAB/CSparse/private/cs_make_helper.m (+33/-9)
CXSparse_newfiles/MATLAB/Demo/README.txt (+2/-0)
CXSparse_newfiles/MATLAB/Demo/cs_demo.m (+1/-3)
CXSparse_newfiles/MATLAB/README.txt (+2/-0)
CXSparse_newfiles/MATLAB/Test/Makefile (+0/-53)
CXSparse_newfiles/MATLAB/Test/README.txt (+2/-0)
CXSparse_newfiles/MATLAB/Test/chol_updown2.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/cholupdown.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/cs_fiedler.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/cs_test_make.m (+4/-6)
CXSparse_newfiles/MATLAB/Test/house.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/norm1est.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test1.m (+8/-3)
CXSparse_newfiles/MATLAB/Test/test10.m (+1/-4)
CXSparse_newfiles/MATLAB/Test/test11.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test12.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test13.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test14.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test15.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test16.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test17.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test18.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test19.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test2.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test20.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test21.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test22.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test23.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test24.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test25.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test26.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test27.m (+1/-4)
CXSparse_newfiles/MATLAB/Test/test28.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test3.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test4.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test5.m (+1/-3)
CXSparse_newfiles/MATLAB/Test/test6.m (+6/-2)
CXSparse_newfiles/MATLAB/Test/test7.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test8.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/test9.m (+1/-2)
CXSparse_newfiles/MATLAB/Test/testall.m (+2/-2)
CXSparse_newfiles/MATLAB/Test/testh.m (+1/-3)
CXSparse_newfiles/MATLAB/cs_install.m (+6/-14)
CXSparse_newfiles/Makefile (+51/-0)
CXSparse_newfiles/README.txt (+38/-24)
CXSparse_newfiles/Source/README.txt (+2/-0)
CXSparse_newfiles/Source/cs_convert.c (+6/-6)
CXSparse_newfiles/Source/cs_load.c (+26/-0)
CXSparse_newfiles/Source/cs_print.c (+51/-0)
CXSparse_newfiles/Tcov/Makefile (+36/-32)
CXSparse_newfiles/Tcov/README.txt (+2/-0)
Contents.m (+16/-9)
KLU/Demo/Makefile (+18/-13)
KLU/Demo/kludemo.out (+12/-12)
KLU/Demo/kluldemo.c (+12/-12)
KLU/Doc/ChangeLog (+26/-0)
KLU/Doc/KLU_UserGuide.bib (+22/-2)
KLU/Doc/KLU_UserGuide.tex (+53/-52)
KLU/Doc/Makefile (+2/-2)
KLU/Include/klu.h (+81/-70)
KLU/Include/klu_internal.h (+1/-1)
KLU/Include/klu_version.h (+3/-3)
KLU/Lib/Makefile (+6/-6)
KLU/MATLAB/Contents.m (+1/-1)
KLU/MATLAB/Makefile (+0/-699)
KLU/MATLAB/Makefile_no_CHOLMOD (+0/-263)
KLU/MATLAB/Test/klu_test.m (+2/-3)
KLU/MATLAB/Test/test1.m (+18/-21)
KLU/MATLAB/Test/test2.m (+10/-21)
KLU/MATLAB/Test/test3.m (+12/-12)
KLU/MATLAB/Test/test4.m (+9/-17)
KLU/MATLAB/Test/test5.m (+21/-27)
KLU/MATLAB/klu.m (+2/-2)
KLU/MATLAB/klu_demo.m (+1/-1)
KLU/MATLAB/klu_install.m (+5/-6)
KLU/MATLAB/klu_make.m (+129/-127)
KLU/MATLAB/klu_mex.c (+29/-28)
KLU/Makefile (+35/-8)
KLU/README.txt (+10/-10)
KLU/Source/klu.c (+1/-1)
KLU/Source/klu_memory.c (+2/-2)
KLU/Tcov/Makefile (+15/-12)
KLU/Tcov/README.txt (+2/-0)
KLU/Tcov/klutest.c (+12/-12)
KLU/User/Makefile (+9/-6)
KLU/User/README.txt (+2/-0)
KLU/User/klu_cholmod.h (+2/-3)
KLU/User/klu_l_cholmod.c (+8/-8)
LDL/Demo/Makefile (+6/-5)
LDL/Demo/ldlamd.out (+202/-172)
LDL/Demo/ldllamd.out (+202/-172)
LDL/Demo/ldllmain.out (+364/-0)
LDL/Demo/ldllsimple.c (+5/-4)
LDL/Demo/ldllsimple.out (+11/-0)
LDL/Demo/ldlmain.c (+49/-34)
LDL/Demo/ldlmain.out (+266/-236)
LDL/Demo/ldlsimple.c (+2/-2)
LDL/Doc/ChangeLog (+17/-0)
LDL/Doc/Makefile (+1/-1)
LDL/Doc/ldl_userguide.tex (+5/-7)
LDL/Include/ldl.h (+38/-30)
LDL/Lib/Makefile (+6/-6)
LDL/MATLAB/Contents.m (+1/-5)
LDL/MATLAB/Makefile (+0/-27)
LDL/MATLAB/ldl_install.m (+1/-1)
LDL/MATLAB/ldl_make.m (+3/-3)
LDL/MATLAB/ldldemo.m (+1/-2)
LDL/MATLAB/ldlmain2.m (+3/-2)
LDL/MATLAB/ldlmex.c (+19/-18)
LDL/MATLAB/ldlrow.m (+1/-1)
LDL/MATLAB/ldlsparse.m (+1/-1)
LDL/MATLAB/ldlsymbol.m (+1/-1)
LDL/MATLAB/ldlsymbolmex.c (+15/-14)
LDL/MATLAB/ldltest.m (+1/-2)
LDL/Makefile (+24/-16)
LDL/Matrix/A25 (+4/-2)
LDL/README.txt (+7/-5)
LDL/Source/ldl.c (+4/-5)
LINFACTOR/Contents.m (+0/-22)
LINFACTOR/README.txt (+0/-60)
LINFACTOR/linfactor.m (+0/-187)
LINFACTOR/lintest.m (+0/-153)
LINFACTOR/lintests.m (+0/-69)
MATLAB_Tools/Contents.m (+6/-1)
MATLAB_Tools/Factorize/@factorize/Contents.m (+0/-24)
MATLAB_Tools/Factorize/@factorize/disp.m (+0/-87)
MATLAB_Tools/Factorize/@factorize/double.m (+0/-18)
MATLAB_Tools/Factorize/@factorize/end.m (+0/-18)
MATLAB_Tools/Factorize/@factorize/factorize.m (+0/-157)
MATLAB_Tools/Factorize/@factorize/inverse.m (+0/-14)
MATLAB_Tools/Factorize/@factorize/minus.m (+0/-21)
MATLAB_Tools/Factorize/@factorize/mldivide.m (+0/-119)
MATLAB_Tools/Factorize/@factorize/mrdivide.m (+0/-123)
MATLAB_Tools/Factorize/@factorize/mtimes.m (+0/-25)
MATLAB_Tools/Factorize/@factorize/plus.m (+0/-20)
MATLAB_Tools/Factorize/@factorize/size.m (+0/-35)
MATLAB_Tools/Factorize/@factorize/subsref.m (+0/-108)
MATLAB_Tools/Factorize/Contents.m (+43/-15)
MATLAB_Tools/Factorize/Demo/factorize_demo.m (+335/-0)
MATLAB_Tools/Factorize/Demo/fdemo.m (+2/-0)
MATLAB_Tools/Factorize/Doc/factorize_demo.html (+633/-0)
MATLAB_Tools/Factorize/Doc/factorize_demo.tex (+590/-0)
MATLAB_Tools/Factorize/Doc/license.txt (+27/-0)
MATLAB_Tools/Factorize/README.txt (+15/-37)
MATLAB_Tools/Factorize/Test/Contents.m (+22/-0)
MATLAB_Tools/Factorize/Test/README.txt (+4/-0)
MATLAB_Tools/Factorize/Test/reset_rand.m (+15/-0)
MATLAB_Tools/Factorize/Test/test_accuracy.m (+105/-42)
MATLAB_Tools/Factorize/Test/test_all.m (+22/-12)
MATLAB_Tools/Factorize/Test/test_all.txt (+1187/-0)
MATLAB_Tools/Factorize/Test/test_all_cod.m (+30/-0)
MATLAB_Tools/Factorize/Test/test_all_svd.m (+77/-0)
MATLAB_Tools/Factorize/Test/test_cod.m (+121/-0)
MATLAB_Tools/Factorize/Test/test_disp.m (+160/-199)
MATLAB_Tools/Factorize/Test/test_errors.m (+290/-89)
MATLAB_Tools/Factorize/Test/test_factorize.m (+328/-180)
MATLAB_Tools/Factorize/Test/test_function.m (+317/-0)
MATLAB_Tools/Factorize/Test/test_functions.m (+63/-0)
MATLAB_Tools/Factorize/Test/test_performance.m (+72/-113)
MATLAB_Tools/Factorize/Test/test_svd.m (+214/-0)
MATLAB_Tools/Factorize/cod.m (+69/-0)
MATLAB_Tools/Factorize/cod_qmult.m (+46/-0)
MATLAB_Tools/Factorize/cod_sparse.m (+177/-0)
MATLAB_Tools/Factorize/factorization.m (+650/-0)
MATLAB_Tools/Factorize/factorization_chol_dense.m (+77/-0)
MATLAB_Tools/Factorize/factorization_chol_sparse.m (+40/-0)
MATLAB_Tools/Factorize/factorization_cod_dense.m (+50/-0)
MATLAB_Tools/Factorize/factorization_cod_sparse.m (+62/-0)
MATLAB_Tools/Factorize/factorization_ldl_dense.m (+62/-0)
MATLAB_Tools/Factorize/factorization_ldl_sparse.m (+43/-0)
MATLAB_Tools/Factorize/factorization_lu_dense.m (+59/-0)
MATLAB_Tools/Factorize/factorization_lu_sparse.m (+54/-0)
MATLAB_Tools/Factorize/factorization_qr_dense.m (+56/-0)
MATLAB_Tools/Factorize/factorization_qr_sparse.m (+54/-0)
MATLAB_Tools/Factorize/factorization_qrt_dense.m (+56/-0)
MATLAB_Tools/Factorize/factorization_qrt_sparse.m (+54/-0)
MATLAB_Tools/Factorize/factorization_svd.m (+211/-0)
MATLAB_Tools/Factorize/factorize.m (+369/-0)
MATLAB_Tools/Factorize/factorize1.m (+0/-201)
MATLAB_Tools/Factorize/factorize_demo.m (+0/-331)
MATLAB_Tools/Factorize/fdemo.m (+0/-2)
MATLAB_Tools/Factorize/html/factorize_demo.html (+0/-759)
MATLAB_Tools/Factorize/html/factorize_demo.tex (+0/-514)
MATLAB_Tools/Factorize/inverse.m (+19/-15)
MATLAB_Tools/Factorize/private/cheap_condest.m (+41/-0)
MATLAB_Tools/Factorize/private/get_diag.m (+15/-0)
MATLAB_Tools/Factorize/private/rank_est.m (+8/-0)
MATLAB_Tools/Factorize/rq.m (+175/-0)
MATLAB_Tools/GEE/Contents.m (+1/-6)
MATLAB_Tools/GEE/gee_its_short.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple_backsolve.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple_factorize.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple_forwardsolve.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple_resid.m (+1/-2)
MATLAB_Tools/GEE/gee_its_simple_test.m (+1/-2)
MATLAB_Tools/GEE/gee_its_sweet.m (+2/-3)
MATLAB_Tools/GEE/gee_its_too_short.m (+1/-2)
MATLAB_Tools/GEE/private/gee_its_simple_check.m (+1/-2)
MATLAB_Tools/LINFACTOR/Contents.m (+22/-0)
MATLAB_Tools/LINFACTOR/README.txt (+61/-0)
MATLAB_Tools/LINFACTOR/linfactor.m (+186/-0)
MATLAB_Tools/LINFACTOR/lintest.m (+153/-0)
MATLAB_Tools/LINFACTOR/lintests.m (+69/-0)
MATLAB_Tools/MESHND/Contents.m (+25/-0)
MATLAB_Tools/MESHND/README.txt (+25/-0)
MATLAB_Tools/MESHND/meshnd.m (+114/-0)
MATLAB_Tools/MESHND/meshnd_example.m (+106/-0)
MATLAB_Tools/MESHND/meshnd_quality.m (+158/-0)
MATLAB_Tools/MESHND/meshnd_quality_out.txt (+890/-0)
MATLAB_Tools/MESHND/meshsparse.m (+144/-0)
MATLAB_Tools/SFMULT/Contents.m (+16/-0)
MATLAB_Tools/SFMULT/Makefile (+55/-0)
MATLAB_Tools/SFMULT/sfmult.c (+198/-0)
MATLAB_Tools/SFMULT/sfmult.h (+551/-0)
MATLAB_Tools/SFMULT/sfmult.m (+28/-0)
MATLAB_Tools/SFMULT/sfmult_anxnyn.c (+169/-0)
MATLAB_Tools/SFMULT/sfmult_anxnyt.c (+161/-0)
MATLAB_Tools/SFMULT/sfmult_anxnyt_k.c (+206/-0)
MATLAB_Tools/SFMULT/sfmult_anxtyn.c (+168/-0)
MATLAB_Tools/SFMULT/sfmult_anxtyt.c (+183/-0)
MATLAB_Tools/SFMULT/sfmult_anxtyt_k.c (+213/-0)
MATLAB_Tools/SFMULT/sfmult_atxnyn.c (+144/-0)
MATLAB_Tools/SFMULT/sfmult_atxnyt.c (+144/-0)
MATLAB_Tools/SFMULT/sfmult_atxtyn.c (+161/-0)
MATLAB_Tools/SFMULT/sfmult_atxtyn_k.c (+197/-0)
MATLAB_Tools/SFMULT/sfmult_atxtyt.c (+168/-0)
MATLAB_Tools/SFMULT/sfmult_atxtyt_k.c (+200/-0)
MATLAB_Tools/SFMULT/sfmult_atxtyt_k.s (+512/-0)
MATLAB_Tools/SFMULT/sfmult_mex.c (+65/-0)
MATLAB_Tools/SFMULT/sfmult_vector_1.c (+122/-0)
MATLAB_Tools/SFMULT/sfmult_vector_k.c (+124/-0)
MATLAB_Tools/SFMULT/sfmult_xA.c (+70/-0)
MATLAB_Tools/SFMULT/ssmult_transpose.c (+140/-0)
MATLAB_Tools/SSMULT/ChangeLog (+8/-0)
MATLAB_Tools/SSMULT/Contents.m (+18/-0)
MATLAB_Tools/SSMULT/README.txt (+92/-0)
MATLAB_Tools/SSMULT/Results/s2.m (+43/-0)
MATLAB_Tools/SSMULT/gpl.txt (+340/-0)
MATLAB_Tools/SSMULT/sptranspose.c (+42/-0)
MATLAB_Tools/SSMULT/sptranspose.m (+16/-0)
MATLAB_Tools/SSMULT/ssmult.c (+188/-0)
MATLAB_Tools/SSMULT/ssmult.h (+66/-0)
MATLAB_Tools/SSMULT/ssmult.m (+36/-0)
MATLAB_Tools/SSMULT/ssmult_demo.m (+18/-0)
MATLAB_Tools/SSMULT/ssmult_dot.c (+291/-0)
MATLAB_Tools/SSMULT/ssmult_install.m (+74/-0)
MATLAB_Tools/SSMULT/ssmult_mex.c (+44/-0)
MATLAB_Tools/SSMULT/ssmult_saxpy.c (+555/-0)
MATLAB_Tools/SSMULT/ssmult_template.c (+421/-0)
MATLAB_Tools/SSMULT/ssmult_test.m (+124/-0)
MATLAB_Tools/SSMULT/ssmult_transpose.c (+169/-0)
MATLAB_Tools/SSMULT/ssmultsym.c (+150/-0)
MATLAB_Tools/SSMULT/ssmultsym.m (+41/-0)
MATLAB_Tools/SSMULT/sstest.m (+174/-0)
MATLAB_Tools/SSMULT/sstest2.m (+164/-0)
MATLAB_Tools/SSMULT/sstest3.m (+627/-0)
MATLAB_Tools/UFcollection/Contents.m (+39/-0)
MATLAB_Tools/UFcollection/Doc/ChangeLog (+52/-0)
MATLAB_Tools/UFcollection/Doc/License.txt (+22/-0)
MATLAB_Tools/UFcollection/Doc/gpl.txt (+340/-0)
MATLAB_Tools/UFcollection/README.txt (+230/-0)
MATLAB_Tools/UFcollection/UFallpages.m (+20/-0)
MATLAB_Tools/UFcollection/UFcollection_install.m (+29/-0)
MATLAB_Tools/UFcollection/UFexport.m (+101/-0)
MATLAB_Tools/UFcollection/UFfull_read.m (+65/-0)
MATLAB_Tools/UFcollection/UFfull_write.c (+164/-0)
MATLAB_Tools/UFcollection/UFfull_write.m (+29/-0)
MATLAB_Tools/UFcollection/UFgplot.m (+133/-0)
MATLAB_Tools/UFcollection/UFindex.m (+393/-0)
MATLAB_Tools/UFcollection/UFint.m (+40/-0)
MATLAB_Tools/UFcollection/UFlist.m (+360/-0)
MATLAB_Tools/UFcollection/UFlists.m (+115/-0)
MATLAB_Tools/UFcollection/UFlocation.m (+14/-0)
MATLAB_Tools/UFcollection/UFpage.m (+703/-0)
MATLAB_Tools/UFcollection/UFpages.m (+30/-0)
MATLAB_Tools/UFcollection/UFread.m (+449/-0)
MATLAB_Tools/UFcollection/UFstats.m (+387/-0)
MATLAB_Tools/UFcollection/UFwrite.m (+439/-0)
MATLAB_Tools/UFcollection/dsxy2figxy.m (+57/-0)
MATLAB_Tools/dimacs10/Contents.m (+8/-0)
MATLAB_Tools/dimacs10/adjnoun.graph (+113/-0)
MATLAB_Tools/dimacs10/bad1.graph (+9/-0)
MATLAB_Tools/dimacs10/bad2.graph (+9/-0)
MATLAB_Tools/dimacs10/bad3.graph (+10/-0)
MATLAB_Tools/dimacs10/bad4.graph (+9/-0)
MATLAB_Tools/dimacs10/bad5.graph (+9/-0)
MATLAB_Tools/dimacs10/bad6.graph (+2/-0)
MATLAB_Tools/dimacs10/bad7.graph (+9/-0)
MATLAB_Tools/dimacs10/bad8.graph (+9/-0)
MATLAB_Tools/dimacs10/bad9.graph (+9/-0)
MATLAB_Tools/dimacs10/dimacs10.m (+654/-0)
MATLAB_Tools/dimacs10/dimacs10_convert_to_graph.c (+76/-0)
MATLAB_Tools/dimacs10/dimacs10_demo.m (+65/-0)
MATLAB_Tools/dimacs10/dimacs10_install.m (+38/-0)
MATLAB_Tools/dimacs10/fig8a.graph (+9/-0)
MATLAB_Tools/dimacs10/fig8b.graph (+10/-0)
MATLAB_Tools/dimacs10/fig8c.graph (+9/-0)
MATLAB_Tools/dimacs10/fig8d.graph (+10/-0)
MATLAB_Tools/dimacs10/ilp_test.graph (+8/-0)
MATLAB_Tools/dimacs10/metis_graph_read.m (+137/-0)
MATLAB_Tools/dimacs10/metis_graph_read_mex.c (+352/-0)
MATLAB_Tools/dimacs10/metis_graph_test.m (+125/-0)
MATLAB_Tools/dimacs10/multi.graph (+9/-0)
MATLAB_Tools/find_components/Contents.m (+1/-1)
MATLAB_Tools/find_components/find_components.m (+1/-1)
MATLAB_Tools/find_components/find_components_example.m (+5/-3)
MATLAB_Tools/find_components/largest_component.m (+1/-1)
MATLAB_Tools/getversion.m (+12/-3)
MATLAB_Tools/gipper.m (+5/-5)
MATLAB_Tools/pagerankdemo.m (+1/-1)
MATLAB_Tools/shellgui/Contents.m (+1/-1)
MATLAB_Tools/shellgui/seashell.m (+2/-2)
MATLAB_Tools/shellgui/shellgui.m (+1/-1)
MATLAB_Tools/sparseinv/Contents.m (+15/-0)
MATLAB_Tools/sparseinv/sparseinv.c (+167/-0)
MATLAB_Tools/sparseinv/sparseinv.h (+38/-0)
MATLAB_Tools/sparseinv/sparseinv.m (+122/-0)
MATLAB_Tools/sparseinv/sparseinv_install.m (+21/-0)
MATLAB_Tools/sparseinv/sparseinv_mex.c (+117/-0)
MATLAB_Tools/sparseinv/sparseinv_test.m (+149/-0)
MATLAB_Tools/spok/Contents.m (+1/-1)
MATLAB_Tools/spok/spok.h (+2/-2)
MATLAB_Tools/spok/spok.m (+1/-1)
MATLAB_Tools/spok/spok_install.m (+11/-9)
MATLAB_Tools/spok/spok_mex.c (+2/-2)
MATLAB_Tools/spok/spok_test.m (+10/-2)
MATLAB_Tools/spqr_rank/Contents.m (+43/-0)
MATLAB_Tools/spqr_rank/README.txt (+55/-0)
MATLAB_Tools/spqr_rank/SJget/Contents.m (+31/-0)
MATLAB_Tools/spqr_rank/SJget/README.txt (+84/-0)
MATLAB_Tools/spqr_rank/SJget/SJget.m (+205/-0)
MATLAB_Tools/spqr_rank/SJget/SJget_defaults.m (+44/-0)
MATLAB_Tools/spqr_rank/SJget/SJget_example.m (+46/-0)
MATLAB_Tools/spqr_rank/SJget/SJget_install.m (+47/-0)
MATLAB_Tools/spqr_rank/SJget/SJget_lookup.m (+85/-0)
MATLAB_Tools/spqr_rank/SJget/SJgrep.m (+54/-0)
MATLAB_Tools/spqr_rank/SJget/SJplot.m (+430/-0)
MATLAB_Tools/spqr_rank/SJget/SJrank.m (+113/-0)
MATLAB_Tools/spqr_rank/SJget/SJweb.m (+136/-0)
MATLAB_Tools/spqr_rank/demo_spqr_rank.m (+1280/-0)
MATLAB_Tools/spqr_rank/private/Contents.m (+16/-0)
MATLAB_Tools/spqr_rank/private/install_SJget.m (+40/-0)
MATLAB_Tools/spqr_rank/private/spqr_failure.m (+17/-0)
MATLAB_Tools/spqr_rank/private/spqr_rank_assign_stats.m (+151/-0)
MATLAB_Tools/spqr_rank/private/spqr_rank_deflation.m (+95/-0)
MATLAB_Tools/spqr_rank/private/spqr_rank_form_basis.m (+235/-0)
MATLAB_Tools/spqr_rank/private/spqr_rank_get_inputs.m (+325/-0)
MATLAB_Tools/spqr_rank/private/spqr_rank_order_fields.m (+55/-0)
MATLAB_Tools/spqr_rank/private/spqr_repeatable.m (+29/-0)
MATLAB_Tools/spqr_rank/private/spqr_wrapper.m (+57/-0)
MATLAB_Tools/spqr_rank/private/test_spqr_coverage.txt (+2814/-0)
MATLAB_Tools/spqr_rank/private/tol_is_default.m (+8/-0)
MATLAB_Tools/spqr_rank/quickdemo_spqr_rank.m (+113/-0)
MATLAB_Tools/spqr_rank/spqr_basic.m (+253/-0)
MATLAB_Tools/spqr_rank/spqr_cod.m (+333/-0)
MATLAB_Tools/spqr_rank/spqr_explicit_basis.m (+34/-0)
MATLAB_Tools/spqr_rank/spqr_null.m (+127/-0)
MATLAB_Tools/spqr_rank/spqr_null_mult.m (+253/-0)
MATLAB_Tools/spqr_rank/spqr_pinv.m (+245/-0)
MATLAB_Tools/spqr_rank/spqr_rank_opts.m (+357/-0)
MATLAB_Tools/spqr_rank/spqr_rank_stats.m (+808/-0)
MATLAB_Tools/spqr_rank/spqr_ssi.m (+583/-0)
MATLAB_Tools/spqr_rank/spqr_ssp.m (+322/-0)
MATLAB_Tools/spqr_rank/test_spqr_coverage.m (+589/-0)
MATLAB_Tools/spqr_rank/test_spqr_rank.m (+118/-0)
MATLAB_Tools/waitmex/README.txt (+1/-3)
MATLAB_Tools/waitmex/waitmex.c (+1/-1)
MESHND/Contents.m (+0/-26)
MESHND/README.txt (+0/-26)
MESHND/meshnd.m (+0/-114)
MESHND/meshnd_example.m (+0/-106)
MESHND/meshnd_quality.m (+0/-159)
MESHND/meshnd_quality_out.txt (+0/-890)
MESHND/meshsparse.m (+0/-144)
Makefile (+121/-81)
RBio/Contents.m (+0/-24)
RBio/Demo/Makefile (+37/-0)
RBio/Demo/RBdemo.c (+252/-0)
RBio/Demo/RBdemo.out (+19/-0)
RBio/Doc/ChangeLog (+28/-0)
RBio/Doc/License.txt (+2/-2)
RBio/Doc/dodiff (+0/-15)
RBio/Include/RBio.h (+314/-0)
RBio/Lib/Makefile (+63/-0)
RBio/Makefile (+64/-0)
RBio/RBcread_32.f (+0/-255)
RBio/RBcread_64.f (+0/-255)
RBio/RBcsplit_32.f (+0/-25)
RBio/RBcsplit_64.f (+0/-25)
RBio/RBfix.m (+0/-135)
RBio/RBinstall.m (+0/-29)
RBio/RBio/Contents.m (+24/-0)
RBio/RBio/RBerror.c (+82/-0)
RBio/RBio/RBfix.m (+135/-0)
RBio/RBio/RBinstall.m (+41/-0)
RBio/RBio/RBmake.m (+53/-0)
RBio/RBio/RBraw.c (+157/-0)
RBio/RBio/RBraw.m (+32/-0)
RBio/RBio/RBread.c (+146/-0)
RBio/RBio/RBread.m (+27/-0)
RBio/RBio/RBreade.m (+136/-0)
RBio/RBio/RBtype.c (+106/-0)
RBio/RBio/RBtype.m (+39/-0)
RBio/RBio/RBwrite.c (+172/-0)
RBio/RBio/RBwrite.m (+36/-0)
RBio/RBio/mywest (+601/-0)
RBio/RBio/private/bcsstk01.rb (+72/-0)
RBio/RBio/private/farm.rb (+10/-0)
RBio/RBio/private/lap_25.pse (+10/-0)
RBio/RBio/private/lap_25.rb (+9/-0)
RBio/RBio/private/testRB1.m (+77/-0)
RBio/RBio/private/testRB2.m (+76/-0)
RBio/RBio/private/testRB3.m (+64/-0)
RBio/RBio/private/west0479.rb (+512/-0)
RBio/RBio/private/west0479.rua (+721/-0)
RBio/RBmake.m (+0/-40)
RBio/RBraw.m (+0/-32)
RBio/RBraw_mex_32.f (+0/-214)
RBio/RBraw_mex_64.f (+0/-214)
RBio/RBread.m (+0/-27)
RBio/RBread_32.f (+0/-464)
RBio/RBread_64.f (+0/-464)
RBio/RBread_mex_32.f (+0/-239)
RBio/RBread_mex_64.f (+0/-239)
RBio/RBreade.m (+0/-136)
RBio/RBrread_32.f (+0/-299)
RBio/RBrread_64.f (+0/-299)
RBio/RBtype.m (+0/-39)
RBio/RBtype_mex_32.f (+0/-128)
RBio/RBtype_mex_64.f (+0/-128)
RBio/RBwrite.m (+0/-36)
RBio/RBwrite_32.f (+0/-713)
RBio/RBwrite_64.f (+0/-713)
RBio/RBwrite_mex_32.f (+0/-324)
RBio/RBwrite_mex_64.f (+0/-324)
RBio/README.txt (+78/-41)
RBio/Source/RBio.c (+2936/-0)
RBio/Tcov/Makefile (+94/-0)
RBio/Tcov/RBtest.c (+285/-0)
RBio/Tcov/README.txt (+5/-0)
RBio/Tcov/mangled/1.rb (+5/-0)
RBio/Tcov/mangled/10.rb (+7/-0)
RBio/Tcov/mangled/11.rb (+5/-0)
RBio/Tcov/mangled/12.rb (+7/-0)
RBio/Tcov/mangled/13.rb (+7/-0)
RBio/Tcov/mangled/14.rb (+7/-0)
RBio/Tcov/mangled/15.rb (+7/-0)
RBio/Tcov/mangled/2.rb (+7/-0)
RBio/Tcov/mangled/3.rb (+7/-0)
RBio/Tcov/mangled/4.rb (+6/-0)
RBio/Tcov/mangled/5.rb (+7/-0)
RBio/Tcov/mangled/6.rb (+7/-0)
RBio/Tcov/mangled/7.rb (+7/-0)
RBio/Tcov/mangled/8.rb (+7/-0)
RBio/Tcov/mangled/9.rb (+7/-0)
RBio/Tcov/matrices/m4.rb (+7/-0)
RBio/Tcov/matrices/m4b.rb (+8/-0)
RBio/Tcov/matrices/s4.rb (+7/-0)
RBio/Test/bcsstk01.rb (+0/-72)
RBio/Test/farm.rb (+0/-10)
RBio/Test/lap_25.pse (+0/-10)
RBio/Test/lap_25.rb (+0/-9)
RBio/Test/testRB1.m (+0/-65)
RBio/Test/testRB2.m (+0/-60)
RBio/Test/west0479.rb (+0/-512)
RBio/Test/west0479.rua (+0/-721)
README.txt (+58/-69)
SPQR/Demo/Makefile (+60/-13)
SPQR/Demo/README.txt (+1/-0)
SPQR/Demo/qrdemo.cpp (+107/-30)
SPQR/Demo/qrdemo.m (+1/-2)
SPQR/Demo/qrdemo_out.txt (+106/-31)
SPQR/Demo/qrdemoc.c (+6/-5)
SPQR/Demo/qrdemoc_out.txt (+16/-16)
SPQR/Doc/ChangeLog (+40/-0)
SPQR/Doc/Makefile (+2/-1)
SPQR/Doc/README.txt (+3/-2)
SPQR/Doc/spqr_user_guide.tex (+19/-21)
SPQR/Include/SuiteSparseQR.hpp (+129/-136)
SPQR/Include/SuiteSparseQR_C.h (+11/-13)
SPQR/Include/SuiteSparseQR_definitions.h (+4/-4)
SPQR/Include/spqr.hpp (+198/-192)
SPQR/Lib/Makefile (+29/-6)
SPQR/MATLAB/Contents.m (+1/-1)
SPQR/MATLAB/Makefile (+0/-275)
SPQR/MATLAB/spqr.cpp (+20/-8)
SPQR/MATLAB/spqr.m (+65/-59)
SPQR/MATLAB/spqr_demo.m (+8/-9)
SPQR/MATLAB/spqr_install.m (+7/-13)
SPQR/MATLAB/spqr_make.m (+106/-136)
SPQR/MATLAB/spqr_mx.cpp (+161/-35)
SPQR/MATLAB/spqr_mx.hpp (+22/-13)
SPQR/MATLAB/spqr_qmult.cpp (+6/-6)
SPQR/MATLAB/spqr_qmult.m (+1/-2)
SPQR/MATLAB/spqr_singletons.cpp (+7/-7)
SPQR/MATLAB/spqr_singletons.m (+4/-5)
SPQR/MATLAB/spqr_solve.cpp (+7/-106)
SPQR/MATLAB/spqr_solve.m (+1/-2)
SPQR/Makefile (+35/-8)
SPQR/Matrix/README.txt (+2/-0)
SPQR/README.txt (+4/-3)
SPQR/Source/SuiteSparseQR.cpp (+99/-103)
SPQR/Source/SuiteSparseQR_C.cpp (+7/-7)
SPQR/Source/SuiteSparseQR_expert.cpp (+65/-76)
SPQR/Source/SuiteSparseQR_qmult.cpp (+29/-29)
SPQR/Source/spqr_1colamd.cpp (+61/-54)
SPQR/Source/spqr_1factor.cpp (+32/-40)
SPQR/Source/spqr_1fixed.cpp (+30/-30)
SPQR/Source/spqr_analyze.cpp (+74/-58)
SPQR/Source/spqr_append.cpp (+11/-11)
SPQR/Source/spqr_assemble.cpp (+54/-54)
SPQR/Source/spqr_cpack.cpp (+16/-16)
SPQR/Source/spqr_csize.cpp (+7/-7)
SPQR/Source/spqr_cumsum.cpp (+5/-5)
SPQR/Source/spqr_debug.cpp (+38/-57)
SPQR/Source/spqr_factorize.cpp (+83/-51)
SPQR/Source/spqr_fcsize.cpp (+7/-7)
SPQR/Source/spqr_freefac.cpp (+8/-8)
SPQR/Source/spqr_freenum.cpp (+8/-8)
SPQR/Source/spqr_freesym.cpp (+21/-21)
SPQR/Source/spqr_front.cpp (+69/-34)
SPQR/Source/spqr_fsize.cpp (+12/-12)
SPQR/Source/spqr_happly.cpp (+41/-41)
SPQR/Source/spqr_happly_work.cpp (+10/-10)
SPQR/Source/spqr_hpinv.cpp (+6/-6)
SPQR/Source/spqr_kernel.cpp (+69/-60)
SPQR/Source/spqr_larftb.cpp (+24/-23)
SPQR/Source/spqr_maxcolnorm.cpp (+4/-4)
SPQR/Source/spqr_panel.cpp (+19/-19)
SPQR/Source/spqr_parallel.cpp (+12/-12)
SPQR/Source/spqr_rconvert.cpp (+29/-29)
SPQR/Source/spqr_rcount.cpp (+23/-23)
SPQR/Source/spqr_rhpack.cpp (+19/-19)
SPQR/Source/spqr_rmap.cpp (+4/-4)
SPQR/Source/spqr_rsolve.cpp (+19/-19)
SPQR/Source/spqr_shift.cpp (+3/-3)
SPQR/Source/spqr_stranspose1.cpp (+9/-9)
SPQR/Source/spqr_stranspose2.cpp (+15/-15)
SPQR/Source/spqr_trapezoidal.cpp (+35/-35)
SPQR/Tcov/Makefile (+46/-18)
SPQR/Tcov/README.txt (+2/-0)
SPQR/Tcov/qrtest.cpp (+174/-168)
SPQR/Tcov/qrtestc.c (+2/-2)
SSMULT/Contents.m (+0/-15)
SSMULT/Makefile (+0/-27)
SSMULT/README.txt (+0/-93)
SSMULT/Results/s2.m (+0/-43)
SSMULT/gpl.txt (+0/-340)
SSMULT/sptranspose.c (+0/-42)
SSMULT/sptranspose.m (+0/-16)
SSMULT/ssmult.c (+0/-188)
SSMULT/ssmult.h (+0/-66)
SSMULT/ssmult.m (+0/-36)
SSMULT/ssmult_demo.m (+0/-18)
SSMULT/ssmult_dot.c (+0/-291)
SSMULT/ssmult_install.m (+0/-199)
SSMULT/ssmult_mex.c (+0/-44)
SSMULT/ssmult_saxpy.c (+0/-555)
SSMULT/ssmult_template.c (+0/-421)
SSMULT/ssmult_transpose.c (+0/-169)
SSMULT/ssmultsym.c (+0/-150)
SSMULT/ssmultsym.m (+0/-41)
SSMULT/sstest.m (+0/-177)
SSMULT/sstest2.m (+0/-165)
SSMULT/sstest3.m (+0/-629)
SuiteSparse_config/Makefile (+43/-0)
SuiteSparse_config/README.txt (+48/-0)
SuiteSparse_config/SuiteSparse_config.c (+191/-0)
SuiteSparse_config/SuiteSparse_config.h (+202/-0)
SuiteSparse_config/SuiteSparse_config.mk (+393/-0)
SuiteSparse_config/SuiteSparse_config_GPU.mk (+393/-0)
SuiteSparse_config/SuiteSparse_config_Mac.mk (+395/-0)
SuiteSparse_config/xerbla/Makefile (+33/-0)
SuiteSparse_config/xerbla/xerbla.c (+12/-0)
SuiteSparse_config/xerbla/xerbla.f (+46/-0)
SuiteSparse_config/xerbla/xerbla.h (+2/-0)
SuiteSparse_demo.m (+99/-46)
SuiteSparse_install.m (+177/-185)
SuiteSparse_test.m (+94/-53)
UFcollection/Contents.m (+0/-39)
UFcollection/Doc/ChangeLog (+0/-24)
UFcollection/Doc/License.txt (+0/-22)
UFcollection/Doc/gpl.txt (+0/-340)
UFcollection/README.txt (+0/-176)
UFcollection/UFallpages.m (+0/-20)
UFcollection/UFcollection_install.m (+0/-29)
UFcollection/UFexport.m (+0/-80)
UFcollection/UFfull_read.m (+0/-65)
UFcollection/UFfull_write.c (+0/-164)
UFcollection/UFfull_write.m (+0/-29)
UFcollection/UFgplot.m (+0/-133)
UFcollection/UFindex.m (+0/-404)
UFcollection/UFint.m (+0/-40)
UFcollection/UFlist.m (+0/-358)
UFcollection/UFlists.m (+0/-113)
UFcollection/UFlocation.m (+0/-17)
UFcollection/UFpage.m (+0/-623)
UFcollection/UFpages.m (+0/-30)
UFcollection/UFread.m (+0/-449)
UFcollection/UFstats.m (+0/-620)
UFcollection/UFwrite.m (+0/-444)
UFcollection/dsxy2figxy.m (+0/-57)
UFconfig/README.txt (+0/-35)
UFconfig/UFconfig.h (+0/-118)
UFconfig/UFconfig.mk (+0/-354)
UFconfig/xerbla/Makefile (+0/-31)
UFconfig/xerbla/xerbla.c (+0/-12)
UFconfig/xerbla/xerbla.f (+0/-46)
UFconfig/xerbla/xerbla.h (+0/-2)
UMFPACK/Demo/Makefile (+80/-17)
UMFPACK/Demo/dodefault (+2/-2)
UMFPACK/Demo/dospd (+2/-2)
UMFPACK/Demo/readhb.f (+3/-3)
UMFPACK/Demo/readhb_nozeros.f (+3/-3)
UMFPACK/Demo/readhb_size.f (+3/-3)
UMFPACK/Demo/simple_compile (+1/-2)
UMFPACK/Demo/umf4.c (+43/-45)
UMFPACK/Demo/umf4.out (+266/-299)
UMFPACK/Demo/umf4_f77wrapper.c (+14/-13)
UMFPACK/Demo/umf4_f77zwrapper.c (+8/-8)
UMFPACK/Demo/umf4hb.f (+3/-3)
UMFPACK/Demo/umf4hb.out (+41/-44)
UMFPACK/Demo/umf4hb64.f (+3/-3)
UMFPACK/Demo/umf4hb64.out (+43/-46)
UMFPACK/Demo/umf4zhb.f (+3/-3)
UMFPACK/Demo/umf4zhb.out (+36/-39)
UMFPACK/Demo/umfpack_di_demo.c (+4/-4)
UMFPACK/Demo/umfpack_di_demo.out (+97/-116)
UMFPACK/Demo/umfpack_dl_demo.c (+35/-35)
UMFPACK/Demo/umfpack_dl_demo.out (+132/-151)
UMFPACK/Demo/umfpack_dl_demo.sed (+1/-1)
UMFPACK/Demo/umfpack_simple.c (+3/-3)
UMFPACK/Demo/umfpack_xx_demo.c (+7/-7)
UMFPACK/Demo/umfpack_zi_demo.c (+1/-7)
UMFPACK/Demo/umfpack_zi_demo.out (+112/-133)
UMFPACK/Demo/umfpack_zl_demo.c (+32/-39)
UMFPACK/Demo/umfpack_zl_demo.out (+142/-161)
UMFPACK/Demo/umfpack_zl_demo.sed (+1/-1)
UMFPACK/Doc/ChangeLog (+38/-0)
UMFPACK/Doc/License (+2/-2)
UMFPACK/Doc/Makefile (+1/-1)
UMFPACK/Doc/QuickStart.tex (+40/-39)
UMFPACK/Doc/UserGuide.bib (+0/-39)
UMFPACK/Doc/UserGuide.stex (+195/-116)
UMFPACK/Include/umfpack.h (+33/-37)
UMFPACK/Include/umfpack_col_to_triplet.h (+14/-15)
UMFPACK/Include/umfpack_defaults.h (+4/-5)
UMFPACK/Include/umfpack_free_numeric.h (+4/-5)
UMFPACK/Include/umfpack_free_symbolic.h (+4/-5)
UMFPACK/Include/umfpack_get_determinant.h (+7/-9)
UMFPACK/Include/umfpack_get_lunz.h (+18/-19)
UMFPACK/Include/umfpack_get_numeric.h (+23/-24)
UMFPACK/Include/umfpack_get_symbolic.h (+42/-45)
UMFPACK/Include/umfpack_global.h (+2/-3)
UMFPACK/Include/umfpack_load_numeric.h (+8/-9)
UMFPACK/Include/umfpack_load_symbolic.h (+8/-9)
UMFPACK/Include/umfpack_numeric.h (+15/-16)
UMFPACK/Include/umfpack_qsymbolic.h (+109/-24)
UMFPACK/Include/umfpack_report_control.h (+4/-5)
UMFPACK/Include/umfpack_report_info.h (+4/-5)
UMFPACK/Include/umfpack_report_matrix.h (+18/-19)
UMFPACK/Include/umfpack_report_numeric.h (+8/-9)
UMFPACK/Include/umfpack_report_perm.h (+12/-13)
UMFPACK/Include/umfpack_report_status.h (+8/-9)
UMFPACK/Include/umfpack_report_symbolic.h (+8/-9)
UMFPACK/Include/umfpack_report_triplet.h (+18/-19)
UMFPACK/Include/umfpack_report_vector.h (+10/-11)
UMFPACK/Include/umfpack_save_numeric.h (+8/-9)
UMFPACK/Include/umfpack_save_symbolic.h (+8/-9)
UMFPACK/Include/umfpack_scale.h (+6/-7)
UMFPACK/Include/umfpack_solve.h (+14/-15)
UMFPACK/Include/umfpack_symbolic.h (+46/-41)
UMFPACK/Include/umfpack_tictoc.h (+7/-22)
UMFPACK/Include/umfpack_timer.h (+3/-16)
UMFPACK/Include/umfpack_transpose.h (+25/-26)
UMFPACK/Include/umfpack_triplet_to_col.h (+24/-25)
UMFPACK/Include/umfpack_wsolve.h (+16/-17)
UMFPACK/Lib/GNUmakefile (+31/-21)
UMFPACK/Lib/Makefile (+15/-14)
UMFPACK/Lib/libumfpack.def (+4/-0)
UMFPACK/MATLAB/Contents.m (+1/-1)
UMFPACK/MATLAB/GNUmakefile (+0/-240)
UMFPACK/MATLAB/Makefile (+6/-433)
UMFPACK/MATLAB/lu_normest.m (+1/-6)
UMFPACK/MATLAB/luflop.m (+1/-1)
UMFPACK/MATLAB/luflopmex.c (+12/-14)
UMFPACK/MATLAB/umfpack2.m (+20/-1)
UMFPACK/MATLAB/umfpack_btf.m (+8/-7)
UMFPACK/MATLAB/umfpack_demo.m (+3/-9)
UMFPACK/MATLAB/umfpack_demo.m.out (+6/-12)
UMFPACK/MATLAB/umfpack_details.m (+5/-5)
UMFPACK/MATLAB/umfpack_make.m (+243/-89)
UMFPACK/MATLAB/umfpack_report.m (+9/-307)
UMFPACK/MATLAB/umfpack_simple.m (+1/-3)
UMFPACK/MATLAB/umfpack_solve.m (+3/-6)
UMFPACK/MATLAB/umfpack_test.m (+21/-22)
UMFPACK/MATLAB/umfpack_test2.m (+52/-0)
UMFPACK/MATLAB/umfpackmex.c (+856/-265)
UMFPACK/Makefile (+27/-29)
UMFPACK/README.txt (+35/-29)
UMFPACK/Source/cholmod_blas.h (+73/-77)
UMFPACK/Source/umf_2by2.c (+0/-866)
UMFPACK/Source/umf_2by2.h (+0/-36)
UMFPACK/Source/umf_analyze.c (+6/-7)
UMFPACK/Source/umf_analyze.h (+2/-3)
UMFPACK/Source/umf_apply_order.c (+2/-3)
UMFPACK/Source/umf_apply_order.h (+2/-3)
UMFPACK/Source/umf_assemble.c (+4/-5)
UMFPACK/Source/umf_assemble.h (+2/-3)
UMFPACK/Source/umf_blas3_update.c (+2/-3)
UMFPACK/Source/umf_blas3_update.h (+2/-3)
UMFPACK/Source/umf_build_tuples.c (+2/-3)
UMFPACK/Source/umf_build_tuples.h (+2/-3)
UMFPACK/Source/umf_cholmod.c (+239/-0)
UMFPACK/Source/umf_cholmod.h (+37/-0)
UMFPACK/Source/umf_colamd.c (+6/-9)
UMFPACK/Source/umf_colamd.h (+4/-5)
UMFPACK/Source/umf_config.h (+8/-53)
UMFPACK/Source/umf_create_element.c (+2/-3)
UMFPACK/Source/umf_create_element.h (+2/-3)
UMFPACK/Source/umf_dump.c (+18/-17)
UMFPACK/Source/umf_dump.h (+2/-3)
UMFPACK/Source/umf_extend_front.c (+2/-3)
UMFPACK/Source/umf_extend_front.h (+2/-3)
UMFPACK/Source/umf_free.c (+2/-3)
UMFPACK/Source/umf_free.h (+2/-3)
UMFPACK/Source/umf_fsize.c (+2/-3)
UMFPACK/Source/umf_fsize.h (+2/-3)
UMFPACK/Source/umf_garbage_collection.c (+2/-3)
UMFPACK/Source/umf_garbage_collection.h (+2/-3)
UMFPACK/Source/umf_get_memory.c (+2/-3)
UMFPACK/Source/umf_get_memory.h (+2/-3)
UMFPACK/Source/umf_grow_front.c (+2/-3)
UMFPACK/Source/umf_grow_front.h (+2/-3)
UMFPACK/Source/umf_init_front.c (+3/-4)
UMFPACK/Source/umf_init_front.h (+2/-3)
UMFPACK/Source/umf_internal.h (+9/-6)
UMFPACK/Source/umf_is_permutation.c (+2/-3)
UMFPACK/Source/umf_is_permutation.h (+2/-3)
UMFPACK/Source/umf_kernel.c (+2/-3)
UMFPACK/Source/umf_kernel.h (+2/-3)
UMFPACK/Source/umf_kernel_init.c (+2/-6)
UMFPACK/Source/umf_kernel_init.h (+2/-3)
UMFPACK/Source/umf_kernel_wrapup.c (+2/-3)
UMFPACK/Source/umf_kernel_wrapup.h (+2/-3)
UMFPACK/Source/umf_local_search.c (+2/-3)
UMFPACK/Source/umf_local_search.h (+2/-3)
UMFPACK/Source/umf_lsolve.c (+2/-3)
UMFPACK/Source/umf_lsolve.h (+2/-3)
UMFPACK/Source/umf_ltsolve.c (+2/-3)
UMFPACK/Source/umf_ltsolve.h (+2/-3)
UMFPACK/Source/umf_malloc.c (+2/-3)
UMFPACK/Source/umf_malloc.h (+2/-3)
UMFPACK/Source/umf_mem_alloc_element.c (+2/-3)
UMFPACK/Source/umf_mem_alloc_element.h (+2/-3)
UMFPACK/Source/umf_mem_alloc_head_block.c (+2/-3)
UMFPACK/Source/umf_mem_alloc_head_block.h (+2/-3)
UMFPACK/Source/umf_mem_alloc_tail_block.c (+2/-3)
UMFPACK/Source/umf_mem_alloc_tail_block.h (+2/-3)
UMFPACK/Source/umf_mem_free_tail_block.c (+2/-3)
UMFPACK/Source/umf_mem_free_tail_block.h (+2/-3)
UMFPACK/Source/umf_mem_init_memoryspace.c (+2/-3)
UMFPACK/Source/umf_mem_init_memoryspace.h (+2/-3)
UMFPACK/Source/umf_multicompile.c (+2/-3)
UMFPACK/Source/umf_realloc.c (+2/-3)
UMFPACK/Source/umf_realloc.h (+2/-3)
UMFPACK/Source/umf_report_perm.c (+2/-3)
UMFPACK/Source/umf_report_perm.h (+2/-3)
UMFPACK/Source/umf_report_vector.c (+2/-3)
UMFPACK/Source/umf_report_vector.h (+2/-3)
UMFPACK/Source/umf_row_search.c (+2/-3)
UMFPACK/Source/umf_row_search.h (+2/-3)
UMFPACK/Source/umf_scale.c (+2/-3)
UMFPACK/Source/umf_scale.h (+2/-3)
UMFPACK/Source/umf_scale_column.c (+2/-3)
UMFPACK/Source/umf_scale_column.h (+2/-3)
UMFPACK/Source/umf_set_stats.c (+2/-3)
UMFPACK/Source/umf_set_stats.h (+2/-3)
UMFPACK/Source/umf_singletons.c (+11/-4)
UMFPACK/Source/umf_singletons.h (+3/-3)
UMFPACK/Source/umf_solve.c (+2/-3)
UMFPACK/Source/umf_solve.h (+2/-3)
UMFPACK/Source/umf_start_front.c (+2/-3)
UMFPACK/Source/umf_start_front.h (+2/-3)
UMFPACK/Source/umf_store_lu.c (+2/-3)
UMFPACK/Source/umf_store_lu.h (+2/-3)
UMFPACK/Source/umf_symbolic_usage.c (+2/-3)
UMFPACK/Source/umf_symbolic_usage.h (+2/-3)
UMFPACK/Source/umf_transpose.c (+2/-3)
UMFPACK/Source/umf_transpose.h (+2/-3)
UMFPACK/Source/umf_triplet.c (+2/-3)
UMFPACK/Source/umf_triplet.h (+2/-3)
UMFPACK/Source/umf_tuple_lengths.c (+2/-3)
UMFPACK/Source/umf_tuple_lengths.h (+2/-3)
UMFPACK/Source/umf_usolve.c (+2/-3)
UMFPACK/Source/umf_usolve.h (+2/-3)
UMFPACK/Source/umf_utsolve.c (+2/-3)
UMFPACK/Source/umf_utsolve.h (+2/-3)
UMFPACK/Source/umf_valid_numeric.c (+2/-3)
UMFPACK/Source/umf_valid_numeric.h (+2/-3)
UMFPACK/Source/umf_valid_symbolic.c (+2/-3)
UMFPACK/Source/umf_valid_symbolic.h (+2/-3)
UMFPACK/Source/umf_version.h (+15/-12)
UMFPACK/Source/umfpack_col_to_triplet.c (+2/-3)
UMFPACK/Source/umfpack_defaults.c (+4/-48)
UMFPACK/Source/umfpack_free_numeric.c (+2/-3)
UMFPACK/Source/umfpack_free_symbolic.c (+2/-3)
UMFPACK/Source/umfpack_get_determinant.c (+4/-4)
UMFPACK/Source/umfpack_get_lunz.c (+2/-3)
UMFPACK/Source/umfpack_get_numeric.c (+2/-3)
UMFPACK/Source/umfpack_get_symbolic.c (+2/-3)
UMFPACK/Source/umfpack_global.c (+3/-4)
UMFPACK/Source/umfpack_load_numeric.c (+2/-3)
UMFPACK/Source/umfpack_load_symbolic.c (+2/-3)
UMFPACK/Source/umfpack_numeric.c (+5/-5)
UMFPACK/Source/umfpack_qsymbolic.c (+719/-425)
UMFPACK/Source/umfpack_report_control.c (+72/-65)
UMFPACK/Source/umfpack_report_info.c (+68/-115)
UMFPACK/Source/umfpack_report_matrix.c (+16/-15)
UMFPACK/Source/umfpack_report_numeric.c (+2/-3)
UMFPACK/Source/umfpack_report_perm.c (+2/-3)
UMFPACK/Source/umfpack_report_status.c (+8/-4)
UMFPACK/Source/umfpack_report_symbolic.c (+38/-26)
UMFPACK/Source/umfpack_report_triplet.c (+2/-3)
UMFPACK/Source/umfpack_report_vector.c (+2/-3)
UMFPACK/Source/umfpack_save_numeric.c (+6/-3)
UMFPACK/Source/umfpack_save_symbolic.c (+3/-3)
UMFPACK/Source/umfpack_scale.c (+2/-3)
UMFPACK/Source/umfpack_solve.c (+2/-3)
UMFPACK/Source/umfpack_symbolic.c (+4/-6)
UMFPACK/Source/umfpack_tictoc.c (+19/-106)
UMFPACK/Source/umfpack_timer.c (+8/-85)
UMFPACK/Source/umfpack_transpose.c (+2/-3)
UMFPACK/Source/umfpack_triplet_to_col.c (+2/-3)
UMFPACK/Tcov/AMD_Demo_Makefile (+6/-5)
UMFPACK/Tcov/DO (+26/-39)
UMFPACK/Tcov/DO.all (+54/-0)
UMFPACK/Tcov/DO.linux (+0/-55)
UMFPACK/Tcov/DO.linux.Jan24 (+0/-465)
UMFPACK/Tcov/DO.linux.out (+0/-475)
UMFPACK/Tcov/DO.linux.out2 (+0/-428)
UMFPACK/Tcov/DO.linux2 (+0/-108)
UMFPACK/Tcov/DO.solaris (+0/-47)
UMFPACK/Tcov/DO2 (+0/-9)
UMFPACK/Tcov/DO678 (+0/-17)
UMFPACK/Tcov/DOsol (+0/-6)
UMFPACK/Tcov/DOsol2 (+0/-57)
UMFPACK/Tcov/Demo_Makefile (+37/-14)
UMFPACK/Tcov/GNUmakefile.di (+6/-6)
UMFPACK/Tcov/GNUmakefile.dl (+7/-6)
UMFPACK/Tcov/GNUmakefile.zi (+7/-6)
UMFPACK/Tcov/GNUmakefile.zl (+7/-6)
UMFPACK/Tcov/Make.1 (+4/-6)
UMFPACK/Tcov/Make.1g (+0/-18)
UMFPACK/Tcov/Make.1i (+0/-21)
UMFPACK/Tcov/Make.1n (+0/-21)
UMFPACK/Tcov/Make.2 (+4/-6)
UMFPACK/Tcov/Make.2g (+0/-18)
UMFPACK/Tcov/Make.2i (+0/-20)
UMFPACK/Tcov/Make.2n (+0/-20)
UMFPACK/Tcov/Make.3 (+5/-7)
UMFPACK/Tcov/Make.3g (+0/-18)
UMFPACK/Tcov/Make.3i (+0/-20)
UMFPACK/Tcov/Make.3n (+0/-20)
UMFPACK/Tcov/Make.4 (+4/-7)
UMFPACK/Tcov/Make.4g (+0/-18)
UMFPACK/Tcov/Make.4i (+0/-20)
UMFPACK/Tcov/Make.4n (+0/-20)
UMFPACK/Tcov/Make.5 (+4/-6)
UMFPACK/Tcov/Make.6 (+4/-6)
UMFPACK/Tcov/Make.7 (+4/-6)
UMFPACK/Tcov/Make.8 (+4/-6)
UMFPACK/Tcov/Make.n1 (+0/-18)
UMFPACK/Tcov/Make.n2 (+0/-18)
UMFPACK/Tcov/Make.n3 (+0/-18)
UMFPACK/Tcov/Make.n4 (+0/-18)
UMFPACK/Tcov/Make.s1 (+0/-18)
UMFPACK/Tcov/Make.s2 (+0/-18)
UMFPACK/Tcov/Make.s3 (+0/-18)
UMFPACK/Tcov/Make.s4 (+0/-18)
UMFPACK/Tcov/Make.s5 (+0/-18)
UMFPACK/Tcov/Make_file (+0/-24)
UMFPACK/Tcov/Makefile (+5/-7)
UMFPACK/Tcov/README.txt (+89/-62)
UMFPACK/Tcov/Top_Makefile (+1/-1)
UMFPACK/Tcov/covall (+2/-2)
UMFPACK/Tcov/cover.out (+0/-527)
UMFPACK/Tcov/cover.out_May5 (+0/-536)
UMFPACK/Tcov/ss.awk (+0/-3)
UMFPACK/Tcov/ucov.di (+1/-1)
UMFPACK/Tcov/ucov.dl (+1/-1)
UMFPACK/Tcov/ucov.zi (+1/-1)
UMFPACK/Tcov/ucov.zl (+1/-1)
UMFPACK/Tcov/ut.c (+176/-28)
debian/NEWS (+1/-1)
debian/README.Debian (+12/-10)
debian/README.source (+0/-8)
debian/changelog (+83/-0)
debian/compat (+1/-1)
debian/control (+86/-45)
debian/control.in (+53/-12)
debian/copyright (+9/-10)
debian/install/AMD (+3/-1)
debian/install/BTF (+3/-1)
debian/install/CAMD (+3/-1)
debian/install/CCOLAMD (+3/-1)
debian/install/CHOLMOD (+3/-1)
debian/install/COLAMD (+3/-1)
debian/install/CSparse (+3/-1)
debian/install/CXSparse (+3/-1)
debian/install/KLU (+3/-1)
debian/install/LDL (+3/-1)
debian/install/SPQR (+3/-0)
debian/install/UMFPACK (+3/-1)
debian/library-soname.pl (+12/-11)
debian/libsuitesparse-dev.install (+28/-24)
debian/libsuitesparse-doc.doc-base.camd (+11/-0)
debian/libsuitesparse-doc.doc-base.klu (+14/-0)
debian/libsuitesparse-doc.doc-base.ldl (+16/-0)
debian/libsuitesparse-doc.doc-base.spqr (+14/-0)
debian/libsuitesparse-doc.install (+2/-0)
debian/patches/01-Makefile.diff (+0/-20)
debian/patches/02-AMD_Lib_GNUmakefile.diff (+0/-67)
debian/patches/03-CAMD_Lib_GNUmakefile.diff (+0/-66)
debian/patches/04-CCOLAMD_Lib_Makefile.diff (+0/-41)
debian/patches/05-COLAMD_Lib_Makefile.diff (+0/-41)
debian/patches/06-BTF_Lib_Makefile.diff (+0/-74)
debian/patches/07-KLU_Lib_Makefile.diff (+0/-370)
debian/patches/08-LDL_Lib_Makefile.diff (+0/-39)
debian/patches/09-CSparse_Lib_Makefile.diff (+0/-57)
debian/patches/10-CXSparse_Lib_Makefile.diff (+0/-94)
debian/patches/11-UMFPACK_Lib_GNUmakefile.diff (+0/-304)
debian/patches/12-CHOLMOD_Lib_Makefile.diff (+0/-676)
debian/patches/13-UFconfig_UFconfig.mk.diff (+0/-56)
debian/patches/AMD_Lib_GNUmakefile.diff (+66/-0)
debian/patches/BTF_Lib_Makefile.diff (+75/-0)
debian/patches/CAMD_Lib_GNUmakefile.diff (+65/-0)
debian/patches/CCOLAMD_Lib_Makefile.diff (+40/-0)
debian/patches/CHOLMOD_Lib_Makefile.diff (+683/-0)
debian/patches/COLAMD_Lib_Makefile.diff (+40/-0)
debian/patches/CSparse_Lib_Makefile.diff (+51/-0)
debian/patches/CXSparse_Lib_Makefile.diff (+94/-0)
debian/patches/KLU_Demo_Makefile.diff (+22/-0)
debian/patches/KLU_Lib_Makefile.diff (+361/-0)
debian/patches/LDL_Lib_Makefile.diff (+38/-0)
debian/patches/SPQR_Lib_Makefile.diff (+245/-0)
debian/patches/SuiteSparse_config_SuiteSparse_config_mk.diff (+46/-0)
debian/patches/Suitesparse_config_Makefile.diff (+33/-0)
debian/patches/UMFPACK_Lib_GNUmakefile.diff (+289/-0)
debian/patches/buildflags.diff (+45/-0)
debian/patches/parallel-build.diff (+22/-0)
debian/patches/series (+20/-13)
debian/rules (+15/-18)
debian/source/format (+1/-0)
debian/symbols/AMD (+0/-28)
debian/symbols/BTF (+0/-7)
debian/symbols/CAMD (+0/-28)
debian/symbols/CCOLAMD (+0/-24)
debian/symbols/CHOLMOD (+0/-259)
debian/symbols/COLAMD (+0/-14)
debian/symbols/CSparse (+0/-65)
debian/symbols/CXSparse (+0/-261)
debian/symbols/KLU (+0/-93)
debian/symbols/LDL (+0/-19)
debian/symbols/UMFPACK (+0/-318)
To merge this branch: bzr merge lp:~logan/ubuntu/trusty/suitesparse/4.2.1-3ubuntu1
Reviewer Review Type Date Requested Status
Daniel Holbach (community) Approve
Review via email: mp+198169@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Daniel Holbach (dholbach) wrote :

Thanks. Uploaded.

review: Approve

Unmerged revisions

12. By Logan Rosen

* Merge from Debian unstable. Remaining changes:
  - debian/control: Demote libatlas-doc from Recommends to Suggests, as it
    is not in main.
* Upload to unstable.
* Register user guides for KLU, CAMD, SPQR and LDL in doc-base.
* Really fix BLAS/LAPACK dependencies of libsuitesparse-dev
  - remove obsolete ATLAS specialized libraries (Closes: #645846)
  - add virtual package libblas.so as a BLAS alternative (Closes: #645844)
* Remove Daniel Rus Morales from Uploaders, with his consent. Thanks
  Daniel for your work!
* d/rules: do not regenerate d/control automatically, this is
  forbidden
* d/rules: fix get-orig-source rule
* d/control: use canonical URLs for Vcs-* fields
* Mark debug package as Multi-Arch: same
* Ship libsuitesparseconfig.a in the -dev package.
* Bump Standards-Version to 3.9.5, no changes needed.
* New upstream release (Closes: #706709)
  - debian/library-soname.pl: update soversion numbers
* debian/rules: recreate d/control when d/library-sonames.pl is
  modified
* New upstream release (Closes: #653660, #687282)
  - Renamed UFconfig to SuiteSparse_config
  - Update patches to new release
  - debian/library-soname.pl: update soversion numbers

* debian/control.in:
  - fix Maintainer field (Closes: #674266, #674268, #674270, #674271, #674272,
    #674273, #674274, #674275, #674276, #674277, #674278, #674279, #674280,
    #674281)
  - add myself to Uploaders
  - remove obsolete DM-Upload-Allowed flag
* Remove obsolete README.source
* debian/rules: clean *.oo files
* Bump to debhelper compat level 9
* Update debian/copyright
* Remove symbols files: they are useless since we bump the soversion
  at every new upstream release
* Clean up build flags
  - make sure to inject flags from dpkg-buildflags
  - buildflags.diff: new patch to remove spurious flags in upstream build
    system
  - remove -m64 flag on amd64 CPUs (Closes: #701654)
* Fix version in NEWS.Debian, to make lintian happy
* parallel-build.diff: new patch, fixes parallel build
* Multiarchify the package
* Fix BLAS/LAPACK dependencies of libsuitesparse-dev:
  - remove obsolete ATLAS specialized libraries (Closes: #645846)
  - add libopenblas-dev as a BLAS alternative (Closes: #645844)
* Bump to Standards-Version 3.9.4, no changes needed
* Suitesparse_config_Makefile.diff: new patch, creates a PIC version
  of the (small) config code, for embedding in other shared libs
* KLU_Demo_Makefile.diff: new patch, needed for creating the right
  dependencies between shared libraries
* Create a new shared library package for SPQR (Closes: #589296)
* Update README.Debian

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory '.pc'
=== added file '.pc/.quilt_patches'
--- .pc/.quilt_patches 1970-01-01 00:00:00 +0000
+++ .pc/.quilt_patches 2013-12-08 03:08:50 +0000
@@ -0,0 +1,1 @@
1debian/patches
02
=== added file '.pc/.quilt_series'
--- .pc/.quilt_series 1970-01-01 00:00:00 +0000
+++ .pc/.quilt_series 2013-12-08 03:08:50 +0000
@@ -0,0 +1,1 @@
1series
02
=== added file '.pc/.version'
--- .pc/.version 1970-01-01 00:00:00 +0000
+++ .pc/.version 2013-12-08 03:08:50 +0000
@@ -0,0 +1,1 @@
12
02
=== modified file 'AMD/Demo/Makefile'
--- AMD/Demo/Makefile 2007-05-29 09:36:29 +0000
+++ AMD/Demo/Makefile 2013-12-08 03:08:50 +0000
@@ -4,11 +4,11 @@
44
5default: amd_simple amd_demo amd_demo2 amd_l_demo5default: amd_simple amd_demo amd_demo2 amd_l_demo
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9C = $(CC) $(CFLAGS) -I../Include -I../../UFconfig9C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1010
11INC = ../Include/amd.h ../../UFconfig/UFconfig.h11INC = ../Include/amd.h ../../SuiteSparse_config/SuiteSparse_config.h
1212
13library:13library:
14 ( cd ../Lib ; $(MAKE) )14 ( cd ../Lib ; $(MAKE) )
@@ -88,3 +88,4 @@
88 - $(RM) amd_f77demo my_amd_f77demo.out88 - $(RM) amd_f77demo my_amd_f77demo.out
89 - $(RM) amd_f77simple my_amd_f77simple.out89 - $(RM) amd_f77simple my_amd_f77simple.out
90 - $(RM) amd_f77cross my_amd_f77cross.out90 - $(RM) amd_f77cross my_amd_f77cross.out
91 - $(RM) -r *.dSYM
9192
=== modified file 'AMD/Demo/amd_demo.c'
--- AMD/Demo/amd_demo.c 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_demo.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD Copyright (c) by Timothy A. Davis, */6/* AMD Copyright (c) by Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* DrTimothyAldenDavis@gmail.com, http://www.suitesparse.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
@@ -58,8 +57,8 @@
58 /* here is an example of how to use AMD_VERSION. This code will work in57 /* here is an example of how to use AMD_VERSION. This code will work in
59 * any version of AMD. */58 * any version of AMD. */
60#if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE(1,2))59#if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE(1,2))
61 printf ("AMD version %d.%d, date: %s\n", AMD_MAIN_VERSION, AMD_SUB_VERSION,60 printf ("AMD version %d.%d.%d, date: %s\n",
62 AMD_DATE) ;61 AMD_MAIN_VERSION, AMD_SUB_VERSION, AMD_SUBSUB_VERSION, AMD_DATE) ;
63#else62#else
64 printf ("AMD version: 1.1 or earlier\n") ;63 printf ("AMD version: 1.1 or earlier\n") ;
65#endif64#endif
6665
=== modified file 'AMD/Demo/amd_demo.out'
--- AMD/Demo/amd_demo.out 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_demo.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1AMD version 2.2, date: May 31, 20071AMD version 2.3.0, date: Jun 1, 2012
2AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:2AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:
33
4AMD version 2.2.0, May 31, 2007: approximate minimum degree ordering4AMD version 2.3.0, Jun 1, 2012: approximate minimum degree ordering
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
@@ -115,7 +115,7 @@
11523: . . . . . . X . . . . X X . . . . . . . . . . X11523: . . . . . . X . . . . X X . . . . . . . . . . X
116return value from amd_order: 0 (should be 0)116return value from amd_order: 0 (should be 0)
117117
118AMD version 2.2.0, May 31, 2007, results:118AMD version 2.3.0, Jun 1, 2012, results:
119 status: OK119 status: OK
120 n, dimension of A: 24120 n, dimension of A: 24
121 nz, number of nonzeros in A: 160121 nz, number of nonzeros in A: 160
122122
=== modified file 'AMD/Demo/amd_demo2.c'
--- AMD/Demo/amd_demo2.c 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_demo2.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD Copyright (c) by Timothy A. Davis, */6/* AMD Copyright (c) by Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* DrTimothyAldenDavis@gmail.com, http://www.suitesparse.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
1312
=== modified file 'AMD/Demo/amd_demo2.out'
--- AMD/Demo/amd_demo2.out 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_demo2.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1AMD demo, with a jumbled version of the 24-by-241AMD demo, with a jumbled version of the 24-by-24
2Harwell/Boeing matrix, can_24:2Harwell/Boeing matrix, can_24:
33
4AMD version 2.2.0, May 31, 2007: approximate minimum degree ordering4AMD version 2.3.0, Jun 1, 2012: approximate minimum degree ordering
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
@@ -144,7 +144,7 @@
14423: . . . . . . X . . . . X X . . . . . . . . . . X14423: . . . . . . X . . . . X X . . . . . . . . . . X
145return value from amd_order: 1 (should be 1)145return value from amd_order: 1 (should be 1)
146146
147AMD version 2.2.0, May 31, 2007, results:147AMD version 2.3.0, Jun 1, 2012, results:
148 status: OK, but jumbled148 status: OK, but jumbled
149 n, dimension of A: 24149 n, dimension of A: 24
150 nz, number of nonzeros in A: 102150 nz, number of nonzeros in A: 102
151151
=== modified file 'AMD/Demo/amd_f77cross.f'
--- AMD/Demo/amd_f77cross.f 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_f77cross.f 2013-12-08 03:08:50 +0000
@@ -4,9 +4,8 @@
44
5C ----------------------------------------------------------------------5C ----------------------------------------------------------------------
6C AMD, Copyright (c) by Timothy A. Davis, Patrick R.6C AMD, Copyright (c) by Timothy A. Davis, Patrick R.
7C Amestoy, and Iain S. Duff. See ../README.txt for7C Amestoy, and Iain S. Duff. See ../README.txt for License.
8C License. email: davis at cise.ufl.edu CISE Department, Univ. of8C email: DrTimothyAldenDavis@gmail.com
9C Florida. web: http://www.cise.ufl.edu/research/sparse/amd
10C ----------------------------------------------------------------------9C ----------------------------------------------------------------------
1110
12C This program provides an example of how to call the C version of AMD11C This program provides an example of how to call the C version of AMD
1312
=== modified file 'AMD/Demo/amd_f77demo.f'
--- AMD/Demo/amd_f77demo.f 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_f77demo.f 2013-12-08 03:08:50 +0000
@@ -4,9 +4,8 @@
44
5C ----------------------------------------------------------------------5C ----------------------------------------------------------------------
6C AMD, Copyright (c) by Timothy A. Davis, Patrick R.6C AMD, Copyright (c) by Timothy A. Davis, Patrick R.
7C Amestoy, and Iain S. Duff. See ../README.txt for7C Amestoy, and Iain S. Duff. See ../README.txt for License.
8C License. email: davis at cise.ufl.edu CISE Department, Univ. of8C email: DrTimothyAldenDavis@gmail.com
9C Florida. web: http://www.cise.ufl.edu/research/sparse/amd
10C ----------------------------------------------------------------------9C ----------------------------------------------------------------------
1110
12C A simple Fortran 77 main program that illustrates the use of the11C A simple Fortran 77 main program that illustrates the use of the
1312
=== modified file 'AMD/Demo/amd_f77simple.f'
--- AMD/Demo/amd_f77simple.f 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_f77simple.f 2013-12-08 03:08:50 +0000
@@ -1,8 +1,7 @@
1C ----------------------------------------------------------------------1C ----------------------------------------------------------------------
2C AMD, Copyright (c) by Timothy A. Davis, Patrick R.2C AMD, Copyright (c) by Timothy A. Davis, Patrick R.
3C Amestoy, and Iain S. Duff. See ../README.txt for3C Amestoy, and Iain S. Duff. See ../README.txt for License.
4C License. email: davis at cise.ufl.edu CISE Department, Univ. of4C email: DrTimothyAldenDavis@gmail.com
5C Florida. web: http://www.cise.ufl.edu/research/sparse/amd
6C ----------------------------------------------------------------------5C ----------------------------------------------------------------------
76
8C This program provides an example of how to call the Fortran version7C This program provides an example of how to call the Fortran version
98
=== modified file 'AMD/Demo/amd_f77wrapper.c'
--- AMD/Demo/amd_f77wrapper.c 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_f77wrapper.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD Copyright (c) by Timothy A. Davis, */6/* AMD Copyright (c) by Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Fortran interface for the C-callable AMD library (int version only). This11/* Fortran interface for the C-callable AMD library (int version only). This
1312
=== modified file 'AMD/Demo/amd_l_demo.c'
--- AMD/Demo/amd_l_demo.c 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_l_demo.c 2013-12-08 03:08:50 +0000
@@ -1,12 +1,11 @@
1/* ========================================================================= */1/* ========================================================================= */
2/* === AMD demo main program (UF_long integer version) ===================== */2/* === AMD demo main program (long integer version) ======================== */
3/* ========================================================================= */3/* ========================================================================= */
44
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD Copyright (c) by Timothy A. Davis, */6/* AMD Copyright (c) by Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
@@ -16,14 +15,14 @@
16#include "amd.h"15#include "amd.h"
17#include <stdio.h>16#include <stdio.h>
18#include <stdlib.h>17#include <stdlib.h>
19#include "UFconfig.h"18#define Long SuiteSparse_long
2019
21int main (void)20int main (void)
22{21{
23 /* The symmetric can_24 Harwell/Boeing matrix, including upper and lower22 /* The symmetric can_24 Harwell/Boeing matrix, including upper and lower
24 * triangular parts, and the diagonal entries. Note that this matrix is23 * triangular parts, and the diagonal entries. Note that this matrix is
25 * 0-based, with row and column indices in the range 0 to n-1. */24 * 0-based, with row and column indices in the range 0 to n-1. */
26 UF_long n = 24, nz,25 Long n = 24, nz,
27 Ap [ ] = { 0, 9, 15, 21, 27, 33, 39, 48, 57, 61, 70, 76, 82, 88, 94, 100,26 Ap [ ] = { 0, 9, 15, 21, 27, 33, 39, 48, 57, 61, 70, 76, 82, 88, 94, 100,
28 106, 110, 119, 128, 137, 143, 152, 156, 160 },27 106, 110, 119, 128, 137, 143, 152, 156, 160 },
29 Ai [ ] = {28 Ai [ ] = {
@@ -52,15 +51,15 @@
52 /* column 22: */ 2, 20, 21, 22,51 /* column 22: */ 2, 20, 21, 22,
53 /* column 23: */ 6, 11, 12, 23 } ;52 /* column 23: */ 6, 11, 12, 23 } ;
5453
55 UF_long P [24], Pinv [24], i, j, k, jnew, p, inew, result ;54 Long P [24], Pinv [24], i, j, k, jnew, p, inew, result ;
56 double Control [AMD_CONTROL], Info [AMD_INFO] ;55 double Control [AMD_CONTROL], Info [AMD_INFO] ;
57 char A [24][24] ;56 char A [24][24] ;
5857
59 /* here is an example of how to use AMD_VERSION. This code will work in58 /* here is an example of how to use AMD_VERSION. This code will work in
60 * any version of AMD. */59 * any version of AMD. */
61#if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE(1,2))60#if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE(1,2))
62 printf ("AMD version %d.%d, date: %s\n", AMD_MAIN_VERSION, AMD_SUB_VERSION,61 printf ("AMD version %d.%d.%d, date: %s\n",
63 AMD_DATE) ;62 AMD_MAIN_VERSION, AMD_SUB_VERSION, AMD_SUBSUB_VERSION, AMD_DATE) ;
64#else63#else
65 printf ("AMD version: 1.1 or earlier\n") ;64 printf ("AMD version: 1.1 or earlier\n") ;
66#endif65#endif
6766
=== modified file 'AMD/Demo/amd_l_demo.out'
--- AMD/Demo/amd_l_demo.out 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_l_demo.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1AMD version 2.2, date: May 31, 20071AMD version 2.3.0, date: Jun 1, 2012
2AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:2AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:
33
4AMD version 2.2.0, May 31, 2007: approximate minimum degree ordering4AMD version 2.3.0, Jun 1, 2012: approximate minimum degree ordering
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
@@ -115,7 +115,7 @@
11523: . . . . . . X . . . . X X . . . . . . . . . . X11523: . . . . . . X . . . . X X . . . . . . . . . . X
116return value from amd_l_order: 0 (should be 0)116return value from amd_l_order: 0 (should be 0)
117117
118AMD version 2.2.0, May 31, 2007, results:118AMD version 2.3.0, Jun 1, 2012, results:
119 status: OK119 status: OK
120 n, dimension of A: 24120 n, dimension of A: 24
121 nz, number of nonzeros in A: 160121 nz, number of nonzeros in A: 160
122122
=== modified file 'AMD/Demo/amd_simple.c'
--- AMD/Demo/amd_simple.c 2007-05-29 09:36:29 +0000
+++ AMD/Demo/amd_simple.c 2013-12-08 03:08:50 +0000
@@ -1,8 +1,7 @@
1/* ------------------------------------------------------------------------- */1/* ------------------------------------------------------------------------- */
2/* AMD Copyright (c) by Timothy A. Davis, */2/* AMD Copyright (c) by Timothy A. Davis, */
3/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */3/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
4/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */4/* email: DrTimothyAldenDavis@gmail.com */
5/* web: http://www.cise.ufl.edu/research/sparse/amd */
6/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
76
8#include <stdio.h>7#include <stdio.h>
98
=== modified file 'AMD/Doc/AMD_UserGuide.pdf'
10Binary files AMD/Doc/AMD_UserGuide.pdf 2007-05-29 09:36:29 +0000 and AMD/Doc/AMD_UserGuide.pdf 2013-12-08 03:08:50 +0000 differ9Binary files AMD/Doc/AMD_UserGuide.pdf 2007-05-29 09:36:29 +0000 and AMD/Doc/AMD_UserGuide.pdf 2013-12-08 03:08:50 +0000 differ
=== modified file 'AMD/Doc/AMD_UserGuide.tex'
--- AMD/Doc/AMD_UserGuide.tex 2007-05-29 09:36:29 +0000
+++ AMD/Doc/AMD_UserGuide.tex 2013-12-08 03:08:50 +0000
@@ -13,15 +13,13 @@
13\begin{document}13\begin{document}
14%------------------------------------------------------------------------------14%------------------------------------------------------------------------------
1515
16\title{AMD Version 2.2 User Guide}16\title{AMD User Guide}
17\author{Patrick R. Amestoy\thanks{ENSEEIHT-IRIT,17\author{Patrick R. Amestoy\thanks{ENSEEIHT-IRIT,
182 rue Camichel 31017 Toulouse, France.182 rue Camichel 31017 Toulouse, France.
19email: amestoy@enseeiht.fr. http://www.enseeiht.fr/$\sim$amestoy.}19email: amestoy@enseeiht.fr. http://www.enseeiht.fr/$\sim$amestoy.}
20\and Timothy A. Davis\thanks{20\and Timothy A. Davis\thanks{
21Dept.~of Computer and Information Science and Engineering,21email: DrTimothyAldenDavis@gmail.com,
22Univ.~of Florida, Gainesville, FL, USA.22http://www.suitesparse.com.
23email: davis@cise.ufl.edu.
24http://www.cise.ufl.edu/$\sim$davis.
25This work was supported by the National23This work was supported by the National
26Science Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.24Science Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.
27Portions of the work were done while on sabbatical at Stanford University25Portions of the work were done while on sabbatical at Stanford University
@@ -34,7 +32,7 @@
34This work was supported by the EPSRC under grant GR/R46441.32This work was supported by the EPSRC under grant GR/R46441.
35}}33}}
3634
37\date{May 31, 2007}35\date{VERSION 2.3.1, Jun 20, 2012}
38\maketitle36\maketitle
3937
40%------------------------------------------------------------------------------38%------------------------------------------------------------------------------
@@ -47,10 +45,7 @@
47\end{abstract}45\end{abstract}
48%------------------------------------------------------------------------------46%------------------------------------------------------------------------------
4947
50Technical report TR-04-002 (revised), CISE Department, University of Florida,48AMD Copyright\copyright 2011 by Timothy A.
51Gainesville, FL, 2007.
52
53AMD Version 2.2, Copyright\copyright 2007 by Timothy A.
54Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.49Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.
55AMD is available under alternate licences; contact T. Davis for details.50AMD is available under alternate licences; contact T. Davis for details.
5651
@@ -84,7 +79,7 @@
84 and a notice that the code was modified is included.79 and a notice that the code was modified is included.
8580
86{\bf Availability:}81{\bf Availability:}
87 http://www.cise.ufl.edu/research/sparse/amd82 http://www.suitesparse.com
8883
89{\bf Acknowledgments:}84{\bf Acknowledgments:}
9085
@@ -174,7 +169,7 @@
174%------------------------------------------------------------------------------169%------------------------------------------------------------------------------
175170
176In addition to appearing as a Collected Algorithm of the ACM, \newline171In addition to appearing as a Collected Algorithm of the ACM, \newline
177AMD is available at http://www.cise.ufl.edu/research/sparse.172AMD is available at http://www.suitesparse.com.
178The Fortran version is available as the routine {\tt MC47} in HSL173The Fortran version is available as the routine {\tt MC47} in HSL
179(formerly the Harwell Subroutine Library) \cite{hsl:2002}.174(formerly the Harwell Subroutine Library) \cite{hsl:2002}.
180175
@@ -212,7 +207,7 @@
212uses several strategies, including a symmetric pivoting strategy, and207uses several strategies, including a symmetric pivoting strategy, and
213will give you better results if you want to factorize an unsymmetric matrix208will give you better results if you want to factorize an unsymmetric matrix
214of this type. Refer to the UMFPACK User Guide for more details, at209of this type. Refer to the UMFPACK User Guide for more details, at
215http://www.cise.ufl.edu/research/sparse/umfpack.210http://www.suitesparse.com.
216211
217The AMD mexFunction is much faster than the built-in MATLAB symmetric minimum212The AMD mexFunction is much faster than the built-in MATLAB symmetric minimum
218degree ordering methods, SYMAMD and SYMMMD. Its ordering quality is213degree ordering methods, SYMAMD and SYMMMD. Its ordering quality is
@@ -690,7 +685,8 @@
690The following discussion assumes you have the {\tt make} program, either in685The following discussion assumes you have the {\tt make} program, either in
691Unix, or in Windows with Cygwin.686Unix, or in Windows with Cygwin.
692687
693System-dependent configurations are in the {\tt ../UFconfig/UFconfig.mk}688System-dependent configurations are in the
689{\tt ../SuiteSparse\_config/SuiteSparse\_config.mk}
694file. You can edit that file to customize the compilation. The default690file. You can edit that file to customize the compilation. The default
695settings will work on most systems.691settings will work on most systems.
696Sample configuration files are provided692Sample configuration files are provided
@@ -713,7 +709,8 @@
713Typing {\tt make clean} will remove all but the final compiled libraries709Typing {\tt make clean} will remove all but the final compiled libraries
714and demo programs. Typing {\tt make purge} or {\tt make distclean}710and demo programs. Typing {\tt make purge} or {\tt make distclean}
715removes all files not in the original distribution.711removes all files not in the original distribution.
716If you compile AMD and then later change the {\tt ../UFconfig/UFconfig.mk} file712If you compile AMD and then later change the
713{\tt ../SuiteSparse\_config/SuiteSparse\_config.mk} file
717then you should type {\tt make purge} and then {\tt make} to recompile.714then you should type {\tt make purge} and then {\tt make} to recompile.
718715
719When you compile your program that uses the C-callable AMD library,716When you compile your program that uses the C-callable AMD library,
@@ -731,11 +728,6 @@
731Alternately, type {\tt make} in the {\tt AMD/MATLAB} directory,728Alternately, type {\tt make} in the {\tt AMD/MATLAB} directory,
732or just use the built-in {\tt amd} in MATLAB 7.3 or later.729or just use the built-in {\tt amd} in MATLAB 7.3 or later.
733730
734If you have MATLAB 7.2 or earlier, you must first edit UFconfig/UFconfig.h to
735remove the "-largeArrayDims" option from the MEX command, prior to
736{\tt make mex} or {\tt make} in the MATLAB directory
737(or just use {\tt amd\_make.m} inside MATLAB.
738
739If you are including AMD as a subset of a larger library and do not want731If you are including AMD as a subset of a larger library and do not want
740to link the C standard I/O library, or if you simply do not need to use732to link the C standard I/O library, or if you simply do not need to use
741them, you can safely remove the {\tt amd\_control.c} and {\tt amd\_info.c}733them, you can safely remove the {\tt amd\_control.c} and {\tt amd\_info.c}
@@ -776,422 +768,7 @@
776and gives details on their use.768and gives details on their use.
777769
778{\footnotesize770{\footnotesize
779\begin{verbatim}771\input{amd_h.tex}
780
781/* ========================================================================= */
782/* === AMD: approximate minimum degree ordering =========================== */
783/* ========================================================================= */
784
785/* ------------------------------------------------------------------------- */
786/* AMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, */
787/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
788/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */
789/* web: http://www.cise.ufl.edu/research/sparse/amd */
790/* ------------------------------------------------------------------------- */
791
792/* AMD finds a symmetric ordering P of a matrix A so that the Cholesky
793 * factorization of P*A*P' has fewer nonzeros and takes less work than the
794 * Cholesky factorization of A. If A is not symmetric, then it performs its
795 * ordering on the matrix A+A'. Two sets of user-callable routines are
796 * provided, one for int integers and the other for UF_long integers.
797 *
798 * The method is based on the approximate minimum degree algorithm, discussed
799 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",
800 * SIAM Journal of Matrix Analysis and Applications, vol. 17, no. 4, pp.
801 * 886-905, 1996. This package can perform both the AMD ordering (with
802 * aggressive absorption), and the AMDBAR ordering (without aggressive
803 * absorption) discussed in the above paper. This package differs from the
804 * Fortran codes discussed in the paper:
805 *
806 * (1) it can ignore "dense" rows and columns, leading to faster run times
807 * (2) it computes the ordering of A+A' if A is not symmetric
808 * (3) it is followed by a depth-first post-ordering of the assembly tree
809 * (or supernodal elimination tree)
810 *
811 * For historical reasons, the Fortran versions, amd.f and amdbar.f, have
812 * been left (nearly) unchanged. They compute the identical ordering as
813 * described in the above paper.
814 */
815
816#ifndef AMD_H
817#define AMD_H
818
819/* make it easy for C++ programs to include AMD */
820#ifdef __cplusplus
821extern "C" {
822#endif
823
824/* get the definition of size_t: */
825#include <stddef.h>
826
827/* define UF_long */
828#include "UFconfig.h"
829
830int amd_order /* returns AMD_OK, AMD_OK_BUT_JUMBLED,
831 * AMD_INVALID, or AMD_OUT_OF_MEMORY */
832(
833 int n, /* A is n-by-n. n must be >= 0. */
834 const int Ap [ ], /* column pointers for A, of size n+1 */
835 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */
836 int P [ ], /* output permutation, of size n */
837 double Control [ ], /* input Control settings, of size AMD_CONTROL */
838 double Info [ ] /* output Info statistics, of size AMD_INFO */
839) ;
840
841UF_long amd_l_order /* see above for description of arguments */
842(
843 UF_long n,
844 const UF_long Ap [ ],
845 const UF_long Ai [ ],
846 UF_long P [ ],
847 double Control [ ],
848 double Info [ ]
849) ;
850
851/* Input arguments (not modified):
852 *
853 * n: the matrix A is n-by-n.
854 * Ap: an int/UF_long array of size n+1, containing column pointers of A.
855 * Ai: an int/UF_long array of size nz, containing the row indices of A,
856 * where nz = Ap [n].
857 * Control: a double array of size AMD_CONTROL, containing control
858 * parameters. Defaults are used if Control is NULL.
859 *
860 * Output arguments (not defined on input):
861 *
862 * P: an int/UF_long array of size n, containing the output permutation. If
863 * row i is the kth pivot row, then P [k] = i. In MATLAB notation,
864 * the reordered matrix is A (P,P).
865 * Info: a double array of size AMD_INFO, containing statistical
866 * information. Ignored if Info is NULL.
867 *
868 * On input, the matrix A is stored in column-oriented form. The row indices
869 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].
870 *
871 * If the row indices appear in ascending order in each column, and there
872 * are no duplicate entries, then amd_order is slightly more efficient in
873 * terms of time and memory usage. If this condition does not hold, a copy
874 * of the matrix is created (where these conditions do hold), and the copy is
875 * ordered. This feature is new to v2.0 (v1.2 and earlier required this
876 * condition to hold for the input matrix).
877 *
878 * Row indices must be in the range 0 to
879 * n-1. Ap [0] must be zero, and thus nz = Ap [n] is the number of nonzeros
880 * in A. The array Ap is of size n+1, and the array Ai is of size nz = Ap [n].
881 * The matrix does not need to be symmetric, and the diagonal does not need to
882 * be present (if diagonal entries are present, they are ignored except for
883 * the output statistic Info [AMD_NZDIAG]). The arrays Ai and Ap are not
884 * modified. This form of the Ap and Ai arrays to represent the nonzero
885 * pattern of the matrix A is the same as that used internally by MATLAB.
886 * If you wish to use a more flexible input structure, please see the
887 * umfpack_*_triplet_to_col routines in the UMFPACK package, at
888 * http://www.cise.ufl.edu/research/sparse/umfpack.
889 *
890 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the
891 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0
892 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these
893 * restrictions are not met, AMD returns AMD_INVALID.
894 *
895 * AMD returns:
896 *
897 * AMD_OK if the matrix is valid and sufficient memory can be allocated to
898 * perform the ordering.
899 *
900 * AMD_OUT_OF_MEMORY if not enough memory can be allocated.
901 *
902 * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is
903 * NULL.
904 *
905 * AMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate
906 * entries, but was otherwise valid.
907 *
908 * The AMD routine first forms the pattern of the matrix A+A', and then
909 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of
910 * the original is the kth pivotal row. In MATLAB notation, the permuted
911 * matrix is A (P,P), except that 0-based indexing is used instead of the
912 * 1-based indexing in MATLAB.
913 *
914 * The Control array is used to set various parameters for AMD. If a NULL
915 * pointer is passed, default values are used. The Control array is not
916 * modified.
917 *
918 * Control [AMD_DENSE]: controls the threshold for "dense" rows/columns.
919 * A dense row/column in A+A' can cause AMD to spend a lot of time in
920 * ordering the matrix. If Control [AMD_DENSE] >= 0, rows/columns
921 * with more than Control [AMD_DENSE] * sqrt (n) entries are ignored
922 * during the ordering, and placed last in the output order. The
923 * default value of Control [AMD_DENSE] is 10. If negative, no
924 * rows/columns are treated as "dense". Rows/columns with 16 or
925 * fewer off-diagonal entries are never considered "dense".
926 *
927 * Control [AMD_AGGRESSIVE]: controls whether or not to use aggressive
928 * absorption, in which a prior element is absorbed into the current
929 * element if is a subset of the current element, even if it is not
930 * adjacent to the current pivot element (refer to Amestoy, Davis,
931 * & Duff, 1996, for more details). The default value is nonzero,
932 * which means to perform aggressive absorption. This nearly always
933 * leads to a better ordering (because the approximate degrees are
934 * more accurate) and a lower execution time. There are cases where
935 * it can lead to a slightly worse ordering, however. To turn it off,
936 * set Control [AMD_AGGRESSIVE] to 0.
937 *
938 * Control [2..4] are not used in the current version, but may be used in
939 * future versions.
940 *
941 * The Info array provides statistics about the ordering on output. If it is
942 * not present, the statistics are not returned. This is not an error
943 * condition.
944 *
945 * Info [AMD_STATUS]: the return value of AMD, either AMD_OK,
946 * AMD_OK_BUT_JUMBLED, AMD_OUT_OF_MEMORY, or AMD_INVALID.
947 *
948 * Info [AMD_N]: n, the size of the input matrix
949 *
950 * Info [AMD_NZ]: the number of nonzeros in A, nz = Ap [n]
951 *
952 * Info [AMD_SYMMETRY]: the symmetry of the matrix A. It is the number
953 * of "matched" off-diagonal entries divided by the total number of
954 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also
955 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,
956 * S = spones (A) ;
957 * B = tril (S, -1) + triu (S, 1) ;
958 * symmetry = nnz (B & B') / nnz (B) ;
959 *
960 * Info [AMD_NZDIAG]: the number of entries on the diagonal of A.
961 *
962 * Info [AMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the
963 * diagonal. If A is perfectly symmetric (Info [AMD_SYMMETRY] = 1)
964 * with a fully nonzero diagonal, then Info [AMD_NZ_A_PLUS_AT] = nz-n
965 * (the smallest possible value). If A is perfectly unsymmetric
966 * (Info [AMD_SYMMETRY] = 0, for an upper triangular matrix, for
967 * example) with no diagonal, then Info [AMD_NZ_A_PLUS_AT] = 2*nz
968 * (the largest possible value).
969 *
970 * Info [AMD_NDENSE]: the number of "dense" rows/columns of A+A' that were
971 * removed from A prior to ordering. These are placed last in the
972 * output order P.
973 *
974 * Info [AMD_MEMORY]: the amount of memory used by AMD, in bytes. In the
975 * current version, this is 1.2 * Info [AMD_NZ_A_PLUS_AT] + 9*n
976 * times the size of an integer. This is at most 2.4nz + 9n. This
977 * excludes the size of the input arguments Ai, Ap, and P, which have
978 * a total size of nz + 2*n + 1 integers.
979 *
980 * Info [AMD_NCMPA]: the number of garbage collections performed.
981 *
982 * Info [AMD_LNZ]: the number of nonzeros in L (excluding the diagonal).
983 * This is a slight upper bound because mass elimination is combined
984 * with the approximate degree update. It is a rough upper bound if
985 * there are many "dense" rows/columns. The rest of the statistics,
986 * below, are also slight or rough upper bounds, for the same reasons.
987 * The post-ordering of the assembly tree might also not exactly
988 * correspond to a true elimination tree postordering.
989 *
990 * Info [AMD_NDIV]: the number of divide operations for a subsequent LDL'
991 * or LU factorization of the permuted matrix A (P,P).
992 *
993 * Info [AMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a
994 * subsequent LDL' factorization of A (P,P).
995 *
996 * Info [AMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a
997 * subsequent LU factorization of A (P,P), assuming that no numerical
998 * pivoting is required.
999 *
1000 * Info [AMD_DMAX]: the maximum number of nonzeros in any column of L,
1001 * including the diagonal.
1002 *
1003 * Info [14..19] are not used in the current version, but may be used in
1004 * future versions.
1005 */
1006
1007/* ------------------------------------------------------------------------- */
1008/* direct interface to AMD */
1009/* ------------------------------------------------------------------------- */
1010
1011/* amd_2 is the primary AMD ordering routine. It is not meant to be
1012 * user-callable because of its restrictive inputs and because it destroys
1013 * the user's input matrix. It does not check its inputs for errors, either.
1014 * However, if you can work with these restrictions it can be faster than
1015 * amd_order and use less memory (assuming that you can create your own copy
1016 * of the matrix for AMD to destroy). Refer to AMD/Source/amd_2.c for a
1017 * description of each parameter. */
1018
1019void amd_2
1020(
1021 int n,
1022 int Pe [ ],
1023 int Iw [ ],
1024 int Len [ ],
1025 int iwlen,
1026 int pfree,
1027 int Nv [ ],
1028 int Next [ ],
1029 int Last [ ],
1030 int Head [ ],
1031 int Elen [ ],
1032 int Degree [ ],
1033 int W [ ],
1034 double Control [ ],
1035 double Info [ ]
1036) ;
1037
1038void amd_l2
1039(
1040 UF_long n,
1041 UF_long Pe [ ],
1042 UF_long Iw [ ],
1043 UF_long Len [ ],
1044 UF_long iwlen,
1045 UF_long pfree,
1046 UF_long Nv [ ],
1047 UF_long Next [ ],
1048 UF_long Last [ ],
1049 UF_long Head [ ],
1050 UF_long Elen [ ],
1051 UF_long Degree [ ],
1052 UF_long W [ ],
1053 double Control [ ],
1054 double Info [ ]
1055) ;
1056
1057/* ------------------------------------------------------------------------- */
1058/* amd_valid */
1059/* ------------------------------------------------------------------------- */
1060
1061/* Returns AMD_OK or AMD_OK_BUT_JUMBLED if the matrix is valid as input to
1062 * amd_order; the latter is returned if the matrix has unsorted and/or
1063 * duplicate row indices in one or more columns. Returns AMD_INVALID if the
1064 * matrix cannot be passed to amd_order. For amd_order, the matrix must also
1065 * be square. The first two arguments are the number of rows and the number
1066 * of columns of the matrix. For its use in AMD, these must both equal n.
1067 *
1068 * NOTE: this routine returned TRUE/FALSE in v1.2 and earlier.
1069 */
1070
1071int amd_valid
1072(
1073 int n_row, /* # of rows */
1074 int n_col, /* # of columns */
1075 const int Ap [ ], /* column pointers, of size n_col+1 */
1076 const int Ai [ ] /* row indices, of size Ap [n_col] */
1077) ;
1078
1079UF_long amd_l_valid
1080(
1081 UF_long n_row,
1082 UF_long n_col,
1083 const UF_long Ap [ ],
1084 const UF_long Ai [ ]
1085) ;
1086
1087/* ------------------------------------------------------------------------- */
1088/* AMD memory manager and printf routines */
1089/* ------------------------------------------------------------------------- */
1090
1091/* The user can redefine these to change the malloc, free, and printf routines
1092 * that AMD uses. */
1093
1094#ifndef EXTERN
1095#define EXTERN extern
1096#endif
1097
1098EXTERN void *(*amd_malloc) (size_t) ; /* pointer to malloc */
1099EXTERN void (*amd_free) (void *) ; /* pointer to free */
1100EXTERN void *(*amd_realloc) (void *, size_t) ; /* pointer to realloc */
1101EXTERN void *(*amd_calloc) (size_t, size_t) ; /* pointer to calloc */
1102EXTERN int (*amd_printf) (const char *, ...) ; /* pointer to printf */
1103
1104/* ------------------------------------------------------------------------- */
1105/* AMD Control and Info arrays */
1106/* ------------------------------------------------------------------------- */
1107
1108/* amd_defaults: sets the default control settings */
1109void amd_defaults (double Control [ ]) ;
1110void amd_l_defaults (double Control [ ]) ;
1111
1112/* amd_control: prints the control settings */
1113void amd_control (double Control [ ]) ;
1114void amd_l_control (double Control [ ]) ;
1115
1116/* amd_info: prints the statistics */
1117void amd_info (double Info [ ]) ;
1118void amd_l_info (double Info [ ]) ;
1119
1120#define AMD_CONTROL 5 /* size of Control array */
1121#define AMD_INFO 20 /* size of Info array */
1122
1123/* contents of Control */
1124#define AMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */
1125#define AMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */
1126
1127/* default Control settings */
1128#define AMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */
1129#define AMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */
1130
1131/* contents of Info */
1132#define AMD_STATUS 0 /* return value of amd_order and amd_l_order */
1133#define AMD_N 1 /* A is n-by-n */
1134#define AMD_NZ 2 /* number of nonzeros in A */
1135#define AMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */
1136#define AMD_NZDIAG 4 /* # of entries on diagonal */
1137#define AMD_NZ_A_PLUS_AT 5 /* nz in A+A' */
1138#define AMD_NDENSE 6 /* number of "dense" rows/columns in A */
1139#define AMD_MEMORY 7 /* amount of memory used by AMD */
1140#define AMD_NCMPA 8 /* number of garbage collections in AMD */
1141#define AMD_LNZ 9 /* approx. nz in L, excluding the diagonal */
1142#define AMD_NDIV 10 /* number of fl. point divides for LU and LDL' */
1143#define AMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */
1144#define AMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */
1145#define AMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */
1146
1147/* ------------------------------------------------------------------------- */
1148/* return values of AMD */
1149/* ------------------------------------------------------------------------- */
1150
1151#define AMD_OK 0 /* success */
1152#define AMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */
1153#define AMD_INVALID -2 /* input arguments are not valid */
1154#define AMD_OK_BUT_JUMBLED 1 /* input matrix is OK for amd_order, but
1155 * columns were not sorted, and/or duplicate entries were present. AMD had
1156 * to do extra work before ordering the matrix. This is a warning, not an
1157 * error. */
1158
1159/* ========================================================================== */
1160/* === AMD version ========================================================== */
1161/* ========================================================================== */
1162
1163/* AMD Version 1.2 and later include the following definitions.
1164 * As an example, to test if the version you are using is 1.2 or later:
1165 *
1166 * #ifdef AMD_VERSION
1167 * if (AMD_VERSION >= AMD_VERSION_CODE (1,2)) ...
1168 * #endif
1169 *
1170 * This also works during compile-time:
1171 *
1172 * #if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE (1,2))
1173 * printf ("This is version 1.2 or later\n") ;
1174 * #else
1175 * printf ("This is an early version\n") ;
1176 * #endif
1177 *
1178 * Versions 1.1 and earlier of AMD do not include a #define'd version number.
1179 */
1180
1181#define AMD_DATE "May 31, 2007"
1182#define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
1183#define AMD_MAIN_VERSION 2
1184#define AMD_SUB_VERSION 2
1185#define AMD_SUBSUB_VERSION 0
1186#define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION)
1187
1188#ifdef __cplusplus
1189}
1190#endif
1191
1192#endif
1193#endif
1194\end{verbatim}
1195}772}
1196773
1197774
1198775
=== modified file 'AMD/Doc/ChangeLog'
--- AMD/Doc/ChangeLog 2007-05-29 09:36:29 +0000
+++ AMD/Doc/ChangeLog 2013-12-08 03:08:50 +0000
@@ -1,3 +1,27 @@
1Jun 20, 2012: verison 2.3.1
2
3 * minor update for Windows (removed filesep)
4
5Jun 1, 2012: version 2.3.0
6
7 * changed from UFconfig to SuiteSparse_config
8
9May 15, 2011: version 2.2.4
10
11 * minor fix to SIZE_T_MAX definition (finicky compiler workaround)
12
13Dec 7, 2011: version 2.2.3
14
15 * fixed the Makefile to better align with CFLAGS and other standards
16
17Jan 25, 2011: version 2.2.2
18
19 * minor fix to "make install"
20
21Nov 30, 2009: version 2.2.1
22
23 * added "make install" and "make uninstall"
24
1May 31, 2007: version 2.2.025May 31, 2007: version 2.2.0
226
3 * port to 64-bit MATLAB27 * port to 64-bit MATLAB
428
=== modified file 'AMD/Doc/License'
--- AMD/Doc/License 2007-05-29 09:36:29 +0000
+++ AMD/Doc/License 2013-12-08 03:08:50 +0000
@@ -34,6 +34,6 @@
3434
35Availability:35Availability:
3636
37 http://www.cise.ufl.edu/research/sparse/amd37 http://www.suitesparse.com
3838
39-------------------------------------------------------------------------------39-------------------------------------------------------------------------------
4040
=== modified file 'AMD/Doc/Makefile'
--- AMD/Doc/Makefile 2006-12-22 10:16:15 +0000
+++ AMD/Doc/Makefile 2013-12-08 03:08:50 +0000
@@ -4,7 +4,7 @@
44
5default: dist5default: dist
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9#------------------------------------------------------------------------------9#------------------------------------------------------------------------------
10# Remove all but the files in the original distribution10# Remove all but the files in the original distribution
@@ -22,12 +22,15 @@
22# Create the User Guide and Quick Start Guide22# Create the User Guide and Quick Start Guide
23#------------------------------------------------------------------------------23#------------------------------------------------------------------------------
2424
25AMD_UserGuide.pdf: AMD_UserGuide.tex AMD_UserGuide.bib25AMD_UserGuide.pdf: AMD_UserGuide.tex AMD_UserGuide.bib ../Include/amd.h
26 echo '\\begin{verbatim}' > amd_h.tex
27 expand -8 ../Include/amd.h >> amd_h.tex
28 echo '\end{verbatim}' >> amd_h.tex
26 pdflatex AMD_UserGuide29 pdflatex AMD_UserGuide
27 bibtex AMD_UserGuide30 bibtex AMD_UserGuide
28 pdflatex AMD_UserGuide31 pdflatex AMD_UserGuide
29 pdflatex AMD_UserGuide32 pdflatex AMD_UserGuide
3033
31dist: AMD_UserGuide.pdf34dist: AMD_UserGuide.pdf
32 - $(RM) *.aux *.bbl *.blg *.log *.toc35 - $(RM) *.aux *.bbl *.blg *.log *.toc amd_h.tex
3336
3437
=== modified file 'AMD/Include/amd.h'
--- AMD/Include/amd.h 2007-05-29 09:36:29 +0000
+++ AMD/Include/amd.h 2013-12-08 03:08:50 +0000
@@ -5,15 +5,14 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, */6/* AMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* AMD finds a symmetric ordering P of a matrix A so that the Cholesky11/* AMD finds a symmetric ordering P of a matrix A so that the Cholesky
13 * factorization of P*A*P' has fewer nonzeros and takes less work than the12 * factorization of P*A*P' has fewer nonzeros and takes less work than the
14 * Cholesky factorization of A. If A is not symmetric, then it performs its13 * Cholesky factorization of A. If A is not symmetric, then it performs its
15 * ordering on the matrix A+A'. Two sets of user-callable routines are14 * ordering on the matrix A+A'. Two sets of user-callable routines are
16 * provided, one for int integers and the other for UF_long integers.15 * provided, one for int integers and the other for SuiteSparse_long integers.
17 *16 *
18 * The method is based on the approximate minimum degree algorithm, discussed17 * The method is based on the approximate minimum degree algorithm, discussed
19 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",18 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",
@@ -23,10 +22,10 @@
23 * absorption) discussed in the above paper. This package differs from the22 * absorption) discussed in the above paper. This package differs from the
24 * Fortran codes discussed in the paper:23 * Fortran codes discussed in the paper:
25 *24 *
26 * (1) it can ignore "dense" rows and columns, leading to faster run times25 * (1) it can ignore "dense" rows and columns, leading to faster run times
27 * (2) it computes the ordering of A+A' if A is not symmetric26 * (2) it computes the ordering of A+A' if A is not symmetric
28 * (3) it is followed by a depth-first post-ordering of the assembly tree27 * (3) it is followed by a depth-first post-ordering of the assembly tree
29 * (or supernodal elimination tree)28 * (or supernodal elimination tree)
30 *29 *
31 * For historical reasons, the Fortran versions, amd.f and amdbar.f, have30 * For historical reasons, the Fortran versions, amd.f and amdbar.f, have
32 * been left (nearly) unchanged. They compute the identical ordering as31 * been left (nearly) unchanged. They compute the identical ordering as
@@ -44,46 +43,46 @@
44/* get the definition of size_t: */43/* get the definition of size_t: */
45#include <stddef.h>44#include <stddef.h>
4645
47/* define UF_long */46#include "SuiteSparse_config.h"
48#include "UFconfig.h"
4947
50int amd_order /* returns AMD_OK, AMD_OK_BUT_JUMBLED,48int amd_order /* returns AMD_OK, AMD_OK_BUT_JUMBLED,
51 * AMD_INVALID, or AMD_OUT_OF_MEMORY */49 * AMD_INVALID, or AMD_OUT_OF_MEMORY */
52(50(
53 int n, /* A is n-by-n. n must be >= 0. */51 int n, /* A is n-by-n. n must be >= 0. */
54 const int Ap [ ], /* column pointers for A, of size n+1 */52 const int Ap [ ], /* column pointers for A, of size n+1 */
55 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */53 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */
56 int P [ ], /* output permutation, of size n */54 int P [ ], /* output permutation, of size n */
57 double Control [ ], /* input Control settings, of size AMD_CONTROL */55 double Control [ ], /* input Control settings, of size AMD_CONTROL */
58 double Info [ ] /* output Info statistics, of size AMD_INFO */56 double Info [ ] /* output Info statistics, of size AMD_INFO */
59) ;57) ;
6058
61UF_long amd_l_order /* see above for description of arguments */59SuiteSparse_long amd_l_order /* see above for description of arguments */
62(60(
63 UF_long n,61 SuiteSparse_long n,
64 const UF_long Ap [ ],62 const SuiteSparse_long Ap [ ],
65 const UF_long Ai [ ],63 const SuiteSparse_long Ai [ ],
66 UF_long P [ ],64 SuiteSparse_long P [ ],
67 double Control [ ],65 double Control [ ],
68 double Info [ ]66 double Info [ ]
69) ;67) ;
7068
71/* Input arguments (not modified):69/* Input arguments (not modified):
72 *70 *
73 * n: the matrix A is n-by-n.71 * n: the matrix A is n-by-n.
74 * Ap: an int/UF_long array of size n+1, containing column pointers of A.72 * Ap: an int/SuiteSparse_long array of size n+1, containing column
75 * Ai: an int/UF_long array of size nz, containing the row indices of A,73 * pointers of A.
76 * where nz = Ap [n].74 * Ai: an int/SuiteSparse_long array of size nz, containing the row
77 * Control: a double array of size AMD_CONTROL, containing control75 * indices of A, where nz = Ap [n].
78 * parameters. Defaults are used if Control is NULL.76 * Control: a double array of size AMD_CONTROL, containing control
77 * parameters. Defaults are used if Control is NULL.
79 *78 *
80 * Output arguments (not defined on input):79 * Output arguments (not defined on input):
81 *80 *
82 * P: an int/UF_long array of size n, containing the output permutation. If81 * P: an int/SuiteSparse_long array of size n, containing the output
83 * row i is the kth pivot row, then P [k] = i. In MATLAB notation,82 * permutation. If row i is the kth pivot row, then P [k] = i. In
84 * the reordered matrix is A (P,P).83 * MATLAB notation, the reordered matrix is A (P,P).
85 * Info: a double array of size AMD_INFO, containing statistical84 * Info: a double array of size AMD_INFO, containing statistical
86 * information. Ignored if Info is NULL.85 * information. Ignored if Info is NULL.
87 *86 *
88 * On input, the matrix A is stored in column-oriented form. The row indices87 * On input, the matrix A is stored in column-oriented form. The row indices
89 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].88 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].
@@ -105,25 +104,25 @@
105 * pattern of the matrix A is the same as that used internally by MATLAB.104 * pattern of the matrix A is the same as that used internally by MATLAB.
106 * If you wish to use a more flexible input structure, please see the105 * If you wish to use a more flexible input structure, please see the
107 * umfpack_*_triplet_to_col routines in the UMFPACK package, at106 * umfpack_*_triplet_to_col routines in the UMFPACK package, at
108 * http://www.cise.ufl.edu/research/sparse/umfpack.107 * http://www.suitesparse.com.
109 *108 *
110 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the109 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the
111 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0110 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0
112 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these111 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these
113 * restrictions are not met, AMD returns AMD_INVALID.112 * restrictions are not met, AMD returns AMD_INVALID.
114 *113 *
115 * AMD returns:114 * AMD returns:
116 *115 *
117 * AMD_OK if the matrix is valid and sufficient memory can be allocated to116 * AMD_OK if the matrix is valid and sufficient memory can be allocated to
118 * perform the ordering.117 * perform the ordering.
119 *118 *
120 * AMD_OUT_OF_MEMORY if not enough memory can be allocated.119 * AMD_OUT_OF_MEMORY if not enough memory can be allocated.
121 *120 *
122 * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is121 * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is
123 * NULL.122 * NULL.
124 *123 *
125 * AMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate124 * AMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate
126 * entries, but was otherwise valid.125 * entries, but was otherwise valid.
127 *126 *
128 * The AMD routine first forms the pattern of the matrix A+A', and then127 * The AMD routine first forms the pattern of the matrix A+A', and then
129 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of128 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of
@@ -135,93 +134,93 @@
135 * pointer is passed, default values are used. The Control array is not134 * pointer is passed, default values are used. The Control array is not
136 * modified.135 * modified.
137 *136 *
138 * Control [AMD_DENSE]: controls the threshold for "dense" rows/columns.137 * Control [AMD_DENSE]: controls the threshold for "dense" rows/columns.
139 * A dense row/column in A+A' can cause AMD to spend a lot of time in138 * A dense row/column in A+A' can cause AMD to spend a lot of time in
140 * ordering the matrix. If Control [AMD_DENSE] >= 0, rows/columns139 * ordering the matrix. If Control [AMD_DENSE] >= 0, rows/columns
141 * with more than Control [AMD_DENSE] * sqrt (n) entries are ignored140 * with more than Control [AMD_DENSE] * sqrt (n) entries are ignored
142 * during the ordering, and placed last in the output order. The141 * during the ordering, and placed last in the output order. The
143 * default value of Control [AMD_DENSE] is 10. If negative, no142 * default value of Control [AMD_DENSE] is 10. If negative, no
144 * rows/columns are treated as "dense". Rows/columns with 16 or143 * rows/columns are treated as "dense". Rows/columns with 16 or
145 * fewer off-diagonal entries are never considered "dense".144 * fewer off-diagonal entries are never considered "dense".
146 *145 *
147 * Control [AMD_AGGRESSIVE]: controls whether or not to use aggressive146 * Control [AMD_AGGRESSIVE]: controls whether or not to use aggressive
148 * absorption, in which a prior element is absorbed into the current147 * absorption, in which a prior element is absorbed into the current
149 * element if is a subset of the current element, even if it is not148 * element if is a subset of the current element, even if it is not
150 * adjacent to the current pivot element (refer to Amestoy, Davis,149 * adjacent to the current pivot element (refer to Amestoy, Davis,
151 * & Duff, 1996, for more details). The default value is nonzero,150 * & Duff, 1996, for more details). The default value is nonzero,
152 * which means to perform aggressive absorption. This nearly always151 * which means to perform aggressive absorption. This nearly always
153 * leads to a better ordering (because the approximate degrees are152 * leads to a better ordering (because the approximate degrees are
154 * more accurate) and a lower execution time. There are cases where153 * more accurate) and a lower execution time. There are cases where
155 * it can lead to a slightly worse ordering, however. To turn it off,154 * it can lead to a slightly worse ordering, however. To turn it off,
156 * set Control [AMD_AGGRESSIVE] to 0.155 * set Control [AMD_AGGRESSIVE] to 0.
157 *156 *
158 * Control [2..4] are not used in the current version, but may be used in157 * Control [2..4] are not used in the current version, but may be used in
159 * future versions.158 * future versions.
160 *159 *
161 * The Info array provides statistics about the ordering on output. If it is160 * The Info array provides statistics about the ordering on output. If it is
162 * not present, the statistics are not returned. This is not an error161 * not present, the statistics are not returned. This is not an error
163 * condition.162 * condition.
164 * 163 *
165 * Info [AMD_STATUS]: the return value of AMD, either AMD_OK,164 * Info [AMD_STATUS]: the return value of AMD, either AMD_OK,
166 * AMD_OK_BUT_JUMBLED, AMD_OUT_OF_MEMORY, or AMD_INVALID.165 * AMD_OK_BUT_JUMBLED, AMD_OUT_OF_MEMORY, or AMD_INVALID.
167 *166 *
168 * Info [AMD_N]: n, the size of the input matrix167 * Info [AMD_N]: n, the size of the input matrix
169 *168 *
170 * Info [AMD_NZ]: the number of nonzeros in A, nz = Ap [n]169 * Info [AMD_NZ]: the number of nonzeros in A, nz = Ap [n]
171 *170 *
172 * Info [AMD_SYMMETRY]: the symmetry of the matrix A. It is the number171 * Info [AMD_SYMMETRY]: the symmetry of the matrix A. It is the number
173 * of "matched" off-diagonal entries divided by the total number of172 * of "matched" off-diagonal entries divided by the total number of
174 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also173 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also
175 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,174 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,
176 * S = spones (A) ;175 * S = spones (A) ;
177 * B = tril (S, -1) + triu (S, 1) ;176 * B = tril (S, -1) + triu (S, 1) ;
178 * symmetry = nnz (B & B') / nnz (B) ;177 * symmetry = nnz (B & B') / nnz (B) ;
179 *178 *
180 * Info [AMD_NZDIAG]: the number of entries on the diagonal of A.179 * Info [AMD_NZDIAG]: the number of entries on the diagonal of A.
181 *180 *
182 * Info [AMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the181 * Info [AMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the
183 * diagonal. If A is perfectly symmetric (Info [AMD_SYMMETRY] = 1)182 * diagonal. If A is perfectly symmetric (Info [AMD_SYMMETRY] = 1)
184 * with a fully nonzero diagonal, then Info [AMD_NZ_A_PLUS_AT] = nz-n183 * with a fully nonzero diagonal, then Info [AMD_NZ_A_PLUS_AT] = nz-n
185 * (the smallest possible value). If A is perfectly unsymmetric184 * (the smallest possible value). If A is perfectly unsymmetric
186 * (Info [AMD_SYMMETRY] = 0, for an upper triangular matrix, for185 * (Info [AMD_SYMMETRY] = 0, for an upper triangular matrix, for
187 * example) with no diagonal, then Info [AMD_NZ_A_PLUS_AT] = 2*nz186 * example) with no diagonal, then Info [AMD_NZ_A_PLUS_AT] = 2*nz
188 * (the largest possible value).187 * (the largest possible value).
189 *188 *
190 * Info [AMD_NDENSE]: the number of "dense" rows/columns of A+A' that were189 * Info [AMD_NDENSE]: the number of "dense" rows/columns of A+A' that were
191 * removed from A prior to ordering. These are placed last in the190 * removed from A prior to ordering. These are placed last in the
192 * output order P.191 * output order P.
193 *192 *
194 * Info [AMD_MEMORY]: the amount of memory used by AMD, in bytes. In the193 * Info [AMD_MEMORY]: the amount of memory used by AMD, in bytes. In the
195 * current version, this is 1.2 * Info [AMD_NZ_A_PLUS_AT] + 9*n194 * current version, this is 1.2 * Info [AMD_NZ_A_PLUS_AT] + 9*n
196 * times the size of an integer. This is at most 2.4nz + 9n. This195 * times the size of an integer. This is at most 2.4nz + 9n. This
197 * excludes the size of the input arguments Ai, Ap, and P, which have196 * excludes the size of the input arguments Ai, Ap, and P, which have
198 * a total size of nz + 2*n + 1 integers.197 * a total size of nz + 2*n + 1 integers.
199 *198 *
200 * Info [AMD_NCMPA]: the number of garbage collections performed.199 * Info [AMD_NCMPA]: the number of garbage collections performed.
201 *200 *
202 * Info [AMD_LNZ]: the number of nonzeros in L (excluding the diagonal).201 * Info [AMD_LNZ]: the number of nonzeros in L (excluding the diagonal).
203 * This is a slight upper bound because mass elimination is combined202 * This is a slight upper bound because mass elimination is combined
204 * with the approximate degree update. It is a rough upper bound if203 * with the approximate degree update. It is a rough upper bound if
205 * there are many "dense" rows/columns. The rest of the statistics,204 * there are many "dense" rows/columns. The rest of the statistics,
206 * below, are also slight or rough upper bounds, for the same reasons.205 * below, are also slight or rough upper bounds, for the same reasons.
207 * The post-ordering of the assembly tree might also not exactly206 * The post-ordering of the assembly tree might also not exactly
208 * correspond to a true elimination tree postordering.207 * correspond to a true elimination tree postordering.
209 *208 *
210 * Info [AMD_NDIV]: the number of divide operations for a subsequent LDL'209 * Info [AMD_NDIV]: the number of divide operations for a subsequent LDL'
211 * or LU factorization of the permuted matrix A (P,P).210 * or LU factorization of the permuted matrix A (P,P).
212 *211 *
213 * Info [AMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a212 * Info [AMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a
214 * subsequent LDL' factorization of A (P,P).213 * subsequent LDL' factorization of A (P,P).
215 *214 *
216 * Info [AMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a215 * Info [AMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a
217 * subsequent LU factorization of A (P,P), assuming that no numerical216 * subsequent LU factorization of A (P,P), assuming that no numerical
218 * pivoting is required.217 * pivoting is required.
219 *218 *
220 * Info [AMD_DMAX]: the maximum number of nonzeros in any column of L,219 * Info [AMD_DMAX]: the maximum number of nonzeros in any column of L,
221 * including the diagonal.220 * including the diagonal.
222 *221 *
223 * Info [14..19] are not used in the current version, but may be used in222 * Info [14..19] are not used in the current version, but may be used in
224 * future versions.223 * future versions.
225 */ 224 */
226225
227/* ------------------------------------------------------------------------- */226/* ------------------------------------------------------------------------- */
@@ -257,19 +256,19 @@
257256
258void amd_l2257void amd_l2
259(258(
260 UF_long n,259 SuiteSparse_long n,
261 UF_long Pe [ ],260 SuiteSparse_long Pe [ ],
262 UF_long Iw [ ],261 SuiteSparse_long Iw [ ],
263 UF_long Len [ ],262 SuiteSparse_long Len [ ],
264 UF_long iwlen,263 SuiteSparse_long iwlen,
265 UF_long pfree,264 SuiteSparse_long pfree,
266 UF_long Nv [ ],265 SuiteSparse_long Nv [ ],
267 UF_long Next [ ], 266 SuiteSparse_long Next [ ],
268 UF_long Last [ ],267 SuiteSparse_long Last [ ],
269 UF_long Head [ ],268 SuiteSparse_long Head [ ],
270 UF_long Elen [ ],269 SuiteSparse_long Elen [ ],
271 UF_long Degree [ ],270 SuiteSparse_long Degree [ ],
272 UF_long W [ ],271 SuiteSparse_long W [ ],
273 double Control [ ],272 double Control [ ],
274 double Info [ ]273 double Info [ ]
275) ;274) ;
@@ -290,18 +289,18 @@
290289
291int amd_valid290int amd_valid
292(291(
293 int n_row, /* # of rows */292 int n_row, /* # of rows */
294 int n_col, /* # of columns */293 int n_col, /* # of columns */
295 const int Ap [ ], /* column pointers, of size n_col+1 */294 const int Ap [ ], /* column pointers, of size n_col+1 */
296 const int Ai [ ] /* row indices, of size Ap [n_col] */295 const int Ai [ ] /* row indices, of size Ap [n_col] */
297) ;296) ;
298297
299UF_long amd_l_valid298SuiteSparse_long amd_l_valid
300(299(
301 UF_long n_row,300 SuiteSparse_long n_row,
302 UF_long n_col,301 SuiteSparse_long n_col,
303 const UF_long Ap [ ],302 const SuiteSparse_long Ap [ ],
304 const UF_long Ai [ ]303 const SuiteSparse_long Ai [ ]
305) ;304) ;
306305
307/* ------------------------------------------------------------------------- */306/* ------------------------------------------------------------------------- */
@@ -315,11 +314,11 @@
315#define EXTERN extern314#define EXTERN extern
316#endif315#endif
317316
318EXTERN void *(*amd_malloc) (size_t) ; /* pointer to malloc */317EXTERN void *(*amd_malloc) (size_t) ; /* pointer to malloc */
319EXTERN void (*amd_free) (void *) ; /* pointer to free */318EXTERN void (*amd_free) (void *) ; /* pointer to free */
320EXTERN void *(*amd_realloc) (void *, size_t) ; /* pointer to realloc */319EXTERN void *(*amd_realloc) (void *, size_t) ; /* pointer to realloc */
321EXTERN void *(*amd_calloc) (size_t, size_t) ; /* pointer to calloc */320EXTERN void *(*amd_calloc) (size_t, size_t) ; /* pointer to calloc */
322EXTERN int (*amd_printf) (const char *, ...) ; /* pointer to printf */321EXTERN int (*amd_printf) (const char *, ...) ; /* pointer to printf */
323322
324/* ------------------------------------------------------------------------- */323/* ------------------------------------------------------------------------- */
325/* AMD Control and Info arrays */324/* AMD Control and Info arrays */
@@ -337,41 +336,41 @@
337void amd_info (double Info [ ]) ;336void amd_info (double Info [ ]) ;
338void amd_l_info (double Info [ ]) ;337void amd_l_info (double Info [ ]) ;
339338
340#define AMD_CONTROL 5 /* size of Control array */339#define AMD_CONTROL 5 /* size of Control array */
341#define AMD_INFO 20 /* size of Info array */340#define AMD_INFO 20 /* size of Info array */
342341
343/* contents of Control */342/* contents of Control */
344#define AMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */343#define AMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */
345#define AMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */344#define AMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */
346345
347/* default Control settings */346/* default Control settings */
348#define AMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */347#define AMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */
349#define AMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */348#define AMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */
350349
351/* contents of Info */350/* contents of Info */
352#define AMD_STATUS 0 /* return value of amd_order and amd_l_order */351#define AMD_STATUS 0 /* return value of amd_order and amd_l_order */
353#define AMD_N 1 /* A is n-by-n */352#define AMD_N 1 /* A is n-by-n */
354#define AMD_NZ 2 /* number of nonzeros in A */ 353#define AMD_NZ 2 /* number of nonzeros in A */
355#define AMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */354#define AMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */
356#define AMD_NZDIAG 4 /* # of entries on diagonal */355#define AMD_NZDIAG 4 /* # of entries on diagonal */
357#define AMD_NZ_A_PLUS_AT 5 /* nz in A+A' */356#define AMD_NZ_A_PLUS_AT 5 /* nz in A+A' */
358#define AMD_NDENSE 6 /* number of "dense" rows/columns in A */357#define AMD_NDENSE 6 /* number of "dense" rows/columns in A */
359#define AMD_MEMORY 7 /* amount of memory used by AMD */358#define AMD_MEMORY 7 /* amount of memory used by AMD */
360#define AMD_NCMPA 8 /* number of garbage collections in AMD */359#define AMD_NCMPA 8 /* number of garbage collections in AMD */
361#define AMD_LNZ 9 /* approx. nz in L, excluding the diagonal */360#define AMD_LNZ 9 /* approx. nz in L, excluding the diagonal */
362#define AMD_NDIV 10 /* number of fl. point divides for LU and LDL' */361#define AMD_NDIV 10 /* number of fl. point divides for LU and LDL' */
363#define AMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */362#define AMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */
364#define AMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */363#define AMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */
365#define AMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */364#define AMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */
366365
367/* ------------------------------------------------------------------------- */366/* ------------------------------------------------------------------------- */
368/* return values of AMD */367/* return values of AMD */
369/* ------------------------------------------------------------------------- */368/* ------------------------------------------------------------------------- */
370369
371#define AMD_OK 0 /* success */370#define AMD_OK 0 /* success */
372#define AMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */371#define AMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */
373#define AMD_INVALID -2 /* input arguments are not valid */372#define AMD_INVALID -2 /* input arguments are not valid */
374#define AMD_OK_BUT_JUMBLED 1 /* input matrix is OK for amd_order, but373#define AMD_OK_BUT_JUMBLED 1 /* input matrix is OK for amd_order, but
375 * columns were not sorted, and/or duplicate entries were present. AMD had374 * columns were not sorted, and/or duplicate entries were present. AMD had
376 * to do extra work before ordering the matrix. This is a warning, not an375 * to do extra work before ordering the matrix. This is a warning, not an
377 * error. */376 * error. */
@@ -384,25 +383,25 @@
384 * As an example, to test if the version you are using is 1.2 or later:383 * As an example, to test if the version you are using is 1.2 or later:
385 *384 *
386 * #ifdef AMD_VERSION385 * #ifdef AMD_VERSION
387 * if (AMD_VERSION >= AMD_VERSION_CODE (1,2)) ...386 * if (AMD_VERSION >= AMD_VERSION_CODE (1,2)) ...
388 * #endif387 * #endif
389 *388 *
390 * This also works during compile-time:389 * This also works during compile-time:
391 *390 *
392 * #if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE (1,2))391 * #if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE (1,2))
393 * printf ("This is version 1.2 or later\n") ;392 * printf ("This is version 1.2 or later\n") ;
394 * #else393 * #else
395 * printf ("This is an early version\n") ;394 * printf ("This is an early version\n") ;
396 * #endif395 * #endif
397 *396 *
398 * Versions 1.1 and earlier of AMD do not include a #define'd version number.397 * Versions 1.1 and earlier of AMD do not include a #define'd version number.
399 */398 */
400399
401#define AMD_DATE "May 31, 2007"400#define AMD_DATE "Jun 20, 2012"
402#define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))401#define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
403#define AMD_MAIN_VERSION 2402#define AMD_MAIN_VERSION 2
404#define AMD_SUB_VERSION 2403#define AMD_SUB_VERSION 3
405#define AMD_SUBSUB_VERSION 0404#define AMD_SUBSUB_VERSION 1
406#define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION)405#define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION)
407406
408#ifdef __cplusplus407#ifdef __cplusplus
409408
=== modified file 'AMD/Include/amd_internal.h'
--- AMD/Include/amd_internal.h 2007-05-29 09:36:29 +0000
+++ AMD/Include/amd_internal.h 2013-12-08 03:08:50 +0000
@@ -3,10 +3,9 @@
3/* ========================================================================= */3/* ========================================================================= */
44
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* This file is for internal use in AMD itself, and does not normally need to11/* This file is for internal use in AMD itself, and does not normally need to
@@ -15,17 +14,17 @@
15 *14 *
16 * The following compile-time definitions affect how AMD is compiled.15 * The following compile-time definitions affect how AMD is compiled.
17 *16 *
18 * -DNPRINT17 * -DNPRINT
19 *18 *
20 * Disable all printing. stdio.h will not be included. Printing can19 * Disable all printing. stdio.h will not be included. Printing can
21 * be re-enabled at run-time by setting the global pointer amd_printf20 * be re-enabled at run-time by setting the global pointer amd_printf
22 * to printf (or mexPrintf for a MATLAB mexFunction).21 * to printf (or mexPrintf for a MATLAB mexFunction).
23 *22 *
24 * -DNMALLOC23 * -DNMALLOC
25 *24 *
26 * No memory manager is defined at compile-time. You MUST define the25 * No memory manager is defined at compile-time. You MUST define the
27 * function pointers amd_malloc, amd_free, amd_realloc, and26 * function pointers amd_malloc, amd_free, amd_realloc, and
28 * amd_calloc at run-time for AMD to work properly.27 * amd_calloc at run-time for AMD to work properly.
29 */28 */
3029
31/* ========================================================================= */30/* ========================================================================= */
@@ -154,21 +153,25 @@
154153
155/* largest value of size_t */154/* largest value of size_t */
156#ifndef SIZE_T_MAX155#ifndef SIZE_T_MAX
156#ifdef SIZE_MAX
157/* C99 only */
158#define SIZE_T_MAX SIZE_MAX
159#else
157#define SIZE_T_MAX ((size_t) (-1))160#define SIZE_T_MAX ((size_t) (-1))
158#endif161#endif
159162#endif
160/* ------------------------------------------------------------------------- */163
161/* integer type for AMD: int or UF_long */164/* ------------------------------------------------------------------------- */
162/* ------------------------------------------------------------------------- */165/* integer type for AMD: int or SuiteSparse_long */
163166/* ------------------------------------------------------------------------- */
164/* define UF_long */167
165#include "UFconfig.h"168#include "amd.h"
166169
167#if defined (DLONG) || defined (ZLONG)170#if defined (DLONG) || defined (ZLONG)
168171
169#define Int UF_long172#define Int SuiteSparse_long
170#define ID UF_long_id173#define ID SuiteSparse_long_id
171#define Int_MAX UF_long_max174#define Int_MAX SuiteSparse_long_max
172175
173#define AMD_order amd_l_order176#define AMD_order amd_l_order
174#define AMD_defaults amd_l_defaults177#define AMD_defaults amd_l_defaults
@@ -216,12 +219,6 @@
216#define PRINTF(params) { if (amd_printf != NULL) (void) amd_printf params ; }219#define PRINTF(params) { if (amd_printf != NULL) (void) amd_printf params ; }
217220
218/* ------------------------------------------------------------------------- */221/* ------------------------------------------------------------------------- */
219/* AMD routine definitions (user-callable) */
220/* ------------------------------------------------------------------------- */
221
222#include "amd.h"
223
224/* ------------------------------------------------------------------------- */
225/* AMD routine definitions (not user-callable) */222/* AMD routine definitions (not user-callable) */
226/* ------------------------------------------------------------------------- */223/* ------------------------------------------------------------------------- */
227224
228225
=== modified file 'AMD/Lib/GNUmakefile'
--- AMD/Lib/GNUmakefile 2007-05-29 09:36:29 +0000
+++ AMD/Lib/GNUmakefile 2013-12-08 03:08:50 +0000
@@ -2,11 +2,11 @@
2# AMD Makefile for compiling on Unix systems (for GNU make only)2# AMD Makefile for compiling on Unix systems (for GNU make only)
3#-------------------------------------------------------------------------------3#-------------------------------------------------------------------------------
44
5default: ../Lib/libamd.a5default: libamd.a
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9C = $(CC) $(CFLAGS) $(CONFIG) -I../Include -I../../UFconfig9C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1010
11#-------------------------------------------------------------------------------11#-------------------------------------------------------------------------------
12# source files12# source files
@@ -15,9 +15,9 @@
15AMD = amd_aat amd_1 amd_2 amd_dump amd_postorder amd_post_tree amd_defaults \15AMD = amd_aat amd_1 amd_2 amd_dump amd_postorder amd_post_tree amd_defaults \
16 amd_order amd_control amd_info amd_valid amd_preprocess16 amd_order amd_control amd_info amd_valid amd_preprocess
1717
18UFCONFIG = ../../UFconfig/UFconfig.h18CONFIG = ../../SuiteSparse_config/SuiteSparse_config.h
1919
20INC = ../Include/amd.h ../Include/amd_internal.h $(UFCONFIG)20INC = ../Include/amd.h ../Include/amd_internal.h $(CONFIG)
2121
22#-------------------------------------------------------------------------------22#-------------------------------------------------------------------------------
23# object files for each version23# object files for each version
@@ -43,15 +43,15 @@
43# Create the libamd.a library (C versions only)43# Create the libamd.a library (C versions only)
44#-------------------------------------------------------------------------------44#-------------------------------------------------------------------------------
4545
46../Lib/libamd.a: amd_global.o $(AMDI) $(AMDL)46libamd.a: amd_global.o $(AMDI) $(AMDL)
47 $(AR) ../Lib/libamd.a $^47 $(ARCHIVE) libamd.a $^
48 - $(RANLIB) ../Lib/libamd.a48 - $(RANLIB) libamd.a
4949
50#-------------------------------------------------------------------------------50#-------------------------------------------------------------------------------
51# compile the Fortran versions and the libamdf77.a library51# compile the Fortran versions and the libamdf77.a library
52#-------------------------------------------------------------------------------52#-------------------------------------------------------------------------------
5353
54fortran: ../Lib/libamdf77.a54fortran: libamdf77.a
5555
56AMDF77 = amd.o amdbar.o56AMDF77 = amd.o amdbar.o
5757
@@ -61,9 +61,9 @@
61amdbar.o: ../Source/amdbar.f61amdbar.o: ../Source/amdbar.f
62 $(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o62 $(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o
6363
64../Lib/libamdf77.a: $(AMDF77)64libamdf77.a: $(AMDF77)
65 $(AR) ../Lib/libamdf77.a $^65 $(ARCHIVE) libamdf77.a $^
66 - $(RANLIB) ../Lib/libamdf77.a66 - $(RANLIB) libamdf77.a
6767
68#-------------------------------------------------------------------------------68#-------------------------------------------------------------------------------
69# Remove all but the files in the original distribution69# Remove all but the files in the original distribution
@@ -75,4 +75,4 @@
75purge: distclean75purge: distclean
7676
77distclean: clean77distclean: clean
78 - $(RM) ../Lib/libamd.a ../Lib/libamdf77.a78 - $(RM) libamd.a libamdf77.a
7979
=== modified file 'AMD/Lib/Makefile'
--- AMD/Lib/Makefile 2007-05-29 09:36:29 +0000
+++ AMD/Lib/Makefile 2013-12-08 03:08:50 +0000
@@ -8,9 +8,9 @@
88
9default: everything9default: everything
1010
11include ../../UFconfig/UFconfig.mk11include ../../SuiteSparse_config/SuiteSparse_config.mk
1212
13C = $(CC) $(CFLAGS) $(CONFIG) -I../Include -I../../UFconfig13C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1414
15everything:15everything:
16 $(C) -DDINT -c ../Source/amd_aat.c -o amd_i_aat.o16 $(C) -DDINT -c ../Source/amd_aat.c -o amd_i_aat.o
@@ -26,7 +26,7 @@
26 $(C) -DDINT -c ../Source/amd_valid.c -o amd_i_valid.o26 $(C) -DDINT -c ../Source/amd_valid.c -o amd_i_valid.o
27 $(C) -DDINT -c ../Source/amd_preprocess.c -o amd_i_preprocess.o27 $(C) -DDINT -c ../Source/amd_preprocess.c -o amd_i_preprocess.o
28 $(C) -DDLONG -c ../Source/amd_aat.c -o amd_l_aat.o28 $(C) -DDLONG -c ../Source/amd_aat.c -o amd_l_aat.o
29 $(C) -DDLONG -c ../Source/amd_1.c -o ../Source/amd_l_1.o29 $(C) -DDLONG -c ../Source/amd_1.c -o amd_l_1.o
30 $(C) -DDLONG -c ../Source/amd_2.c -o amd_l_2.o30 $(C) -DDLONG -c ../Source/amd_2.c -o amd_l_2.o
31 $(C) -DDLONG -c ../Source/amd_dump.c -o amd_l_dump.o31 $(C) -DDLONG -c ../Source/amd_dump.c -o amd_l_dump.o
32 $(C) -DDLONG -c ../Source/amd_postorder.c -o amd_l_postorder.o32 $(C) -DDLONG -c ../Source/amd_postorder.c -o amd_l_postorder.o
@@ -38,7 +38,8 @@
38 $(C) -DDLONG -c ../Source/amd_valid.c -o amd_l_valid.o38 $(C) -DDLONG -c ../Source/amd_valid.c -o amd_l_valid.o
39 $(C) -DDLONG -c ../Source/amd_preprocess.c -o amd_l_preprocess.o39 $(C) -DDLONG -c ../Source/amd_preprocess.c -o amd_l_preprocess.o
40 $(C) -c ../Source/amd_global.c40 $(C) -c ../Source/amd_global.c
41 $(AR) ../Lib/libamd.a amd_i_aat.o amd_i_1.o amd_i_2.o amd_i_dump.o \41 $(ARCHIVE) ../Lib/libamd.a \
42 amd_i_aat.o amd_i_1.o amd_i_2.o amd_i_dump.o \
42 amd_i_postorder.o amd_i_post_tree.o amd_i_defaults.o amd_i_order.o \43 amd_i_postorder.o amd_i_post_tree.o amd_i_defaults.o amd_i_order.o \
43 amd_i_control.o amd_i_info.o amd_i_valid.o amd_l_aat.o amd_l_1.o \44 amd_i_control.o amd_i_info.o amd_i_valid.o amd_l_aat.o amd_l_1.o \
44 amd_l_2.o amd_l_dump.o amd_l_postorder.o amd_l_post_tree.o \45 amd_l_2.o amd_l_dump.o amd_l_postorder.o amd_l_post_tree.o \
@@ -53,7 +54,7 @@
53fortran:54fortran:
54 $(F77) $(F77FLAGS) -c ../Source/amd.f -o amd.o55 $(F77) $(F77FLAGS) -c ../Source/amd.f -o amd.o
55 $(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o56 $(F77) $(F77FLAGS) -c ../Source/amdbar.f -o amdbar.o
56 $(AR) ../Lib/libamdf77.a amd.o amdbar.o57 $(ARCHIVE) ../Lib/libamdf77.a amd.o amdbar.o
57 - $(RANLIB) ../Lib/libamdf77.a58 - $(RANLIB) ../Lib/libamdf77.a
5859
59#-------------------------------------------------------------------------------60#-------------------------------------------------------------------------------
6061
=== modified file 'AMD/MATLAB/Contents.m'
--- AMD/MATLAB/Contents.m 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/Contents.m 2013-12-08 03:08:50 +0000
@@ -13,7 +13,6 @@
13% Example:13% Example:
14% p = amd2 (A) ;14% p = amd2 (A) ;
1515
16% Copyright 1994-2007, Tim Davis, University of Florida,16% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, and Iain S. Duff.
17% Patrick R. Amestoy, and Iain S. Duff.
1817
19help Contents18help Contents
2019
=== removed file 'AMD/MATLAB/Makefile'
--- AMD/MATLAB/Makefile 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/Makefile 1970-01-01 00:00:00 +0000
@@ -1,34 +0,0 @@
1#------------------------------------------------------------------------------
2# Makefile for the AMD MATLAB mexFunction
3#------------------------------------------------------------------------------
4
5default: amd2
6
7include ../../UFconfig/UFconfig.mk
8
9AMD = ../Lib/libamd.a
10
11I = -I../Include -I../../UFconfig
12
13INC = ../Include/amd.h ../Include/amd_internal.h ../../UFconfig/UFconfig.h
14
15SRC = ../Source/amd_1.c ../Source/amd_2.c ../Source/amd_aat.c \
16 ../Source/amd_control.c ../Source/amd_defaults.c ../Source/amd_dump.c \
17 ../Source/amd_global.c ../Source/amd_info.c ../Source/amd_order.c \
18 ../Source/amd_postorder.c ../Source/amd_post_tree.c \
19 ../Source/amd_preprocess.c ../Source/amd_valid.c
20
21amd2: $(SRC) $(INC) amd_mex.c
22 $(MEX) -DDLONG $(I) -output amd2 amd_mex.c $(SRC)
23
24#------------------------------------------------------------------------------
25# Remove all but the files in the original distribution
26#------------------------------------------------------------------------------
27
28clean:
29 - $(RM) $(CLEAN)
30
31purge: distclean
32
33distclean: clean
34 - $(RM) amd2.mex*
350
=== modified file 'AMD/MATLAB/amd2.m'
--- AMD/MATLAB/amd2.m 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/amd2.m 2013-12-08 03:08:50 +0000
@@ -63,12 +63,8 @@
63%63%
64% See also AMD, COLMMD, COLAMD, COLPERM, SYMAMD, SYMMMD, SYMRCM.64% See also AMD, COLMMD, COLAMD, COLPERM, SYMAMD, SYMMMD, SYMRCM.
6565
66% --------------------------------------------------------------------------66% Copyright 1994-2012, Timothy A. Davis, http://www.suitesparse.com,
67% Copyright 1994-2007, Tim Davis, University of Florida
68% Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License.67% Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License.
69% email: davis at cise.ufl.edu CISE Department, Univ. of Florida.
70% web: http://www.cise.ufl.edu/research/sparse/amd
71% --------------------------------------------------------------------------
72%68%
73% Acknowledgements: This work was supported by the National Science69% Acknowledgements: This work was supported by the National Science
74% Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.70% Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.
7571
=== modified file 'AMD/MATLAB/amd_demo.m'
--- AMD/MATLAB/amd_demo.m 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/amd_demo.m 2013-12-08 03:08:50 +0000
@@ -8,8 +8,7 @@
8%8%
9% See also: amd, amd2, amd_make9% See also: amd, amd2, amd_make
1010
11% Copyright 1994-2007, Tim Davis, University of Florida,11% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, and Iain S. Duff.
12% Patrick R. Amestoy, and Iain S. Duff.
1312
14% This orders the same matrix as the ANSI C demo, amd_demo.c. It includes an13% This orders the same matrix as the ANSI C demo, amd_demo.c. It includes an
15% additional analysis of the matrix via MATLAB's symbfact routine.14% additional analysis of the matrix via MATLAB's symbfact routine.
@@ -24,9 +23,7 @@
2423
25n = size (A,1) ;24n = size (A,1) ;
2625
27figure (1)
28clf26clf
29hold off
30subplot (2,2,1) ;27subplot (2,2,1) ;
31spy (A)28spy (A)
32title ('HB/can24 matrix') ;29title ('HB/can24 matrix') ;
3330
=== modified file 'AMD/MATLAB/amd_install.m'
--- AMD/MATLAB/amd_install.m 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/amd_install.m 2013-12-08 03:08:50 +0000
@@ -7,8 +7,7 @@
7%7%
8% See also amd, amd2.8% See also amd, amd2.
99
10% Copyright 1994-2007, Tim Davis, University of Florida,10% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, and Iain S. Duff.
11% Patrick R. Amestoy, and Iain S. Duff.
1211
13% This orders the same matrix as the ANSI C demo, amd_demo.c. It includes an12% This orders the same matrix as the ANSI C demo, amd_demo.c. It includes an
1413
1514
=== modified file 'AMD/MATLAB/amd_make.m'
--- AMD/MATLAB/amd_make.m 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/amd_make.m 2013-12-08 03:08:50 +0000
@@ -6,8 +6,7 @@
6%6%
7% See also amd, amd2.7% See also amd, amd2.
88
9% Copyright 1994-2007, Tim Davis, University of Florida,9% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, and Iain S. Duff.
10% Patrick R. Amestoy, and Iain S. Duff.
1110
12details = 0 ; % 1 if details of each command are to be printed11details = 0 ; % 1 if details of each command are to be printed
1312
@@ -16,13 +15,13 @@
16 d = '-largeArrayDims' ;15 d = '-largeArrayDims' ;
17end16end
1817
19i = sprintf ('-I..%sInclude -I..%s..%sUFconfig', filesep, filesep, filesep) ;18i = sprintf ('-I../Include -I../../SuiteSparse_config') ;
20cmd = sprintf ('mex -O %s -DDLONG -output amd2 %s amd_mex.c', d, i) ;19cmd = sprintf ('mex -O %s -DDLONG -output amd2 %s amd_mex.c', d, i) ;
21files = {'amd_order', 'amd_dump', 'amd_postorder', 'amd_post_tree', ...20files = {'amd_order', 'amd_dump', 'amd_postorder', 'amd_post_tree', ...
22 'amd_aat', 'amd_2', 'amd_1', 'amd_defaults', 'amd_control', ...21 'amd_aat', 'amd_2', 'amd_1', 'amd_defaults', 'amd_control', ...
23 'amd_info', 'amd_valid', 'amd_global', 'amd_preprocess' } ;22 'amd_info', 'amd_valid', 'amd_global', 'amd_preprocess' } ;
24for i = 1 : length (files)23for i = 1 : length (files)
25 cmd = sprintf ('%s ..%sSource%s%s.c', cmd, filesep, filesep, files {i}) ;24 cmd = sprintf ('%s ../Source/%s.c', cmd, files {i}) ;
26end25end
27if (details)26if (details)
28 fprintf ('%s\n', cmd) ;27 fprintf ('%s\n', cmd) ;
2928
=== modified file 'AMD/MATLAB/amd_mex.c'
--- AMD/MATLAB/amd_mex.c 2007-05-29 09:36:29 +0000
+++ AMD/MATLAB/amd_mex.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/*11/*
@@ -30,7 +29,7 @@
30#include "amd.h"29#include "amd.h"
31#include "mex.h"30#include "mex.h"
32#include "matrix.h"31#include "matrix.h"
33#include "UFconfig.h"32#define Long SuiteSparse_long
3433
35void mexFunction34void mexFunction
36(35(
@@ -40,7 +39,7 @@
40 const mxArray *pargin [ ]39 const mxArray *pargin [ ]
41)40)
42{41{
43 UF_long i, m, n, *Ap, *Ai, *P, nc, result, spumoni, full ;42 Long i, m, n, *Ap, *Ai, *P, nc, result, spumoni, full ;
44 double *Pout, *InfoOut, Control [AMD_CONTROL], Info [AMD_INFO], *ControlIn ;43 double *Pout, *InfoOut, Control [AMD_CONTROL], Info [AMD_INFO], *ControlIn ;
45 mxArray *A ;44 mxArray *A ;
4645
@@ -113,7 +112,7 @@
113 /* allocate workspace for output permutation */112 /* allocate workspace for output permutation */
114 /* --------------------------------------------------------------------- */113 /* --------------------------------------------------------------------- */
115114
116 P = mxMalloc ((n+1) * sizeof (UF_long)) ;115 P = mxMalloc ((n+1) * sizeof (Long)) ;
117116
118 /* --------------------------------------------------------------------- */117 /* --------------------------------------------------------------------- */
119 /* if A is full, convert to a sparse matrix */118 /* if A is full, convert to a sparse matrix */
@@ -129,8 +128,8 @@
129 }128 }
130 mexCallMATLAB (1, &A, 1, (mxArray **) pargin, "sparse") ;129 mexCallMATLAB (1, &A, 1, (mxArray **) pargin, "sparse") ;
131 }130 }
132 Ap = (UF_long *) mxGetJc (A) ;131 Ap = (Long *) mxGetJc (A) ;
133 Ai = (UF_long *) mxGetIr (A) ;132 Ai = (Long *) mxGetIr (A) ;
134 if (spumoni > 0)133 if (spumoni > 0)
135 {134 {
136 mexPrintf (" input matrix A has %d nonzero entries\n", Ap [n]) ;135 mexPrintf (" input matrix A has %d nonzero entries\n", Ap [n]) ;
137136
=== modified file 'AMD/Makefile'
--- AMD/Makefile 2007-05-29 09:36:29 +0000
+++ AMD/Makefile 2013-12-08 03:08:50 +0000
@@ -2,24 +2,20 @@
2# AMD Makefile (for GNU Make or original make)2# AMD Makefile (for GNU Make or original make)
3#------------------------------------------------------------------------------3#------------------------------------------------------------------------------
44
5default: demo5VERSION = 2.3.1
66
7include ../UFconfig/UFconfig.mk7default: all
88
9# Compile all C code, including the C-callable routines.9include ../SuiteSparse_config/SuiteSparse_config.mk
10# Do not compile the FORTRAN versions, or MATLAB interface.10
11demo:11demos: all
12 ( cd Lib ; $(MAKE) )12
13 ( cd Demo ; $(MAKE) )13# Compile all C code. Do not compile the FORTRAN versions.
14
15# Compile all C code, including the C-callable routine and the mexFunctions.
16# Do not compile the FORTRAN versions.
17all:14all:
18 ( cd Lib ; $(MAKE) )15 ( cd Lib ; $(MAKE) )
19 ( cd Demo ; $(MAKE) )16 ( cd Demo ; $(MAKE) )
20 ( cd MATLAB ; $(MAKE) )
2117
22# compile just the C-callable libraries (not mexFunctions or Demos)18# compile just the C-callable libraries (not Demos)
23library:19library:
24 ( cd Lib ; $(MAKE) )20 ( cd Lib ; $(MAKE) )
2521
@@ -37,20 +33,20 @@
37clean:33clean:
38 ( cd Lib ; $(MAKE) clean )34 ( cd Lib ; $(MAKE) clean )
39 ( cd Demo ; $(MAKE) clean )35 ( cd Demo ; $(MAKE) clean )
40 ( cd MATLAB ; $(MAKE) clean )36 ( cd MATLAB ; $(RM) $(CLEAN) )
41 ( cd Doc ; $(MAKE) clean )37 ( cd Doc ; $(MAKE) clean )
4238
43# clean, and then remove compiled programs and library archives39# clean, and then remove compiled programs and library archives
44purge:40purge:
45 ( cd Lib ; $(MAKE) purge )41 ( cd Lib ; $(MAKE) purge )
46 ( cd Demo ; $(MAKE) purge )42 ( cd Demo ; $(MAKE) purge )
47 ( cd MATLAB ; $(MAKE) purge )43 ( cd MATLAB ; $(RM) $(CLEAN) ; $(RM) *.mex* )
48 ( cd Doc ; $(MAKE) purge )44 ( cd Doc ; $(MAKE) purge )
4945
50distclean: purge46distclean: purge
5147
52# create PDF documents for the original distribution48# create PDF documents for the original distribution
53doc:49docs:
54 ( cd Doc ; $(MAKE) )50 ( cd Doc ; $(MAKE) )
5551
56# get ready for distribution52# get ready for distribution
@@ -62,6 +58,16 @@
6258
63lib: library59lib: library
6460
65# compile the MATLAB mexFunction61# install AMD
66mex:62install:
67 ( cd MATLAB ; $(MAKE) )63 $(CP) Lib/libamd.a $(INSTALL_LIB)/libamd.$(VERSION).a
64 ( cd $(INSTALL_LIB) ; ln -sf libamd.$(VERSION).a libamd.a )
65 $(CP) Include/amd.h $(INSTALL_INCLUDE)
66 chmod 644 $(INSTALL_LIB)/libamd*
67 chmod 644 $(INSTALL_INCLUDE)/amd.h
68
69# uninstall AMD
70uninstall:
71 $(RM) $(INSTALL_LIB)/libamd*.a
72 $(RM) $(INSTALL_INCLUDE)/amd.h
73
6874
=== modified file 'AMD/README.txt'
--- AMD/README.txt 2007-05-29 09:36:29 +0000
+++ AMD/README.txt 2013-12-08 03:08:50 +0000
@@ -1,32 +1,30 @@
1AMD Version 2.2, Copyright (c) 2007 by Timothy A.1AMD, Copyright (c) 2009-2012 by Timothy A. Davis (http://www.suitesparse.com),
2Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.2Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. AMD is available
3AMD is available under alternate licences; contact T. Davis for details.3under alternate licences; contact T. Davis for details.
44
5AMD: a set of routines for permuting sparse matrices prior to5AMD: a set of routines for permuting sparse matrices prior to
6 factorization. Includes a version in C, a version in Fortran, and a MATLAB6 factorization. Includes a version in C, a version in Fortran, and a MATLAB
7 mexFunction.7 mexFunction.
88
9Requires UFconfig, in the ../UFconfig directory relative to this directory.9Requires SuiteSparse_config, in the ../SuiteSparse_config directory relative to
10this directory.
1011
11Quick start (Unix, or Windows with Cygwin):12Quick start (Unix, or Windows with Cygwin):
1213
13 To compile, test, and install AMD, you may wish to first configure the14 To compile, test, and install AMD, you may wish to first configure the
14 installation by editting the ../UFconfig/UFconfig.mk file. Next, cd to this15 installation by editting the ../SuiteSparse_config/SuiteSparse_config.mk
15 directory (AMD) and type "make" (or "make lib" if you do not have MATLAB).16 file. Next, cd to this directory (AMD) and type "make" (or "make lib" if
16 To compile and run a demo program for the Fortran version, type17 you do not have MATLAB). To compile and run a demo program for the Fortran
17 "make fortran". When done, type "make clean" to remove unused *.o files18 version, type "make fortran". When done, type "make clean" to remove
18 (keeps the compiled libraries and demo programs). See the User Guide19 unused *.o files (keeps the compiled libraries and demo programs). See the
19 (Doc/AMD_UserGuide.pdf), or ../UFconfig/UFconfig.mk for more details.20 User Guide (Doc/AMD_UserGuide.pdf), or
21 ../SuiteSparse_config/SuiteSparse_config.mk for more details.
2022
21Quick start (for MATLAB users);23Quick start (for MATLAB users);
2224
23 To compile, test, and install the AMD mexFunction, cd to the25 To compile, test, and install the AMD mexFunction, cd to the
24 AMD/MATLAB directory and type amd_make at the MATLAB prompt.26 AMD/MATLAB directory and type amd_make at the MATLAB prompt.
2527
26If you have MATLAB 7.2 or earlier and use "make mex", you must first edit
27UFconfig/UFconfig.h to remove the "-largeArrayDims" option from the MEX command
28(or just use amd_make.m inside MATLAB).
29
30-------------------------------------------------------------------------------28-------------------------------------------------------------------------------
3129
32AMD License:30AMD License:
@@ -61,7 +59,7 @@
6159
62Availability:60Availability:
6361
64 http://www.cise.ufl.edu/research/sparse/amd62 http://www.suitesparse.com
6563
66-------------------------------------------------------------------------------64-------------------------------------------------------------------------------
6765
@@ -78,7 +76,7 @@
7876
79Authors:77Authors:
8078
81 Timothy A. Davis (davis at cise.ufl.edu), University of Florida.79 Timothy A. Davis (DrTimothyAldenDavis@gmail.com)
82 Patrick R. Amestory, ENSEEIHT, Toulouse, France.80 Patrick R. Amestory, ENSEEIHT, Toulouse, France.
83 Iain S. Duff, Rutherford Appleton Laboratory, UK.81 Iain S. Duff, Rutherford Appleton Laboratory, UK.
8482
@@ -171,7 +169,7 @@
171 amd_demo2.c C demo program for AMD, jumbled matrix169 amd_demo2.c C demo program for AMD, jumbled matrix
172 amd_demo2.out output of amd_demo2.c170 amd_demo2.out output of amd_demo2.c
173171
174 amd_l_demo.c C demo program for AMD (UF_long version)172 amd_l_demo.c C demo program for AMD (long integer version)
175 amd_l_demo.out output of amd_l_demo.c173 amd_l_demo.out output of amd_l_demo.c
176174
177 amd_simple.c simple C demo program for AMD175 amd_simple.c simple C demo program for AMD
178176
=== modified file 'AMD/Source/amd_1.c'
--- AMD/Source/amd_1.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_1.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* AMD_1: Construct A+A' for a sparse matrix A and perform the AMD ordering.11/* AMD_1: Construct A+A' for a sparse matrix A and perform the AMD ordering.
1312
=== modified file 'AMD/Source/amd_2.c'
--- AMD/Source/amd_2.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_2.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* AMD_2: performs the AMD ordering on a symmetric sparse matrix A, followed11/* AMD_2: performs the AMD ordering on a symmetric sparse matrix A, followed
@@ -120,9 +119,9 @@
120 * ouput. Many of these functions are also provided by the Fortran119 * ouput. Many of these functions are also provided by the Fortran
121 * Harwell Subroutine Library routine MC47A.120 * Harwell Subroutine Library routine MC47A.
122 *121 *
123 * (6) both int and UF_long versions are provided. In the descriptions below122 * (6) both int and SuiteSparse_long versions are provided. In the
124 * and integer is and int or UF_long depending on which version is123 * descriptions below and integer is and int or SuiteSparse_long depending
125 * being used.124 * on which version is being used.
126125
127 **********************************************************************126 **********************************************************************
128 ***** CAUTION: ARGUMENTS ARE NOT CHECKED FOR ERRORS ON INPUT. ******127 ***** CAUTION: ARGUMENTS ARE NOT CHECKED FOR ERRORS ON INPUT. ******
@@ -495,8 +494,9 @@
495 * nvj: the number of variables in a supervariable j (= Nv [j])494 * nvj: the number of variables in a supervariable j (= Nv [j])
496 * nvpiv: number of pivots in current element495 * nvpiv: number of pivots in current element
497 * slenme: number of variables in variable list of pivotal variable496 * slenme: number of variables in variable list of pivotal variable
498 * wbig: = INT_MAX - n for the int version, UF_long_max - n for the497 * wbig: = (INT_MAX - n) for the int version, (SuiteSparse_long_max - n)
499 * UF_long version. wflg is not allowed to be >= wbig.498 * for the SuiteSparse_long version. wflg is not allowed to
499 * be >= wbig.
500 * we: W [e]500 * we: W [e]
501 * wflg: used for flagging the W array. See description of Iw.501 * wflg: used for flagging the W array. See description of Iw.
502 * wnvi: wflg - Nv [i]502 * wnvi: wflg - Nv [i]
503503
=== modified file 'AMD/Source/amd_aat.c'
--- AMD/Source/amd_aat.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_aat.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* AMD_aat: compute the symmetry of the pattern of A, and count the number of11/* AMD_aat: compute the symmetry of the pattern of A, and count the number of
1312
=== modified file 'AMD/Source/amd_control.c'
--- AMD/Source/amd_control.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_control.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Prints the control parameters for AMD. See amd.h11/* User-callable. Prints the control parameters for AMD. See amd.h
1312
=== modified file 'AMD/Source/amd_defaults.c'
--- AMD/Source/amd_defaults.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_defaults.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Sets default control parameters for AMD. See amd.h11/* User-callable. Sets default control parameters for AMD. See amd.h
1312
=== modified file 'AMD/Source/amd_dump.c'
--- AMD/Source/amd_dump.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_dump.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Debugging routines for AMD. Not used if NDEBUG is not defined at compile-11/* Debugging routines for AMD. Not used if NDEBUG is not defined at compile-
1312
=== modified file 'AMD/Source/amd_global.c'
--- AMD/Source/amd_global.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_global.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12#include <stdlib.h>11#include <stdlib.h>
1312
=== modified file 'AMD/Source/amd_info.c'
--- AMD/Source/amd_info.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_info.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Prints the output statistics for AMD. See amd.h11/* User-callable. Prints the output statistics for AMD. See amd.h
1312
=== modified file 'AMD/Source/amd_order.c'
--- AMD/Source/amd_order.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_order.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable AMD minimum degree ordering routine. See amd.h for11/* User-callable AMD minimum degree ordering routine. See amd.h for
1312
=== modified file 'AMD/Source/amd_post_tree.c'
--- AMD/Source/amd_post_tree.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_post_tree.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Post-ordering of a supernodal elimination tree. */11/* Post-ordering of a supernodal elimination tree. */
1312
=== modified file 'AMD/Source/amd_postorder.c'
--- AMD/Source/amd_postorder.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_postorder.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Perform a postordering (via depth-first search) of an assembly tree. */11/* Perform a postordering (via depth-first search) of an assembly tree. */
1312
=== modified file 'AMD/Source/amd_preprocess.c'
--- AMD/Source/amd_preprocess.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_preprocess.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Sorts, removes duplicate entries, and transposes from the nonzero pattern of11/* Sorts, removes duplicate entries, and transposes from the nonzero pattern of
1312
=== modified file 'AMD/Source/amd_valid.c'
--- AMD/Source/amd_valid.c 2007-05-29 09:36:29 +0000
+++ AMD/Source/amd_valid.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* AMD, Copyright (c) Timothy A. Davis, */6/* AMD, Copyright (c) Timothy A. Davis, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/amd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Check if a column-form matrix is valid or not. The matrix A is11/* Check if a column-form matrix is valid or not. The matrix A is
1312
=== modified file 'BTF/Doc/ChangeLog'
--- BTF/Doc/ChangeLog 2010-04-15 10:36:16 +0000
+++ BTF/Doc/ChangeLog 2013-12-08 03:08:50 +0000
@@ -1,3 +1,19 @@
1Jun 1, 2012: version 1.2.0
2
3 * changed from UFconfig to SuiteSparse_config
4
5Dec 7, 2011: version 1.1.3
6
7 * fixed the Makefile to better align with CFLAGS and other standards
8
9Jan 25, 2011: version 1.1.2
10
11 * minor fix to "make install"
12
13Nov 30, 2009: version 1.1.1
14
15 * added "make install" and "make uninstall"
16
1Mar 24, 2009: version 1.1.017Mar 24, 2009: version 1.1.0
218
3 * tabs expanded to 8 spaces; version number updated to stay in sync with KLU19 * tabs expanded to 8 spaces; version number updated to stay in sync with KLU
420
=== modified file 'BTF/Include/btf.h'
--- BTF/Include/btf.h 2010-04-15 10:36:16 +0000
+++ BTF/Include/btf.h 2013-12-08 03:08:50 +0000
@@ -7,7 +7,7 @@
7 * upper triangular form.7 * upper triangular form.
8 * BTF_ORDER: do both of the above (btf_maxtrans then btf_strongcomp).8 * BTF_ORDER: do both of the above (btf_maxtrans then btf_strongcomp).
9 *9 *
10 * Copyright (c) 2004-2007. Tim Davis, University of Florida,10 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
11 * with support from Sandia National Laboratories. All Rights Reserved.11 * with support from Sandia National Laboratories. All Rights Reserved.
12 */12 */
1313
@@ -93,7 +93,7 @@
93extern "C" {93extern "C" {
94#endif94#endif
9595
96#include "UFconfig.h"96#include "SuiteSparse_config.h"
9797
98int btf_maxtrans /* returns # of columns matched */98int btf_maxtrans /* returns # of columns matched */
99(99(
@@ -117,9 +117,10 @@
117 int Work [ ] /* size 5*ncol */117 int Work [ ] /* size 5*ncol */
118) ;118) ;
119119
120/* long integer version (all "int" parameters become "UF_long") */120/* long integer version (all "int" parameters become "SuiteSparse_long") */
121UF_long btf_l_maxtrans (UF_long, UF_long, UF_long *, UF_long *, double,121SuiteSparse_long btf_l_maxtrans (SuiteSparse_long, SuiteSparse_long,
122 double *, UF_long *, UF_long *) ;122 SuiteSparse_long *, SuiteSparse_long *, double, double *,
123 SuiteSparse_long *, SuiteSparse_long *) ;
123124
124125
125/* ========================================================================== */126/* ========================================================================== */
@@ -164,8 +165,9 @@
164 int Work [ ] /* size 4n */165 int Work [ ] /* size 4n */
165) ;166) ;
166167
167UF_long btf_l_strongcomp (UF_long, UF_long *, UF_long *, UF_long *, UF_long *,168SuiteSparse_long btf_l_strongcomp (SuiteSparse_long, SuiteSparse_long *,
168 UF_long *, UF_long *) ;169 SuiteSparse_long *, SuiteSparse_long *, SuiteSparse_long *,
170 SuiteSparse_long *, SuiteSparse_long *) ;
169171
170172
171/* ========================================================================== */173/* ========================================================================== */
@@ -211,8 +213,10 @@
211 int Work [ ] /* size 5n */213 int Work [ ] /* size 5n */
212) ;214) ;
213215
214UF_long btf_l_order (UF_long, UF_long *, UF_long *, double , double *,216SuiteSparse_long btf_l_order (SuiteSparse_long, SuiteSparse_long *,
215 UF_long *, UF_long *, UF_long *, UF_long *, UF_long *) ;217 SuiteSparse_long *, double , double *, SuiteSparse_long *,
218 SuiteSparse_long *, SuiteSparse_long *, SuiteSparse_long *,
219 SuiteSparse_long *) ;
216220
217221
218/* ========================================================================== */222/* ========================================================================== */
@@ -250,10 +254,10 @@
250 * #endif254 * #endif
251 */255 */
252256
253#define BTF_DATE "Mar 24, 2009"257#define BTF_DATE "Jun 1, 2012"
254#define BTF_VERSION_CODE(main,sub) ((main) * 1000 + (sub))258#define BTF_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
255#define BTF_MAIN_VERSION 1259#define BTF_MAIN_VERSION 1
256#define BTF_SUB_VERSION 1260#define BTF_SUB_VERSION 2
257#define BTF_SUBSUB_VERSION 0261#define BTF_SUBSUB_VERSION 0
258#define BTF_VERSION BTF_VERSION_CODE(BTF_MAIN_VERSION,BTF_SUB_VERSION)262#define BTF_VERSION BTF_VERSION_CODE(BTF_MAIN_VERSION,BTF_SUB_VERSION)
259263
260264
=== modified file 'BTF/Include/btf_internal.h'
--- BTF/Include/btf_internal.h 2007-05-29 09:36:29 +0000
+++ BTF/Include/btf_internal.h 2013-12-08 03:08:50 +0000
@@ -6,15 +6,15 @@
6#define _BTF_INTERNAL_H6#define _BTF_INTERNAL_H
77
8/*8/*
9 * Copyright (c) 2004-2007. Tim Davis, University of Florida,9 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
10 * with support from Sandia National Laboratories. All Rights Reserved.10 * with support from Sandia National Laboratories. All Rights Reserved.
11 */11 */
1212
13/* Not to be included in any user program. */13/* Not to be included in any user program. */
1414
15#ifdef DLONG15#ifdef DLONG
16#define Int UF_long16#define Int SuiteSparse_long
17#define Int_id UF_long_id17#define Int_id SuiteSparse_long_id
18#define BTF(name) btf_l_ ## name18#define BTF(name) btf_l_ ## name
19#else19#else
20#define Int int20#define Int int
2121
=== modified file 'BTF/Lib/Makefile'
--- BTF/Lib/Makefile 2007-05-29 09:36:29 +0000
+++ BTF/Lib/Makefile 2013-12-08 03:08:50 +0000
@@ -2,16 +2,16 @@
22
3ccode: all3ccode: all
44
5include ../../UFconfig/UFconfig.mk5include ../../SuiteSparse_config/SuiteSparse_config.mk
66
7# for testing only:7# for testing only:
8# TEST = -DTESTING8# TEST = -DTESTING
99
10C = $(CC) $(CFLAGS)10C = $(CC) $(CF)
1111
12INC = ../Include/btf.h ../Include/btf_internal.h12INC = ../Include/btf.h ../Include/btf_internal.h
1313
14I = -I../Include -I../../UFconfig14I = -I../Include -I../../SuiteSparse_config
1515
16all: library16all: library
1717
@@ -21,8 +21,8 @@
21 btf_l_order.o btf_l_maxtrans.o btf_l_strongcomp.o21 btf_l_order.o btf_l_maxtrans.o btf_l_strongcomp.o
2222
23libbtf.a: $(OBJ)23libbtf.a: $(OBJ)
24 $(AR) libbtf.a $(OBJ)24 $(ARCHIVE) libbtf.a $(OBJ)
25 $(RANLIB) libbtf.a25 - $(RANLIB) libbtf.a
2626
27$(OBJ): $(INC)27$(OBJ): $(INC)
2828
2929
=== modified file 'BTF/MATLAB/Contents.m'
--- BTF/MATLAB/Contents.m 2007-05-29 09:36:29 +0000
+++ BTF/MATLAB/Contents.m 2013-12-08 03:08:50 +0000
@@ -17,4 +17,4 @@
17% [p,q,r] = btf (A)17% [p,q,r] = btf (A)
18% [p,r] = strongcomp (A)18% [p,r] = strongcomp (A)
1919
20% Copyright 2004-2007, Tim Davis, University of Florida20% Copyright 2004-2007, University of Florida
2121
=== removed file 'BTF/MATLAB/Makefile'
--- BTF/MATLAB/Makefile 2007-05-29 09:36:29 +0000
+++ BTF/MATLAB/Makefile 1970-01-01 00:00:00 +0000
@@ -1,37 +0,0 @@
1
2include ../../UFconfig/UFconfig.mk
3
4I = -I../Include -I../../UFconfig
5
6MX = $(MEX) $(I) -DDLONG
7
8all: maxtrans.mexglx strongcomp.mexglx btf.mexglx
9
10recursive: strongcomp_recursive.mexglx
11
12maxtrans.mexglx: ../Source/btf_maxtrans.c ../Include/btf.h maxtrans.c \
13 ../Include/btf_internal.h
14 $(MX) maxtrans.c ../Source/btf_maxtrans.c
15
16strongcomp.mexglx: ../Source/btf_strongcomp.c ../Include/btf.h \
17 strongcomp.c ../Include/btf_internal.h
18 $(MX) strongcomp.c ../Source/btf_strongcomp.c
19
20strongcomp_recursive.mexglx: ../Source/btf_strongcomp.c ../Include/btf.h \
21 strongcomp.c ../Include/btf_internal.h
22 $(MX) -DRECURSIVE -output strongcomp_recursive \
23 ../Source/btf_strongcomp.c strongcomp.c
24
25btf.mexglx: ../Source/btf_strongcomp.c ../Include/btf.h btf.c \
26 ../Include/btf_internal.h \
27 ../Source/btf_maxtrans.c ../Source/btf_order.c
28 $(MX) btf.c ../Source/btf_maxtrans.c \
29 ../Source/btf_strongcomp.c ../Source/btf_order.c
30
31distclean: purge
32
33purge: clean
34 - $(RM) *.o *.mex*
35
36clean:
37 - $(RM) $(CLEAN)
380
=== modified file 'BTF/MATLAB/Test/btf_test.m'
--- BTF/MATLAB/Test/btf_test.m 2008-02-21 14:46:50 +0000
+++ BTF/MATLAB/Test/btf_test.m 2013-12-08 03:08:50 +0000
@@ -7,7 +7,7 @@
7% test1, test2, test3, test4, test5, test6.7% test1, test2, test3, test4, test5, test6.
88
9if (nargin < 1)9if (nargin < 1)
10 nmat = 800 ;10 nmat = 200 ;
11end11end
1212
13test1 (nmat) ;13test1 (nmat) ;
1414
=== modified file 'BTF/MATLAB/Test/checkbtf.m'
--- BTF/MATLAB/Test/checkbtf.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/Test/checkbtf.m 2013-12-08 03:08:50 +0000
@@ -9,7 +9,7 @@
9%9%
10% See also drawbtf, maxtrans, strongcomp.10% See also drawbtf, maxtrans, strongcomp.
1111
12% Copyright 2007, Timothy A. Davis, University of Florida12% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1313
14[m n] = size (A) ;14[m n] = size (A) ;
15if (m ~= n)15if (m ~= n)
1616
=== modified file 'BTF/MATLAB/Test/test1.m'
--- BTF/MATLAB/Test/test1.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/Test/test1.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, University of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11index = UFget ;11index = UFget ;
12% f = find (index.sprank < min (index.nrows, index.ncols)) ;12% f = find (index.sprank < min (index.nrows, index.ncols)) ;
@@ -29,9 +29,9 @@
29T0 = zeros (nmat,1) ;29T0 = zeros (nmat,1) ;
30T1 = zeros (nmat,1) ;30T1 = zeros (nmat,1) ;
31Anz = zeros (nmat,1) ;31Anz = zeros (nmat,1) ;
32figure (1) ;
33MN = zeros (nmat, 2) ;32MN = zeros (nmat, 2) ;
34Nzdiag = zeros (nmat,1) ;33Nzdiag = zeros (nmat,1) ;
34clf
3535
36% warmup36% warmup
37p = maxtrans (sparse (1)) ; %#ok37p = maxtrans (sparse (1)) ; %#ok
3838
=== modified file 'BTF/MATLAB/Test/test2.m'
--- BTF/MATLAB/Test/test2.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/Test/test2.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, University of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11index = UFget ;11index = UFget ;
12f = find (index.nrows == index.ncols) ;12f = find (index.nrows == index.ncols) ;
@@ -27,10 +27,9 @@
27T0 = zeros (nmat,1) ;27T0 = zeros (nmat,1) ;
28T1 = zeros (nmat,1) ;28T1 = zeros (nmat,1) ;
29Anz = zeros (nmat,1) ;29Anz = zeros (nmat,1) ;
30figure (1) ;
31clf
32MN = zeros (nmat, 2) ;30MN = zeros (nmat, 2) ;
33Nzdiag = zeros (nmat,1) ;31Nzdiag = zeros (nmat,1) ;
32clf
3433
35% warmup34% warmup
36p = maxtrans (sparse (1)) ; %#ok35p = maxtrans (sparse (1)) ; %#ok
3736
=== modified file 'BTF/MATLAB/Test/test3.m'
--- BTF/MATLAB/Test/test3.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/Test/test3.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, Univ. of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11doplot = 1 ;11doplot = 1 ;
12dopause = 0 ;12dopause = 0 ;
@@ -18,8 +18,6 @@
18f = f (i) ;18f = f (i) ;
19clear i19clear i
2020
21figure (1)
22
23% short test set: seg faults, lots of blocks, lots of work, and so on:21% short test set: seg faults, lots of blocks, lots of work, and so on:
24nasty = [22nasty = [
25 % --- various test matrices (no seg fault, quick run time)23 % --- various test matrices (no seg fault, quick run time)
@@ -279,7 +277,6 @@
279 singular = s1 < n ;277 singular = s1 < n ;
280278
281 if (doplot)279 if (doplot)
282 % figure (1)
283 clf280 clf
284 subplot (2,4,1)281 subplot (2,4,1)
285 spy (A)282 spy (A)
286283
=== modified file 'BTF/MATLAB/Test/test4.m'
--- BTF/MATLAB/Test/test4.m 2008-02-21 14:46:50 +0000
+++ BTF/MATLAB/Test/test4.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, University of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11index = UFget ;11index = UFget ;
12f = find (index.nrows == index.ncols) ;12f = find (index.nrows == index.ncols) ;
1313
=== modified file 'BTF/MATLAB/Test/test5.m'
--- BTF/MATLAB/Test/test5.m 2008-02-21 14:46:50 +0000
+++ BTF/MATLAB/Test/test5.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, University of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11index = UFget ;11index = UFget ;
1212
1313
=== modified file 'BTF/MATLAB/Test/test6.m'
--- BTF/MATLAB/Test/test6.m 2008-02-21 14:46:50 +0000
+++ BTF/MATLAB/Test/test6.m 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6% See also btf, maxtrans, strongcomp, dmperm, UFget,6% See also btf, maxtrans, strongcomp, dmperm, UFget,
7% test1, test2, test3, test4, test5.7% test1, test2, test3, test4, test5.
88
9% Copyright 2007, Timothy A. Davis, University of Florida9% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
1010
11quick2 = [ ...11quick2 = [ ...
12 1522 -272 1463 1521 460 1507 -838 1533 -1533 -1456 -1512 734 211 ...12 1522 -272 1463 1521 460 1507 -838 1533 -1533 -1456 -1512 734 211 ...
1313
=== modified file 'BTF/MATLAB/btf.c'
--- BTF/MATLAB/btf.c 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/btf.c 2013-12-08 03:08:50 +0000
@@ -33,7 +33,7 @@
33 * work performed, or -1 if the maximum work limit is reached (in which case33 * work performed, or -1 if the maximum work limit is reached (in which case
34 * the maximum matching might not have been found).34 * the maximum matching might not have been found).
35 *35 *
36 * Copyright (c) 2004-2007. Tim Davis, University of Florida,36 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
37 * with support from Sandia National Laboratories. All Rights Reserved.37 * with support from Sandia National Laboratories. All Rights Reserved.
38 *38 *
39 * See also maxtrans, strongcomp, dmperm39 * See also maxtrans, strongcomp, dmperm
@@ -43,6 +43,7 @@
4343
44#include "mex.h"44#include "mex.h"
45#include "btf.h"45#include "btf.h"
46#define Long SuiteSparse_long
4647
47void mexFunction48void mexFunction
48(49(
@@ -53,7 +54,7 @@
53)54)
54{55{
55 double work, maxwork ;56 double work, maxwork ;
56 UF_long b, n, k, *Ap, *Ai, *P, *R, nblocks, *Work, *Q, nmatch ;57 Long b, n, k, *Ap, *Ai, *P, *R, nblocks, *Work, *Q, nmatch ;
57 double *Px, *Rx, *Qx, *w ;58 double *Px, *Rx, *Qx, *w ;
5859
59 /* ---------------------------------------------------------------------- */60 /* ---------------------------------------------------------------------- */
@@ -71,16 +72,16 @@
71 }72 }
7273
73 /* get sparse matrix A */74 /* get sparse matrix A */
74 Ap = (UF_long *) mxGetJc (pargin [0]) ;75 Ap = (Long *) mxGetJc (pargin [0]) ;
75 Ai = (UF_long *) mxGetIr (pargin [0]) ;76 Ai = (Long *) mxGetIr (pargin [0]) ;
7677
77 /* get output arrays */78 /* get output arrays */
78 Q = mxMalloc (n * sizeof (UF_long)) ;79 Q = mxMalloc (n * sizeof (Long)) ;
79 P = mxMalloc (n * sizeof (UF_long)) ;80 P = mxMalloc (n * sizeof (Long)) ;
80 R = mxMalloc ((n+1) * sizeof (UF_long)) ;81 R = mxMalloc ((n+1) * sizeof (Long)) ;
8182
82 /* get workspace */83 /* get workspace */
83 Work = mxMalloc (5*n * sizeof (UF_long)) ;84 Work = mxMalloc (5*n * sizeof (Long)) ;
8485
85 maxwork = 0 ;86 maxwork = 0 ;
86 if (nargin > 1)87 if (nargin > 1)
8788
=== modified file 'BTF/MATLAB/btf.m'
--- BTF/MATLAB/btf.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/btf.m 2013-12-08 03:08:50 +0000
@@ -32,7 +32,7 @@
32%32%
33% See also maxtrans, strongcomp, dmperm, sprank33% See also maxtrans, strongcomp, dmperm, sprank
3434
35% Copyright 2004-2007, Tim Davis, University of Florida35% Copyright 2004-2007, University of Florida
36% with support from Sandia National Laboratories. All Rights Reserved.36% with support from Sandia National Laboratories. All Rights Reserved.
3737
38error ('btf mexFunction not found') ;38error ('btf mexFunction not found') ;
3939
=== modified file 'BTF/MATLAB/btf_demo.m'
--- BTF/MATLAB/btf_demo.m 2007-05-29 09:36:29 +0000
+++ BTF/MATLAB/btf_demo.m 2013-12-08 03:08:50 +0000
@@ -5,12 +5,11 @@
5%5%
6% See also btf, dmperm, strongcomp, maxtrans6% See also btf, dmperm, strongcomp, maxtrans
77
8% Copyright 2004-2007, Tim Davis, University of Florida8% Copyright 2004-2007, University of Florida
99
10load west0479 ;10load west0479 ;
11A = west0479 ;11A = west0479 ;
1212
13figure (1)
14clf13clf
1514
16subplot (2,3,1) ;15subplot (2,3,1) ;
1716
=== modified file 'BTF/MATLAB/btf_install.m'
--- BTF/MATLAB/btf_install.m 2007-05-29 09:36:29 +0000
+++ BTF/MATLAB/btf_install.m 2013-12-08 03:08:50 +0000
@@ -7,7 +7,7 @@
7%7%
8% See also btf, maxtrans, stroncomp, dmperm.8% See also btf, maxtrans, stroncomp, dmperm.
99
10% Copyright 2004-2007, Tim Davis, University of Florida10% Copyright 2004-2007, University of Florida
1111
12btf_make12btf_make
13addpath (pwd) ;13addpath (pwd) ;
1414
=== modified file 'BTF/MATLAB/btf_make.m'
--- BTF/MATLAB/btf_make.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/btf_make.m 2013-12-08 03:08:50 +0000
@@ -7,11 +7,11 @@
7%7%
8% See also btf, maxtrans, stroncomp, dmperm.8% See also btf, maxtrans, stroncomp, dmperm.
99
10% Copyright 2004-2007, Tim Davis, University of Florida10% Copyright 2004-2007, University of Florida
1111
12details = 0 ; % if 1, print details of each command12details = 0 ; % if 1, print details of each command
1313
14mexcmd = 'mex -O -DDLONG -I../Include -I../../UFconfig ' ;14mexcmd = 'mex -O -DDLONG -I../Include -I../../SuiteSparse_config ' ;
15if (~isempty (strfind (computer, '64')))15if (~isempty (strfind (computer, '64')))
16 mexcmd = [mexcmd '-largeArrayDims '] ;16 mexcmd = [mexcmd '-largeArrayDims '] ;
17end17end
1818
=== modified file 'BTF/MATLAB/drawbtf.m'
--- BTF/MATLAB/drawbtf.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/drawbtf.m 2013-12-08 03:08:50 +0000
@@ -9,7 +9,7 @@
9%9%
10% See also btf, maxtrans, strongcomp, dmperm.10% See also btf, maxtrans, strongcomp, dmperm.
1111
12% Copyright 2004-2007, Tim Davis, University of Florida12% Copyright 2004-2007, University of Florida
1313
14nblocks = length (r) - 1 ;14nblocks = length (r) - 1 ;
1515
1616
=== modified file 'BTF/MATLAB/maxtrans.c'
--- BTF/MATLAB/maxtrans.c 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/maxtrans.c 2013-12-08 03:08:50 +0000
@@ -19,7 +19,7 @@
19 * work performed, or -1 if the maximum work limit is reached (in which case19 * work performed, or -1 if the maximum work limit is reached (in which case
20 * the maximum matching might not have been found).20 * the maximum matching might not have been found).
21 *21 *
22 * Copyright (c) 2004-2007. Tim Davis, University of Florida,22 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
23 * with support from Sandia National Laboratories. All Rights Reserved.23 * with support from Sandia National Laboratories. All Rights Reserved.
24 */24 */
2525
@@ -27,6 +27,7 @@
2727
28#include "mex.h"28#include "mex.h"
29#include "btf.h"29#include "btf.h"
30#define Long SuiteSparse_long
3031
31void mexFunction32void mexFunction
32(33(
@@ -37,7 +38,7 @@
37)38)
38{39{
39 double maxwork, work ;40 double maxwork, work ;
40 UF_long nrow, ncol, i, *Ap, *Ai, *Match, nmatch, *Work ;41 Long nrow, ncol, i, *Ap, *Ai, *Match, nmatch, *Work ;
41 double *Matchx, *w ;42 double *Matchx, *w ;
4243
43 /* ---------------------------------------------------------------------- */44 /* ---------------------------------------------------------------------- */
@@ -56,14 +57,14 @@
56 }57 }
5758
58 /* get sparse matrix A */59 /* get sparse matrix A */
59 Ap = (UF_long *) mxGetJc (pargin [0]) ;60 Ap = (Long *) mxGetJc (pargin [0]) ;
60 Ai = (UF_long *) mxGetIr (pargin [0]) ;61 Ai = (Long *) mxGetIr (pargin [0]) ;
6162
62 /* get output array */63 /* get output array */
63 Match = mxMalloc (nrow * sizeof (UF_long)) ;64 Match = mxMalloc (nrow * sizeof (Long)) ;
6465
65 /* get workspace of size 5n (recursive version needs only 2n) */66 /* get workspace of size 5n (recursive version needs only 2n) */
66 Work = mxMalloc (5*ncol * sizeof (UF_long)) ;67 Work = mxMalloc (5*ncol * sizeof (Long)) ;
6768
68 maxwork = 0 ;69 maxwork = 0 ;
69 if (nargin > 1)70 if (nargin > 1)
7071
=== modified file 'BTF/MATLAB/maxtrans.m'
--- BTF/MATLAB/maxtrans.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/maxtrans.m 2013-12-08 03:08:50 +0000
@@ -25,6 +25,6 @@
25%25%
26% See also: btf, strongcomp, dmperm, sprank26% See also: btf, strongcomp, dmperm, sprank
2727
28% Copyright 2004-2007, Tim Davis, University of Florida28% Copyright 2004-2007, University of Florida
2929
30error ('maxtrans mexfunction not found') ;30error ('maxtrans mexfunction not found') ;
3131
=== modified file 'BTF/MATLAB/strongcomp.c'
--- BTF/MATLAB/strongcomp.c 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/strongcomp.c 2013-12-08 03:08:50 +0000
@@ -47,7 +47,7 @@
47 * diagonal that is above the main diagonal; btf always returns the matching as47 * diagonal that is above the main diagonal; btf always returns the matching as
48 * the main diagonal (which will thus contain zeros).48 * the main diagonal (which will thus contain zeros).
49 *49 *
50 * Copyright (c) 2004-2007. Tim Davis, University of Florida,50 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
51 * with support from Sandia National Laboratories. All Rights Reserved.51 * with support from Sandia National Laboratories. All Rights Reserved.
52 *52 *
53 * See also maxtrans, btf, dmperm53 * See also maxtrans, btf, dmperm
@@ -57,6 +57,7 @@
5757
58#include "mex.h"58#include "mex.h"
59#include "btf.h"59#include "btf.h"
60#define Long SuiteSparse_long
6061
61void mexFunction62void mexFunction
62(63(
@@ -66,7 +67,7 @@
66 const mxArray *pargin[]67 const mxArray *pargin[]
67)68)
68{69{
69 UF_long b, n, i, k, j, *Ap, *Ai, *P, *R, nblocks, *Work, *Q, jj ;70 Long b, n, i, k, j, *Ap, *Ai, *P, *R, nblocks, *Work, *Q, jj ;
70 double *Px, *Rx, *Qx ;71 double *Px, *Rx, *Qx ;
7172
72 /* ---------------------------------------------------------------------- */73 /* ---------------------------------------------------------------------- */
@@ -85,15 +86,15 @@
85 }86 }
8687
87 /* get sparse matrix A */88 /* get sparse matrix A */
88 Ap = (UF_long *) mxGetJc (pargin [0]) ;89 Ap = (Long *) mxGetJc (pargin [0]) ;
89 Ai = (UF_long *) mxGetIr (pargin [0]) ;90 Ai = (Long *) mxGetIr (pargin [0]) ;
9091
91 /* get output arrays */92 /* get output arrays */
92 P = mxMalloc (n * sizeof (UF_long)) ;93 P = mxMalloc (n * sizeof (Long)) ;
93 R = mxMalloc ((n+1) * sizeof (UF_long)) ;94 R = mxMalloc ((n+1) * sizeof (Long)) ;
9495
95 /* get workspace of size 4n (recursive code only needs 2n) */96 /* get workspace of size 4n (recursive code only needs 2n) */
96 Work = mxMalloc (4*n * sizeof (UF_long)) ;97 Work = mxMalloc (4*n * sizeof (Long)) ;
9798
98 /* get the input column permutation Q */99 /* get the input column permutation Q */
99 if (nargin == 2)100 if (nargin == 2)
@@ -104,7 +105,7 @@
104 ("strongcomp: qin must be a permutation vector of size n") ;105 ("strongcomp: qin must be a permutation vector of size n") ;
105 }106 }
106 Qx = mxGetPr (pargin [1]) ;107 Qx = mxGetPr (pargin [1]) ;
107 Q = mxMalloc (n * sizeof (UF_long)) ;108 Q = mxMalloc (n * sizeof (Long)) ;
108 /* connvert Qin to 0-based and check validity */109 /* connvert Qin to 0-based and check validity */
109 for (i = 0 ; i < n ; i++)110 for (i = 0 ; i < n ; i++)
110 {111 {
@@ -126,7 +127,7 @@
126 else127 else
127 {128 {
128 /* no input column permutation */129 /* no input column permutation */
129 Q = (UF_long *) NULL ;130 Q = (Long *) NULL ;
130 }131 }
131132
132 /* ---------------------------------------------------------------------- */133 /* ---------------------------------------------------------------------- */
133134
=== modified file 'BTF/MATLAB/strongcomp.m'
--- BTF/MATLAB/strongcomp.m 2010-04-15 10:36:16 +0000
+++ BTF/MATLAB/strongcomp.m 2013-12-08 03:08:50 +0000
@@ -40,6 +40,6 @@
40%40%
41% See also btf, maxtrans, dmperm41% See also btf, maxtrans, dmperm
4242
43% Copyright 2004-2007, Tim Davis, University of Florida43% Copyright 2004-2007, University of Florida
4444
45error ('strongcomp mexFunction not found') ;45error ('strongcomp mexFunction not found') ;
4646
=== modified file 'BTF/Makefile'
--- BTF/Makefile 2007-05-29 09:36:29 +0000
+++ BTF/Makefile 2013-12-08 03:08:50 +0000
@@ -1,18 +1,36 @@
1#------------------------------------------------------------------------------
2# BTF Makefile
3#------------------------------------------------------------------------------
4
5VERSION = 1.2.0
6
1default: library7default: library
28
3include ../UFconfig/UFconfig.mk9include ../SuiteSparse_config/SuiteSparse_config.mk
410
5library:11library:
6 ( cd Lib ; $(MAKE) )12 ( cd Lib ; $(MAKE) )
713
8clean:14clean:
9 ( cd Lib ; $(MAKE) clean )15 ( cd Lib ; $(MAKE) clean )
16 ( cd MATLAB ; $(RM) $(CLEAN) )
1017
11distclean:18distclean:
12 ( cd Lib ; $(MAKE) distclean )19 ( cd Lib ; $(MAKE) distclean )
13 ( cd MATLAB ; $(MAKE) distclean )20 ( cd MATLAB ; $(RM) $(CLEAN) ; $(RM) *.mex* )
14
15mex:
16 ( cd MATLAB ; $(MAKE) )
1721
18purge: distclean22purge: distclean
23
24# install BTF
25install:
26 $(CP) Lib/libbtf.a $(INSTALL_LIB)/libbtf.$(VERSION).a
27 ( cd $(INSTALL_LIB) ; ln -sf libbtf.$(VERSION).a libbtf.a )
28 $(CP) Include/btf.h $(INSTALL_INCLUDE)
29 chmod 644 $(INSTALL_LIB)/libbtf*.a
30 chmod 644 $(INSTALL_INCLUDE)/btf.h
31
32# uninstall BTF
33uninstall:
34 $(RM) $(INSTALL_LIB)/libbtf*.a
35 $(RM) $(INSTALL_INCLUDE)/btf.h
36
1937
=== modified file 'BTF/README.txt'
--- BTF/README.txt 2010-04-15 10:36:16 +0000
+++ BTF/README.txt 2013-12-08 03:08:50 +0000
@@ -1,7 +1,6 @@
1BTF Version 1.0, May 31, 2007, by Timothy A. Davis1BTF, by Timothy A. Davis, Copyright (C) 2004-2012, University of Florida
2Copyright (C) 2004-2007, University of Florida
3BTF is also available under other licenses; contact the author for details.2BTF is also available under other licenses; contact the author for details.
4http://www.cise.ufl.edu/research/sparse3http://www.suitesparse.com
54
6BTF is a software package for permuting a matrix into block upper triangular5BTF is a software package for permuting a matrix into block upper triangular
7form. It includes a maximum transversal algorithm, which finds a permutation6form. It includes a maximum transversal algorithm, which finds a permutation
@@ -11,8 +10,9 @@
11strongly connected components of a graph. These two methods together give the10strongly connected components of a graph. These two methods together give the
12permutation to block upper triangular form.11permutation to block upper triangular form.
1312
14Requires UFconfig, in the ../UFconfig directory relative to this directory.13Requires SuiteSparse_config, in the ../SuiteSparse_config directory relative to
15KLU relies on this package to permute14this directory. KLU relies on the BTF package to permute the matrix prior to
15factorization.
1616
17To compile the libbtf.a library, type "make". The compiled library is located17To compile the libbtf.a library, type "make". The compiled library is located
18in BTF/Lib/libbtf.a. Compile code that uses BTF with -IBTF/Include.18in BTF/Lib/libbtf.a. Compile code that uses BTF with -IBTF/Include.
1919
=== modified file 'BTF/Source/btf_maxtrans.c'
--- BTF/Source/btf_maxtrans.c 2010-04-15 10:36:16 +0000
+++ BTF/Source/btf_maxtrans.c 2013-12-08 03:08:50 +0000
@@ -41,7 +41,7 @@
41 * are typically structurally non-singular, maxtrans is preferred. A partial41 * are typically structurally non-singular, maxtrans is preferred. A partial
42 * maxtrans can still be very useful when solving a sparse linear system.42 * maxtrans can still be very useful when solving a sparse linear system.
43 *43 *
44 * Copyright (c) 2004-2007. Tim Davis, University of Florida,44 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
45 * with support from Sandia National Laboratories. All Rights Reserved.45 * with support from Sandia National Laboratories. All Rights Reserved.
46 */ 46 */
4747
4848
=== modified file 'BTF/Source/btf_order.c'
--- BTF/Source/btf_order.c 2010-04-15 10:36:16 +0000
+++ BTF/Source/btf_order.c 2013-12-08 03:08:50 +0000
@@ -22,7 +22,7 @@
22 *22 *
23 * See btf.h for more details.23 * See btf.h for more details.
24 *24 *
25 * Copyright (c) 2004-2007. Tim Davis, University of Florida,25 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
26 * with support from Sandia National Laboratories. All Rights Reserved.26 * with support from Sandia National Laboratories. All Rights Reserved.
27 */27 */
2828
2929
=== modified file 'BTF/Source/btf_strongcomp.c'
--- BTF/Source/btf_strongcomp.c 2010-04-15 10:36:16 +0000
+++ BTF/Source/btf_strongcomp.c 2013-12-08 03:08:50 +0000
@@ -6,7 +6,7 @@
6 * the matrix into upper block triangular form. See btf.h for more details.6 * the matrix into upper block triangular form. See btf.h for more details.
7 * Input matrix and Q are not checked on input.7 * Input matrix and Q are not checked on input.
8 *8 *
9 * Copyright (c) 2004-2007. Tim Davis, University of Florida,9 * By Tim Davis. Copyright (c) 2004-2007, University of Florida.
10 * with support from Sandia National Laboratories. All Rights Reserved.10 * with support from Sandia National Laboratories. All Rights Reserved.
11 */11 */
1212
1313
=== modified file 'CAMD/Demo/Makefile'
--- CAMD/Demo/Makefile 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/Makefile 2013-12-08 03:08:50 +0000
@@ -4,13 +4,11 @@
44
5default: camd_simple camd_demo camd_demo2 camd_l_demo5default: camd_simple camd_demo camd_demo2 camd_l_demo
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9C = $(CC) $(CFLAGS) $(CONFIG) -I../Include -I../../UFconfig9C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1010
11UFCONFIG = ../../UFconfig/UFconfig.h11INC = ../Include/camd.h ../../SuiteSparse_config/SuiteSparse_config.h
12
13INC = ../Include/camd.h $(UFCONFIG)
1412
15library:13library:
16 ( cd ../Lib ; $(MAKE) )14 ( cd ../Lib ; $(MAKE) )
@@ -55,3 +53,4 @@
55 - $(RM) camd_l_demo my_camd_l_demo.out53 - $(RM) camd_l_demo my_camd_l_demo.out
56 - $(RM) camd_demo2 my_camd_demo2.out54 - $(RM) camd_demo2 my_camd_demo2.out
57 - $(RM) camd_simple my_camd_simple.out55 - $(RM) camd_simple my_camd_simple.out
56 - $(RM) -r *.dSYM
5857
=== modified file 'CAMD/Demo/camd_demo.c'
--- CAMD/Demo/camd_demo.c 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_demo.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
1312
=== modified file 'CAMD/Demo/camd_demo.out'
--- CAMD/Demo/camd_demo.out 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_demo.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1CAMD version 2.2, date: May 31, 20071CAMD version 2.3, date: Jun 1, 2012
2CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:2CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:
33
4camd version 2.2, May 31, 2007: approximate minimum degree ordering:4camd version 2.3, Jun 1, 2012: approximate minimum degree ordering:
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
88
=== modified file 'CAMD/Demo/camd_demo2.c'
--- CAMD/Demo/camd_demo2.c 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_demo2.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
1312
=== modified file 'CAMD/Demo/camd_demo2.out'
--- CAMD/Demo/camd_demo2.out 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_demo2.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1CAMD demo, with a jumbled version of the 24-by-241CAMD demo, with a jumbled version of the 24-by-24
2Harwell/Boeing matrix, can_24:2Harwell/Boeing matrix, can_24:
33
4camd version 2.2, May 31, 2007: approximate minimum degree ordering:4camd version 2.3, Jun 1, 2012: approximate minimum degree ordering:
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
88
=== modified file 'CAMD/Demo/camd_l_demo.c'
--- CAMD/Demo/camd_l_demo.c 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_l_demo.c 2013-12-08 03:08:50 +0000
@@ -1,12 +1,11 @@
1/* ========================================================================= */1/* ========================================================================= */
2/* === CAMD demo main program (UF_long integer version) ==================== */2/* === CAMD demo main program (long integer version) ======================= */
3/* ========================================================================= */3/* ========================================================================= */
44
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* A simple C main program that illustrates the use of the ANSI C interface11/* A simple C main program that illustrates the use of the ANSI C interface
@@ -16,16 +15,14 @@
16#include "camd.h"15#include "camd.h"
17#include <stdio.h>16#include <stdio.h>
18#include <stdlib.h>17#include <stdlib.h>
1918#define Long SuiteSparse_long
20/* define UF_long */
21#include "UFconfig.h"
2219
23int main (void)20int main (void)
24{21{
25 /* The symmetric can_24 Harwell/Boeing matrix, including upper and lower22 /* The symmetric can_24 Harwell/Boeing matrix, including upper and lower
26 * triangular parts, and the diagonal entries. Note that this matrix is23 * triangular parts, and the diagonal entries. Note that this matrix is
27 * 0-based, with row and column indices in the range 0 to n-1. */24 * 0-based, with row and column indices in the range 0 to n-1. */
28 UF_long n = 24, nz,25 Long n = 24, nz,
29 Ap [ ] = { 0, 9, 15, 21, 27, 33, 39, 48, 57, 61, 70, 76, 82, 88, 94, 100,26 Ap [ ] = { 0, 9, 15, 21, 27, 33, 39, 48, 57, 61, 70, 76, 82, 88, 94, 100,
30 106, 110, 119, 128, 137, 143, 152, 156, 160 },27 106, 110, 119, 128, 137, 143, 152, 156, 160 },
31 Ai [ ] = {28 Ai [ ] = {
@@ -54,10 +51,10 @@
54 /* column 22: */ 2, 20, 21, 22,51 /* column 22: */ 2, 20, 21, 22,
55 /* column 23: */ 6, 11, 12, 23 } ;52 /* column 23: */ 6, 11, 12, 23 } ;
5653
57 UF_long P [24], Pinv [24], i, j, k, jnew, p, inew, result ;54 Long P [24], Pinv [24], i, j, k, jnew, p, inew, result ;
58 double Control [CAMD_CONTROL], Info [CAMD_INFO] ;55 double Control [CAMD_CONTROL], Info [CAMD_INFO] ;
59 char A [24][24] ;56 char A [24][24] ;
60 UF_long C [ ] = { 0, 0, 4, 0, 1, 0, 2, 2, 1, 1, 3, 4, 5, 5, 3, 4,57 Long C [ ] = { 0, 0, 4, 0, 1, 0, 2, 2, 1, 1, 3, 4, 5, 5, 3, 4,
61 5, 2, 5, 3, 4, 2, 1, 0 };58 5, 2, 5, 3, 4, 2, 1, 0 };
6259
63 printf ("CAMD version %d.%d, date: %s\n", CAMD_MAIN_VERSION,60 printf ("CAMD version %d.%d, date: %s\n", CAMD_MAIN_VERSION,
6461
=== modified file 'CAMD/Demo/camd_l_demo.out'
--- CAMD/Demo/camd_l_demo.out 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_l_demo.out 2013-12-08 03:08:50 +0000
@@ -1,7 +1,7 @@
1CAMD version 2.2, date: May 31, 20071CAMD version 2.3, date: Jun 1, 2012
2CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:2CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:
33
4camd version 2.2, May 31, 2007: approximate minimum degree ordering:4camd version 2.3, Jun 1, 2012: approximate minimum degree ordering:
5 dense row parameter: 105 dense row parameter: 10
6 (rows with more than max (10 * sqrt (n), 16) entries are6 (rows with more than max (10 * sqrt (n), 16) entries are
7 considered "dense", and placed last in output permutation)7 considered "dense", and placed last in output permutation)
88
=== modified file 'CAMD/Demo/camd_simple.c'
--- CAMD/Demo/camd_simple.c 2007-05-29 09:36:29 +0000
+++ CAMD/Demo/camd_simple.c 2013-12-08 03:08:50 +0000
@@ -1,8 +1,7 @@
1/* ------------------------------------------------------------------------- */1/* ------------------------------------------------------------------------- */
2/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */2/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
3/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */3/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
4/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */4/* email: DrTimothyAldenDavis@gmail.com */
5/* web: http://www.cise.ufl.edu/research/sparse/camd */
6/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
76
8#include <stdio.h>7#include <stdio.h>
98
=== modified file 'CAMD/Doc/CAMD_UserGuide.pdf'
10Binary files CAMD/Doc/CAMD_UserGuide.pdf 2007-05-29 09:36:29 +0000 and CAMD/Doc/CAMD_UserGuide.pdf 2013-12-08 03:08:50 +0000 differ9Binary files CAMD/Doc/CAMD_UserGuide.pdf 2007-05-29 09:36:29 +0000 and CAMD/Doc/CAMD_UserGuide.pdf 2013-12-08 03:08:50 +0000 differ
=== modified file 'CAMD/Doc/CAMD_UserGuide.tex'
--- CAMD/Doc/CAMD_UserGuide.tex 2007-05-29 09:36:29 +0000
+++ CAMD/Doc/CAMD_UserGuide.tex 2013-12-08 03:08:50 +0000
@@ -13,16 +13,14 @@
13\begin{document}13\begin{document}
14%------------------------------------------------------------------------------14%------------------------------------------------------------------------------
1515
16\title{CAMD Version 2.2 User Guide}16\title{CAMD User Guide}
17\author{Patrick R. Amestoy\thanks{ENSEEIHT-IRIT,17\author{Patrick R. Amestoy\thanks{ENSEEIHT-IRIT,
182 rue Camichel 31017 Toulouse, France.182 rue Camichel 31017 Toulouse, France.
19email: amestoy@enseeiht.fr. http://www.enseeiht.fr/$\sim$amestoy.}19email: amestoy@enseeiht.fr. http://www.enseeiht.fr/$\sim$amestoy.}
20\and Yanqing (Morris) Chen20\and Yanqing (Morris) Chen
21\and Timothy A. Davis\thanks{21\and Timothy A. Davis\thanks{
22Dept.~of Computer and Information Science and Engineering,22email: DrTimothyAldenDavis@gmail.com,
23Univ.~of Florida, Gainesville, FL, USA.23http://www.suitesparse.com.
24email: davis@cise.ufl.edu.
25http://www.cise.ufl.edu/$\sim$davis.
26This work was supported by the National24This work was supported by the National
27Science Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.25Science Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270.
28Portions of the work were done while on sabbatical at Stanford University26Portions of the work were done while on sabbatical at Stanford University
@@ -36,7 +34,7 @@
36This work was supported by the EPSRC under grant GR/R46441.34This work was supported by the EPSRC under grant GR/R46441.
37}}35}}
3836
39\date{May 31, 2007}37\date{VERSION 2.3.1, Jun 20, 2012}
40\maketitle38\maketitle
4139
42%------------------------------------------------------------------------------40%------------------------------------------------------------------------------
@@ -48,7 +46,7 @@
48\end{abstract}46\end{abstract}
49%------------------------------------------------------------------------------47%------------------------------------------------------------------------------
5048
51CAMD Version 2.2, Copyright\copyright 2007 by Timothy A. Davis,49CAMD Copyright\copyright 2011 by Timothy A. Davis,
52Yanqing (Morris) Chen,50Yanqing (Morris) Chen,
53Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.51Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.
54CAMD is available under alternate licences; contact T. Davis for details.52CAMD is available under alternate licences; contact T. Davis for details.
@@ -83,7 +81,7 @@
83 and a notice that the code was modified is included.81 and a notice that the code was modified is included.
8482
85{\bf Availability:}83{\bf Availability:}
86 http://www.cise.ufl.edu/research/sparse/camd84 http://www.suitesparse.com.
8785
88{\bf Acknowledgments:}86{\bf Acknowledgments:}
8987
@@ -183,7 +181,7 @@
183\section{Availability}181\section{Availability}
184%------------------------------------------------------------------------------182%------------------------------------------------------------------------------
185183
186CAMD is available at http://www.cise.ufl.edu/research/sparse.184CAMD is available at http://www.suitesparse.com.
187The Fortran version is available as the routine {\tt MC47} in HSL185The Fortran version is available as the routine {\tt MC47} in HSL
188(formerly the Harwell Subroutine Library) \cite{hsl:2002}. {\tt MC47} does186(formerly the Harwell Subroutine Library) \cite{hsl:2002}. {\tt MC47} does
189not include ordering constraints.187not include ordering constraints.
@@ -217,7 +215,7 @@
217uses several strategies, including a symmetric pivoting strategy, and215uses several strategies, including a symmetric pivoting strategy, and
218will give you better results if you want to factorize an unsymmetric matrix216will give you better results if you want to factorize an unsymmetric matrix
219of this type. Refer to the UMFPACK User Guide for more details, at217of this type. Refer to the UMFPACK User Guide for more details, at
220http://www.cise.ufl.edu/research/sparse/umfpack.218http://www.suitesparse.com.
221219
222The CAMD mexFunction is much faster than the built-in MATLAB symmetric minimum220The CAMD mexFunction is much faster than the built-in MATLAB symmetric minimum
223degree ordering methods, SYMAMD and SYMMMD. Its ordering quality is221degree ordering methods, SYMAMD and SYMMMD. Its ordering quality is
@@ -539,7 +537,8 @@
539The following discussion assumes you have the {\tt make} program, either in537The following discussion assumes you have the {\tt make} program, either in
540Unix, or in Windows with Cygwin.538Unix, or in Windows with Cygwin.
541539
542System-dependent configurations are in the {\tt ../UFconfig/UFconfig.mk}540System-dependent configurations are in the
541{\tt ../SuiteSparse\_config/SuiteSparse\_config.mk}
543file. You can edit that file to customize the compilation. The default542file. You can edit that file to customize the compilation. The default
544settings will work on most systems.543settings will work on most systems.
545Sample configuration files are provided544Sample configuration files are provided
@@ -556,7 +555,8 @@
556Typing {\tt make clean} will remove all but the final compiled libraries555Typing {\tt make clean} will remove all but the final compiled libraries
557and demo programs. Typing {\tt make purge} or {\tt make distclean}556and demo programs. Typing {\tt make purge} or {\tt make distclean}
558removes all files not in the original distribution.557removes all files not in the original distribution.
559If you compile CAMD and then later change the {\tt ../UFconfig/UFconfig.mk} file558If you compile CAMD and then later change the
559{\tt ../SuiteSparse\_config/SuiteSparse\_config.mk} file
560then you should type {\tt make purge} and then {\tt make} to recompile.560then you should type {\tt make purge} and then {\tt make} to recompile.
561561
562When you compile your program that uses the C-callable CAMD library,562When you compile your program that uses the C-callable CAMD library,
@@ -572,11 +572,6 @@
572This works on any system with MATLAB, including Windows.572This works on any system with MATLAB, including Windows.
573Alternately, type {\tt make} in the {\tt CAMD/MATLAB} directory.573Alternately, type {\tt make} in the {\tt CAMD/MATLAB} directory.
574574
575If you have MATLAB 7.2 or earlier, you must first edit UFconfig/UFconfig.h to
576remove the "-largeArrayDims" option from the MEX command, prior to
577{\tt make mex} or {\tt make} in the MATLAB directory
578(or just use {\tt camd\_make.m} inside MATLAB.
579
580If you are including CAMD as a subset of a larger library and do not want575If you are including CAMD as a subset of a larger library and do not want
581to link the C standard I/O library, or if you simply do not need to use576to link the C standard I/O library, or if you simply do not need to use
582them, you can safely remove the {\tt camd\_control.c} and {\tt camd\_info.c}577them, you can safely remove the {\tt camd\_control.c} and {\tt camd\_info.c}
@@ -616,427 +611,7 @@
616and gives details on their use.611and gives details on their use.
617612
618{\footnotesize613{\footnotesize
619\begin{verbatim}614\input{camd_h.tex}
620/* ========================================================================= */
621/* === CAMD: approximate minimum degree ordering ========================== */
622/* ========================================================================= */
623
624/* ------------------------------------------------------------------------- */
625/* CAMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, Yanqing Chen, */
626/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
627/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */
628/* web: http://www.cise.ufl.edu/research/sparse/camd */
629/* ------------------------------------------------------------------------- */
630
631/* CAMD finds a symmetric ordering P of a matrix A so that the Cholesky
632 * factorization of P*A*P' has fewer nonzeros and takes less work than the
633 * Cholesky factorization of A. If A is not symmetric, then it performs its
634 * ordering on the matrix A+A'. Two sets of user-callable routines are
635 * provided, one for int integers and the other for UF_long integers.
636 *
637 * The method is based on the approximate minimum degree algorithm, discussed
638 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",
639 * SIAM Journal of Matrix Analysis and Applications, vol. 17, no. 4, pp.
640 * 886-905, 1996.
641 */
642
643#ifndef CAMD_H
644#define CAMD_H
645
646/* make it easy for C++ programs to include CAMD */
647#ifdef __cplusplus
648extern "C" {
649#endif
650
651/* get the definition of size_t: */
652#include <stddef.h>
653
654/* define UF_long */
655#include "UFconfig.h"
656
657int camd_order /* returns CAMD_OK, CAMD_OK_BUT_JUMBLED,
658 * CAMD_INVALID, or CAMD_OUT_OF_MEMORY */
659(
660 int n, /* A is n-by-n. n must be >= 0. */
661 const int Ap [ ], /* column pointers for A, of size n+1 */
662 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */
663 int P [ ], /* output permutation, of size n */
664 double Control [ ], /* input Control settings, of size CAMD_CONTROL */
665 double Info [ ], /* output Info statistics, of size CAMD_INFO */
666 const int C [ ] /* Constraint set of A, of size n; can be NULL */
667) ;
668
669UF_long camd_l_order /* see above for description of arguments */
670(
671 UF_long n,
672 const UF_long Ap [ ],
673 const UF_long Ai [ ],
674 UF_long P [ ],
675 double Control [ ],
676 double Info [ ],
677 const UF_long C [ ]
678) ;
679
680/* Input arguments (not modified):
681 *
682 * n: the matrix A is n-by-n.
683 * Ap: an int/UF_long array of size n+1, containing column pointers of A.
684 * Ai: an int/UF_long array of size nz, containing the row indices of A,
685 * where nz = Ap [n].
686 * Control: a double array of size CAMD_CONTROL, containing control
687 * parameters. Defaults are used if Control is NULL.
688 *
689 * Output arguments (not defined on input):
690 *
691 * P: an int/UF_long array of size n, containing the output permutation. If
692 * row i is the kth pivot row, then P [k] = i. In MATLAB notation,
693 * the reordered matrix is A (P,P).
694 * Info: a double array of size CAMD_INFO, containing statistical
695 * information. Ignored if Info is NULL.
696 *
697 * On input, the matrix A is stored in column-oriented form. The row indices
698 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].
699 *
700 * If the row indices appear in ascending order in each column, and there
701 * are no duplicate entries, then camd_order is slightly more efficient in
702 * terms of time and memory usage. If this condition does not hold, a copy
703 * of the matrix is created (where these conditions do hold), and the copy is
704 * ordered.
705 *
706 * Row indices must be in the range 0 to
707 * n-1. Ap [0] must be zero, and thus nz = Ap [n] is the number of nonzeros
708 * in A. The array Ap is of size n+1, and the array Ai is of size nz = Ap [n].
709 * The matrix does not need to be symmetric, and the diagonal does not need to
710 * be present (if diagonal entries are present, they are ignored except for
711 * the output statistic Info [CAMD_NZDIAG]). The arrays Ai and Ap are not
712 * modified. This form of the Ap and Ai arrays to represent the nonzero
713 * pattern of the matrix A is the same as that used internally by MATLAB.
714 * If you wish to use a more flexible input structure, please see the
715 * umfpack_*_triplet_to_col routines in the UMFPACK package, at
716 * http://www.cise.ufl.edu/research/sparse/umfpack.
717 *
718 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the
719 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0
720 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these
721 * restrictions are not met, CAMD returns CAMD_INVALID.
722 *
723 * CAMD returns:
724 *
725 * CAMD_OK if the matrix is valid and sufficient memory can be allocated to
726 * perform the ordering.
727 *
728 * CAMD_OUT_OF_MEMORY if not enough memory can be allocated.
729 *
730 * CAMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is
731 * NULL.
732 *
733 * CAMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate
734 * entries, but was otherwise valid.
735 *
736 * The CAMD routine first forms the pattern of the matrix A+A', and then
737 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of
738 * the original is the kth pivotal row. In MATLAB notation, the permuted
739 * matrix is A (P,P), except that 0-based indexing is used instead of the
740 * 1-based indexing in MATLAB.
741 *
742 * The Control array is used to set various parameters for CAMD. If a NULL
743 * pointer is passed, default values are used. The Control array is not
744 * modified.
745 *
746 * Control [CAMD_DENSE]: controls the threshold for "dense" rows/columns.
747 * A dense row/column in A+A' can cause CAMD to spend a lot of time in
748 * ordering the matrix. If Control [CAMD_DENSE] >= 0, rows/columns
749 * with more than Control [CAMD_DENSE] * sqrt (n) entries are ignored
750 * during the ordering, and placed last in the output order. The
751 * default value of Control [CAMD_DENSE] is 10. If negative, no
752 * rows/columns are treated as "dense". Rows/columns with 16 or
753 * fewer off-diagonal entries are never considered "dense".
754 *
755 * Control [CAMD_AGGRESSIVE]: controls whether or not to use aggressive
756 * absorption, in which a prior element is absorbed into the current
757 * element if is a subset of the current element, even if it is not
758 * adjacent to the current pivot element (refer to Amestoy, Davis,
759 * & Duff, 1996, for more details). The default value is nonzero,
760 * which means to perform aggressive absorption. This nearly always
761 * leads to a better ordering (because the approximate degrees are
762 * more accurate) and a lower execution time. There are cases where
763 * it can lead to a slightly worse ordering, however. To turn it off,
764 * set Control [CAMD_AGGRESSIVE] to 0.
765 *
766 * Control [2..4] are not used in the current version, but may be used in
767 * future versions.
768 *
769 * The Info array provides statistics about the ordering on output. If it is
770 * not present, the statistics are not returned. This is not an error
771 * condition.
772 *
773 * Info [CAMD_STATUS]: the return value of CAMD, either CAMD_OK,
774 * CAMD_OK_BUT_JUMBLED, CAMD_OUT_OF_MEMORY, or CAMD_INVALID.
775 *
776 * Info [CAMD_N]: n, the size of the input matrix
777 *
778 * Info [CAMD_NZ]: the number of nonzeros in A, nz = Ap [n]
779 *
780 * Info [CAMD_SYMMETRY]: the symmetry of the matrix A. It is the number
781 * of "matched" off-diagonal entries divided by the total number of
782 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also
783 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,
784 * S = spones (A) ;
785 * B = tril (S, -1) + triu (S, 1) ;
786 * symmetry = nnz (B & B') / nnz (B) ;
787 *
788 * Info [CAMD_NZDIAG]: the number of entries on the diagonal of A.
789 *
790 * Info [CAMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the
791 * diagonal. If A is perfectly symmetric (Info [CAMD_SYMMETRY] = 1)
792 * with a fully nonzero diagonal, then Info [CAMD_NZ_A_PLUS_AT] = nz-n
793 * (the smallest possible value). If A is perfectly unsymmetric
794 * (Info [CAMD_SYMMETRY] = 0, for an upper triangular matrix, for
795 * example) with no diagonal, then Info [CAMD_NZ_A_PLUS_AT] = 2*nz
796 * (the largest possible value).
797 *
798 * Info [CAMD_NDENSE]: the number of "dense" rows/columns of A+A' that were
799 * removed from A prior to ordering. These are placed last in the
800 * output order P.
801 *
802 * Info [CAMD_MEMORY]: the amount of memory used by CAMD, in bytes. In the
803 * current version, this is 1.2 * Info [CAMD_NZ_A_PLUS_AT] + 9*n
804 * times the size of an integer. This is at most 2.4nz + 9n. This
805 * excludes the size of the input arguments Ai, Ap, and P, which have
806 * a total size of nz + 2*n + 1 integers.
807 *
808 * Info [CAMD_NCMPA]: the number of garbage collections performed.
809 *
810 * Info [CAMD_LNZ]: the number of nonzeros in L (excluding the diagonal).
811 * This is a slight upper bound because mass elimination is combined
812 * with the approximate degree update. It is a rough upper bound if
813 * there are many "dense" rows/columns. The rest of the statistics,
814 * below, are also slight or rough upper bounds, for the same reasons.
815 * The post-ordering of the assembly tree might also not exactly
816 * correspond to a true elimination tree postordering.
817 *
818 * Info [CAMD_NDIV]: the number of divide operations for a subsequent LDL'
819 * or LU factorization of the permuted matrix A (P,P).
820 *
821 * Info [CAMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a
822 * subsequent LDL' factorization of A (P,P).
823 *
824 * Info [CAMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a
825 * subsequent LU factorization of A (P,P), assuming that no numerical
826 * pivoting is required.
827 *
828 * Info [CAMD_DMAX]: the maximum number of nonzeros in any column of L,
829 * including the diagonal.
830 *
831 * Info [14..19] are not used in the current version, but may be used in
832 * future versions.
833 */
834
835/* ------------------------------------------------------------------------- */
836/* direct interface to CAMD */
837/* ------------------------------------------------------------------------- */
838
839/* camd_2 is the primary CAMD ordering routine. It is not meant to be
840 * user-callable because of its restrictive inputs and because it destroys
841 * the user's input matrix. It does not check its inputs for errors, either.
842 * However, if you can work with these restrictions it can be faster than
843 * camd_order and use less memory (assuming that you can create your own copy
844 * of the matrix for CAMD to destroy). Refer to CAMD/Source/camd_2.c for a
845 * description of each parameter. */
846
847void camd_2
848(
849 int n,
850 int Pe [ ],
851 int Iw [ ],
852 int Len [ ],
853 int iwlen,
854 int pfree,
855 int Nv [ ],
856 int Next [ ],
857 int Last [ ],
858 int Head [ ],
859 int Elen [ ],
860 int Degree [ ],
861 int W [ ],
862 double Control [ ],
863 double Info [ ],
864 const int C [ ],
865 int BucketSet [ ]
866) ;
867
868void camd_l2
869(
870 UF_long n,
871 UF_long Pe [ ],
872 UF_long Iw [ ],
873 UF_long Len [ ],
874 UF_long iwlen,
875 UF_long pfree,
876 UF_long Nv [ ],
877 UF_long Next [ ],
878 UF_long Last [ ],
879 UF_long Head [ ],
880 UF_long Elen [ ],
881 UF_long Degree [ ],
882 UF_long W [ ],
883 double Control [ ],
884 double Info [ ],
885 const UF_long C [ ],
886 UF_long BucketSet [ ]
887
888) ;
889
890/* ------------------------------------------------------------------------- */
891/* camd_valid */
892/* ------------------------------------------------------------------------- */
893
894/* Returns CAMD_OK or CAMD_OK_BUT_JUMBLED if the matrix is valid as input to
895 * camd_order; the latter is returned if the matrix has unsorted and/or
896 * duplicate row indices in one or more columns. Returns CAMD_INVALID if the
897 * matrix cannot be passed to camd_order. For camd_order, the matrix must also
898 * be square. The first two arguments are the number of rows and the number
899 * of columns of the matrix. For its use in CAMD, these must both equal n.
900 */
901
902int camd_valid
903(
904 int n_row, /* # of rows */
905 int n_col, /* # of columns */
906 const int Ap [ ], /* column pointers, of size n_col+1 */
907 const int Ai [ ] /* row indices, of size Ap [n_col] */
908) ;
909
910UF_long camd_l_valid
911(
912 UF_long n_row,
913 UF_long n_col,
914 const UF_long Ap [ ],
915 const UF_long Ai [ ]
916) ;
917
918/* ------------------------------------------------------------------------- */
919/* camd_cvalid */
920/* ------------------------------------------------------------------------- */
921
922/* Returns TRUE if the constraint set is valid as input to camd_order,
923 * FALSE otherwise. */
924
925int camd_cvalid
926(
927 int n,
928 const int C [ ]
929) ;
930
931UF_long camd_l_cvalid
932(
933 UF_long n,
934 const UF_long C [ ]
935) ;
936
937/* ------------------------------------------------------------------------- */
938/* CAMD memory manager and printf routines */
939/* ------------------------------------------------------------------------- */
940
941/* The user can redefine these to change the malloc, free, and printf routines
942 * that CAMD uses. */
943
944#ifndef EXTERN
945#define EXTERN extern
946#endif
947
948EXTERN void *(*camd_malloc) (size_t) ; /* pointer to malloc */
949EXTERN void (*camd_free) (void *) ; /* pointer to free */
950EXTERN void *(*camd_realloc) (void *, size_t) ; /* pointer to realloc */
951EXTERN void *(*camd_calloc) (size_t, size_t) ; /* pointer to calloc */
952EXTERN int (*camd_printf) (const char *, ...) ; /* pointer to printf */
953
954/* ------------------------------------------------------------------------- */
955/* CAMD Control and Info arrays */
956/* ------------------------------------------------------------------------- */
957
958/* camd_defaults: sets the default control settings */
959void camd_defaults (double Control [ ]) ;
960void camd_l_defaults (double Control [ ]) ;
961
962/* camd_control: prints the control settings */
963void camd_control (double Control [ ]) ;
964void camd_l_control (double Control [ ]) ;
965
966/* camd_info: prints the statistics */
967void camd_info (double Info [ ]) ;
968void camd_l_info (double Info [ ]) ;
969
970#define CAMD_CONTROL 5 /* size of Control array */
971#define CAMD_INFO 20 /* size of Info array */
972
973/* contents of Control */
974#define CAMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */
975#define CAMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */
976
977/* default Control settings */
978#define CAMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */
979#define CAMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */
980
981/* contents of Info */
982#define CAMD_STATUS 0 /* return value of camd_order and camd_l_order */
983#define CAMD_N 1 /* A is n-by-n */
984#define CAMD_NZ 2 /* number of nonzeros in A */
985#define CAMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */
986#define CAMD_NZDIAG 4 /* # of entries on diagonal */
987#define CAMD_NZ_A_PLUS_AT 5 /* nz in A+A' */
988#define CAMD_NDENSE 6 /* number of "dense" rows/columns in A */
989#define CAMD_MEMORY 7 /* amount of memory used by CAMD */
990#define CAMD_NCMPA 8 /* number of garbage collections in CAMD */
991#define CAMD_LNZ 9 /* approx. nz in L, excluding the diagonal */
992#define CAMD_NDIV 10 /* number of fl. point divides for LU and LDL' */
993#define CAMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */
994#define CAMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */
995#define CAMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */
996
997/* ------------------------------------------------------------------------- */
998/* return values of CAMD */
999/* ------------------------------------------------------------------------- */
1000
1001#define CAMD_OK 0 /* success */
1002#define CAMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */
1003#define CAMD_INVALID -2 /* input arguments are not valid */
1004#define CAMD_OK_BUT_JUMBLED 1 /* input matrix is OK for camd_order, but
1005 * columns were not sorted, and/or duplicate entries were present. CAMD had
1006 * to do extra work before ordering the matrix. This is a warning, not an
1007 * error. */
1008
1009/* ========================================================================== */
1010/* === CAMD version ========================================================= */
1011/* ========================================================================== */
1012
1013/*
1014 * As an example, to test if the version you are using is 1.2 or later:
1015 *
1016 * if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2)) ...
1017 *
1018 * This also works during compile-time:
1019 *
1020 * #if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2))
1021 * printf ("This is version 1.2 or later\n") ;
1022 * #else
1023 * printf ("This is an early version\n") ;
1024 * #endif
1025 */
1026
1027#define CAMD_DATE "May 31, 2007"
1028#define CAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
1029#define CAMD_MAIN_VERSION 2
1030#define CAMD_SUB_VERSION 2
1031#define CAMD_SUBSUB_VERSION 0
1032#define CAMD_VERSION CAMD_VERSION_CODE(CAMD_MAIN_VERSION,CAMD_SUB_VERSION)
1033
1034#ifdef __cplusplus
1035}
1036#endif
1037
1038#endif
1039\end{verbatim}
1040}615}
1041616
1042%------------------------------------------------------------------------------617%------------------------------------------------------------------------------
1043618
=== modified file 'CAMD/Doc/ChangeLog'
--- CAMD/Doc/ChangeLog 2007-05-29 09:36:29 +0000
+++ CAMD/Doc/ChangeLog 2013-12-08 03:08:50 +0000
@@ -1,3 +1,27 @@
1Jun 20, 2012: verison 2.3.1
2
3 * minor update for Windows (removed filesep)
4
5Jun 1, 2012: version 2.3.0
6
7 * changed from UFconfig to SuiteSparse_config
8
9May 15, 2011: version 2.2.4
10
11 * minor fix to SIZE_T_MAX definition (finicky compiler workaround)
12
13Dec 7, 2011: version 2.2.3
14
15 * fixed the Makefile to better align with CFLAGS and other standards
16
17Jan 25, 2011: version 2.2.2
18
19 * minor fix to "make install"
20
21Nov 30, 2009: version 2.2.1
22
23 * added "make install" and "make uninstall"
24
1May 31, 2007: version 2.2.025May 31, 2007: version 2.2.0
226
3 * port to 64-bit MATLAB27 * port to 64-bit MATLAB
428
=== modified file 'CAMD/Doc/License'
--- CAMD/Doc/License 2007-05-29 09:36:29 +0000
+++ CAMD/Doc/License 2013-12-08 03:08:50 +0000
@@ -35,6 +35,6 @@
3535
36Availability:36Availability:
3737
38 http://www.cise.ufl.edu/research/sparse/camd38 http://www.suitesparse.com
3939
40-------------------------------------------------------------------------------40-------------------------------------------------------------------------------
4141
=== modified file 'CAMD/Doc/Makefile'
--- CAMD/Doc/Makefile 2006-12-22 10:16:15 +0000
+++ CAMD/Doc/Makefile 2013-12-08 03:08:50 +0000
@@ -4,32 +4,36 @@
44
5default: dist5default: dist
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9#------------------------------------------------------------------------------9#------------------------------------------------------------------------------
10# Remove all but the files in the original distribution10# Remove all but the files in the original distribution
11#------------------------------------------------------------------------------11#------------------------------------------------------------------------------
1212
13clean:13clean:
14 - $(RM) $(CLEAN)14 - $(RM) -r $(CLEAN)
15 - $(RM) camd_temp15 - $(RM) camd_temp
1616
17purge: distclean17purge: distclean
1818
19distclean: clean19distclean: clean
20 - $(RM) *.aux *.bbl *.blg *.log *.toc20 - $(RM) *.aux *.bbl *.blg *.log *.toc
21 - $(RM) -r *.dSYM
2122
22#------------------------------------------------------------------------------23#------------------------------------------------------------------------------
23# Create the User Guide and Quick Start Guide24# Create the User Guide and Quick Start Guide
24#------------------------------------------------------------------------------25#------------------------------------------------------------------------------
2526
26CAMD_UserGuide.pdf: CAMD_UserGuide.tex CAMD_UserGuide.bib27CAMD_UserGuide.pdf: CAMD_UserGuide.tex CAMD_UserGuide.bib ../Include/camd.h
28 echo '\\begin{verbatim}' > camd_h.tex
29 expand -8 ../Include/camd.h >> camd_h.tex
30 echo '\end{verbatim}' >> camd_h.tex
27 pdflatex CAMD_UserGuide31 pdflatex CAMD_UserGuide
28 bibtex CAMD_UserGuide32 bibtex CAMD_UserGuide
29 pdflatex CAMD_UserGuide33 pdflatex CAMD_UserGuide
30 pdflatex CAMD_UserGuide34 pdflatex CAMD_UserGuide
3135
32dist: CAMD_UserGuide.pdf36dist: CAMD_UserGuide.pdf
33 - $(RM) *.aux *.bbl *.blg *.log *.toc37 - $(RM) *.aux *.bbl *.blg *.log *.toc camd_h.tex
34 - $(RM) camd_temp38 - $(RM) camd_temp
3539
3640
=== modified file 'CAMD/Include/camd.h'
--- CAMD/Include/camd.h 2007-05-29 09:36:29 +0000
+++ CAMD/Include/camd.h 2013-12-08 03:08:50 +0000
@@ -5,15 +5,14 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, Yanqing Chen, */6/* CAMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* CAMD finds a symmetric ordering P of a matrix A so that the Cholesky11/* CAMD finds a symmetric ordering P of a matrix A so that the Cholesky
13 * factorization of P*A*P' has fewer nonzeros and takes less work than the12 * factorization of P*A*P' has fewer nonzeros and takes less work than the
14 * Cholesky factorization of A. If A is not symmetric, then it performs its13 * Cholesky factorization of A. If A is not symmetric, then it performs its
15 * ordering on the matrix A+A'. Two sets of user-callable routines are14 * ordering on the matrix A+A'. Two sets of user-callable routines are
16 * provided, one for int integers and the other for UF_long integers.15 * provided, one for int integers and the other for SuiteSparse_long integers.
17 *16 *
18 * The method is based on the approximate minimum degree algorithm, discussed17 * The method is based on the approximate minimum degree algorithm, discussed
19 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",18 * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm",
@@ -32,48 +31,48 @@
32/* get the definition of size_t: */31/* get the definition of size_t: */
33#include <stddef.h>32#include <stddef.h>
3433
35/* define UF_long */34#include "SuiteSparse_config.h"
36#include "UFconfig.h"
3735
38int camd_order /* returns CAMD_OK, CAMD_OK_BUT_JUMBLED,36int camd_order /* returns CAMD_OK, CAMD_OK_BUT_JUMBLED,
39 * CAMD_INVALID, or CAMD_OUT_OF_MEMORY */37 * CAMD_INVALID, or CAMD_OUT_OF_MEMORY */
40(38(
41 int n, /* A is n-by-n. n must be >= 0. */39 int n, /* A is n-by-n. n must be >= 0. */
42 const int Ap [ ], /* column pointers for A, of size n+1 */40 const int Ap [ ], /* column pointers for A, of size n+1 */
43 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */41 const int Ai [ ], /* row indices of A, of size nz = Ap [n] */
44 int P [ ], /* output permutation, of size n */42 int P [ ], /* output permutation, of size n */
45 double Control [ ], /* input Control settings, of size CAMD_CONTROL */43 double Control [ ], /* input Control settings, of size CAMD_CONTROL */
46 double Info [ ], /* output Info statistics, of size CAMD_INFO */44 double Info [ ], /* output Info statistics, of size CAMD_INFO */
47 const int C [ ] /* Constraint set of A, of size n; can be NULL */45 const int C [ ] /* Constraint set of A, of size n; can be NULL */
48) ;46) ;
4947
50UF_long camd_l_order /* see above for description of arguments */48SuiteSparse_long camd_l_order /* see above for description of arguments */
51(49(
52 UF_long n,50 SuiteSparse_long n,
53 const UF_long Ap [ ],51 const SuiteSparse_long Ap [ ],
54 const UF_long Ai [ ],52 const SuiteSparse_long Ai [ ],
55 UF_long P [ ],53 SuiteSparse_long P [ ],
56 double Control [ ],54 double Control [ ],
57 double Info [ ],55 double Info [ ],
58 const UF_long C [ ]56 const SuiteSparse_long C [ ]
59) ;57) ;
6058
61/* Input arguments (not modified):59/* Input arguments (not modified):
62 *60 *
63 * n: the matrix A is n-by-n.61 * n: the matrix A is n-by-n.
64 * Ap: an int/UF_long array of size n+1, containing column pointers of A.62 * Ap: an int/SuiteSparse_long array of size n+1, containing column
65 * Ai: an int/UF_long array of size nz, containing the row indices of A,63 * pointers of A.
66 * where nz = Ap [n].64 * Ai: an int/SuiteSparse_long array of size nz, containing the row
67 * Control: a double array of size CAMD_CONTROL, containing control65 * indices of A, where nz = Ap [n].
68 * parameters. Defaults are used if Control is NULL.66 * Control: a double array of size CAMD_CONTROL, containing control
67 * parameters. Defaults are used if Control is NULL.
69 *68 *
70 * Output arguments (not defined on input):69 * Output arguments (not defined on input):
71 *70 *
72 * P: an int/UF_long array of size n, containing the output permutation. If71 * P: an int/SuiteSparse_long array of size n, containing the output
73 * row i is the kth pivot row, then P [k] = i. In MATLAB notation,72 * permutation. If row i is the kth pivot row, then P [k] = i. In
74 * the reordered matrix is A (P,P).73 * MATLAB notation, the reordered matrix is A (P,P).
75 * Info: a double array of size CAMD_INFO, containing statistical74 * Info: a double array of size CAMD_INFO, containing statistical
76 * information. Ignored if Info is NULL.75 * information. Ignored if Info is NULL.
77 *76 *
78 * On input, the matrix A is stored in column-oriented form. The row indices77 * On input, the matrix A is stored in column-oriented form. The row indices
79 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].78 * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1].
@@ -94,25 +93,25 @@
94 * pattern of the matrix A is the same as that used internally by MATLAB.93 * pattern of the matrix A is the same as that used internally by MATLAB.
95 * If you wish to use a more flexible input structure, please see the94 * If you wish to use a more flexible input structure, please see the
96 * umfpack_*_triplet_to_col routines in the UMFPACK package, at95 * umfpack_*_triplet_to_col routines in the UMFPACK package, at
97 * http://www.cise.ufl.edu/research/sparse/umfpack.96 * http://www.suitesparse.com.
98 *97 *
99 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the98 * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the
100 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 099 * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0
101 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these100 * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these
102 * restrictions are not met, CAMD returns CAMD_INVALID.101 * restrictions are not met, CAMD returns CAMD_INVALID.
103 *102 *
104 * CAMD returns:103 * CAMD returns:
105 *104 *
106 * CAMD_OK if the matrix is valid and sufficient memory can be allocated to105 * CAMD_OK if the matrix is valid and sufficient memory can be allocated to
107 * perform the ordering.106 * perform the ordering.
108 *107 *
109 * CAMD_OUT_OF_MEMORY if not enough memory can be allocated.108 * CAMD_OUT_OF_MEMORY if not enough memory can be allocated.
110 *109 *
111 * CAMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is110 * CAMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is
112 * NULL.111 * NULL.
113 *112 *
114 * CAMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate113 * CAMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate
115 * entries, but was otherwise valid.114 * entries, but was otherwise valid.
116 *115 *
117 * The CAMD routine first forms the pattern of the matrix A+A', and then116 * The CAMD routine first forms the pattern of the matrix A+A', and then
118 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of117 * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of
@@ -124,93 +123,93 @@
124 * pointer is passed, default values are used. The Control array is not123 * pointer is passed, default values are used. The Control array is not
125 * modified.124 * modified.
126 *125 *
127 * Control [CAMD_DENSE]: controls the threshold for "dense" rows/columns.126 * Control [CAMD_DENSE]: controls the threshold for "dense" rows/columns.
128 * A dense row/column in A+A' can cause CAMD to spend a lot of time in127 * A dense row/column in A+A' can cause CAMD to spend a lot of time in
129 * ordering the matrix. If Control [CAMD_DENSE] >= 0, rows/columns128 * ordering the matrix. If Control [CAMD_DENSE] >= 0, rows/columns
130 * with more than Control [CAMD_DENSE] * sqrt (n) entries are ignored129 * with more than Control [CAMD_DENSE] * sqrt (n) entries are ignored
131 * during the ordering, and placed last in the output order. The130 * during the ordering, and placed last in the output order. The
132 * default value of Control [CAMD_DENSE] is 10. If negative, no131 * default value of Control [CAMD_DENSE] is 10. If negative, no
133 * rows/columns are treated as "dense". Rows/columns with 16 or132 * rows/columns are treated as "dense". Rows/columns with 16 or
134 * fewer off-diagonal entries are never considered "dense".133 * fewer off-diagonal entries are never considered "dense".
135 *134 *
136 * Control [CAMD_AGGRESSIVE]: controls whether or not to use aggressive135 * Control [CAMD_AGGRESSIVE]: controls whether or not to use aggressive
137 * absorption, in which a prior element is absorbed into the current136 * absorption, in which a prior element is absorbed into the current
138 * element if is a subset of the current element, even if it is not137 * element if is a subset of the current element, even if it is not
139 * adjacent to the current pivot element (refer to Amestoy, Davis,138 * adjacent to the current pivot element (refer to Amestoy, Davis,
140 * & Duff, 1996, for more details). The default value is nonzero,139 * & Duff, 1996, for more details). The default value is nonzero,
141 * which means to perform aggressive absorption. This nearly always140 * which means to perform aggressive absorption. This nearly always
142 * leads to a better ordering (because the approximate degrees are141 * leads to a better ordering (because the approximate degrees are
143 * more accurate) and a lower execution time. There are cases where142 * more accurate) and a lower execution time. There are cases where
144 * it can lead to a slightly worse ordering, however. To turn it off,143 * it can lead to a slightly worse ordering, however. To turn it off,
145 * set Control [CAMD_AGGRESSIVE] to 0.144 * set Control [CAMD_AGGRESSIVE] to 0.
146 *145 *
147 * Control [2..4] are not used in the current version, but may be used in146 * Control [2..4] are not used in the current version, but may be used in
148 * future versions.147 * future versions.
149 *148 *
150 * The Info array provides statistics about the ordering on output. If it is149 * The Info array provides statistics about the ordering on output. If it is
151 * not present, the statistics are not returned. This is not an error150 * not present, the statistics are not returned. This is not an error
152 * condition.151 * condition.
153 * 152 *
154 * Info [CAMD_STATUS]: the return value of CAMD, either CAMD_OK,153 * Info [CAMD_STATUS]: the return value of CAMD, either CAMD_OK,
155 * CAMD_OK_BUT_JUMBLED, CAMD_OUT_OF_MEMORY, or CAMD_INVALID.154 * CAMD_OK_BUT_JUMBLED, CAMD_OUT_OF_MEMORY, or CAMD_INVALID.
156 *155 *
157 * Info [CAMD_N]: n, the size of the input matrix156 * Info [CAMD_N]: n, the size of the input matrix
158 *157 *
159 * Info [CAMD_NZ]: the number of nonzeros in A, nz = Ap [n]158 * Info [CAMD_NZ]: the number of nonzeros in A, nz = Ap [n]
160 *159 *
161 * Info [CAMD_SYMMETRY]: the symmetry of the matrix A. It is the number160 * Info [CAMD_SYMMETRY]: the symmetry of the matrix A. It is the number
162 * of "matched" off-diagonal entries divided by the total number of161 * of "matched" off-diagonal entries divided by the total number of
163 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also162 * off-diagonal entries. An entry A(i,j) is matched if A(j,i) is also
164 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,163 * an entry, for any pair (i,j) for which i != j. In MATLAB notation,
165 * S = spones (A) ;164 * S = spones (A) ;
166 * B = tril (S, -1) + triu (S, 1) ;165 * B = tril (S, -1) + triu (S, 1) ;
167 * symmetry = nnz (B & B') / nnz (B) ;166 * symmetry = nnz (B & B') / nnz (B) ;
168 *167 *
169 * Info [CAMD_NZDIAG]: the number of entries on the diagonal of A.168 * Info [CAMD_NZDIAG]: the number of entries on the diagonal of A.
170 *169 *
171 * Info [CAMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the170 * Info [CAMD_NZ_A_PLUS_AT]: the number of nonzeros in A+A', excluding the
172 * diagonal. If A is perfectly symmetric (Info [CAMD_SYMMETRY] = 1)171 * diagonal. If A is perfectly symmetric (Info [CAMD_SYMMETRY] = 1)
173 * with a fully nonzero diagonal, then Info [CAMD_NZ_A_PLUS_AT] = nz-n172 * with a fully nonzero diagonal, then Info [CAMD_NZ_A_PLUS_AT] = nz-n
174 * (the smallest possible value). If A is perfectly unsymmetric173 * (the smallest possible value). If A is perfectly unsymmetric
175 * (Info [CAMD_SYMMETRY] = 0, for an upper triangular matrix, for174 * (Info [CAMD_SYMMETRY] = 0, for an upper triangular matrix, for
176 * example) with no diagonal, then Info [CAMD_NZ_A_PLUS_AT] = 2*nz175 * example) with no diagonal, then Info [CAMD_NZ_A_PLUS_AT] = 2*nz
177 * (the largest possible value).176 * (the largest possible value).
178 *177 *
179 * Info [CAMD_NDENSE]: the number of "dense" rows/columns of A+A' that were178 * Info [CAMD_NDENSE]: the number of "dense" rows/columns of A+A' that were
180 * removed from A prior to ordering. These are placed last in the179 * removed from A prior to ordering. These are placed last in the
181 * output order P.180 * output order P.
182 *181 *
183 * Info [CAMD_MEMORY]: the amount of memory used by CAMD, in bytes. In the182 * Info [CAMD_MEMORY]: the amount of memory used by CAMD, in bytes. In the
184 * current version, this is 1.2 * Info [CAMD_NZ_A_PLUS_AT] + 9*n183 * current version, this is 1.2 * Info [CAMD_NZ_A_PLUS_AT] + 9*n
185 * times the size of an integer. This is at most 2.4nz + 9n. This184 * times the size of an integer. This is at most 2.4nz + 9n. This
186 * excludes the size of the input arguments Ai, Ap, and P, which have185 * excludes the size of the input arguments Ai, Ap, and P, which have
187 * a total size of nz + 2*n + 1 integers.186 * a total size of nz + 2*n + 1 integers.
188 *187 *
189 * Info [CAMD_NCMPA]: the number of garbage collections performed.188 * Info [CAMD_NCMPA]: the number of garbage collections performed.
190 *189 *
191 * Info [CAMD_LNZ]: the number of nonzeros in L (excluding the diagonal).190 * Info [CAMD_LNZ]: the number of nonzeros in L (excluding the diagonal).
192 * This is a slight upper bound because mass elimination is combined191 * This is a slight upper bound because mass elimination is combined
193 * with the approximate degree update. It is a rough upper bound if192 * with the approximate degree update. It is a rough upper bound if
194 * there are many "dense" rows/columns. The rest of the statistics,193 * there are many "dense" rows/columns. The rest of the statistics,
195 * below, are also slight or rough upper bounds, for the same reasons.194 * below, are also slight or rough upper bounds, for the same reasons.
196 * The post-ordering of the assembly tree might also not exactly195 * The post-ordering of the assembly tree might also not exactly
197 * correspond to a true elimination tree postordering.196 * correspond to a true elimination tree postordering.
198 *197 *
199 * Info [CAMD_NDIV]: the number of divide operations for a subsequent LDL'198 * Info [CAMD_NDIV]: the number of divide operations for a subsequent LDL'
200 * or LU factorization of the permuted matrix A (P,P).199 * or LU factorization of the permuted matrix A (P,P).
201 *200 *
202 * Info [CAMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a201 * Info [CAMD_NMULTSUBS_LDL]: the number of multiply-subtract pairs for a
203 * subsequent LDL' factorization of A (P,P).202 * subsequent LDL' factorization of A (P,P).
204 *203 *
205 * Info [CAMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a204 * Info [CAMD_NMULTSUBS_LU]: the number of multiply-subtract pairs for a
206 * subsequent LU factorization of A (P,P), assuming that no numerical205 * subsequent LU factorization of A (P,P), assuming that no numerical
207 * pivoting is required.206 * pivoting is required.
208 *207 *
209 * Info [CAMD_DMAX]: the maximum number of nonzeros in any column of L,208 * Info [CAMD_DMAX]: the maximum number of nonzeros in any column of L,
210 * including the diagonal.209 * including the diagonal.
211 *210 *
212 * Info [14..19] are not used in the current version, but may be used in211 * Info [14..19] are not used in the current version, but may be used in
213 * future versions.212 * future versions.
214 */ 213 */
215214
216/* ------------------------------------------------------------------------- */215/* ------------------------------------------------------------------------- */
@@ -248,23 +247,23 @@
248247
249void camd_l2248void camd_l2
250(249(
251 UF_long n,250 SuiteSparse_long n,
252 UF_long Pe [ ],251 SuiteSparse_long Pe [ ],
253 UF_long Iw [ ],252 SuiteSparse_long Iw [ ],
254 UF_long Len [ ],253 SuiteSparse_long Len [ ],
255 UF_long iwlen,254 SuiteSparse_long iwlen,
256 UF_long pfree,255 SuiteSparse_long pfree,
257 UF_long Nv [ ],256 SuiteSparse_long Nv [ ],
258 UF_long Next [ ], 257 SuiteSparse_long Next [ ],
259 UF_long Last [ ],258 SuiteSparse_long Last [ ],
260 UF_long Head [ ],259 SuiteSparse_long Head [ ],
261 UF_long Elen [ ],260 SuiteSparse_long Elen [ ],
262 UF_long Degree [ ],261 SuiteSparse_long Degree [ ],
263 UF_long W [ ],262 SuiteSparse_long W [ ],
264 double Control [ ],263 double Control [ ],
265 double Info [ ],264 double Info [ ],
266 const UF_long C [ ],265 const SuiteSparse_long C [ ],
267 UF_long BucketSet [ ]266 SuiteSparse_long BucketSet [ ]
268 267
269) ;268) ;
270269
@@ -282,18 +281,18 @@
282281
283int camd_valid282int camd_valid
284(283(
285 int n_row, /* # of rows */284 int n_row, /* # of rows */
286 int n_col, /* # of columns */285 int n_col, /* # of columns */
287 const int Ap [ ], /* column pointers, of size n_col+1 */286 const int Ap [ ], /* column pointers, of size n_col+1 */
288 const int Ai [ ] /* row indices, of size Ap [n_col] */287 const int Ai [ ] /* row indices, of size Ap [n_col] */
289) ;288) ;
290289
291UF_long camd_l_valid290SuiteSparse_long camd_l_valid
292(291(
293 UF_long n_row,292 SuiteSparse_long n_row,
294 UF_long n_col,293 SuiteSparse_long n_col,
295 const UF_long Ap [ ],294 const SuiteSparse_long Ap [ ],
296 const UF_long Ai [ ]295 const SuiteSparse_long Ai [ ]
297) ;296) ;
298297
299/* ------------------------------------------------------------------------- */298/* ------------------------------------------------------------------------- */
@@ -309,10 +308,10 @@
309 const int C [ ]308 const int C [ ]
310) ;309) ;
311310
312UF_long camd_l_cvalid311SuiteSparse_long camd_l_cvalid
313(312(
314 UF_long n,313 SuiteSparse_long n,
315 const UF_long C [ ]314 const SuiteSparse_long C [ ]
316) ;315) ;
317316
318/* ------------------------------------------------------------------------- */317/* ------------------------------------------------------------------------- */
@@ -326,11 +325,11 @@
326#define EXTERN extern325#define EXTERN extern
327#endif326#endif
328327
329EXTERN void *(*camd_malloc) (size_t) ; /* pointer to malloc */328EXTERN void *(*camd_malloc) (size_t) ; /* pointer to malloc */
330EXTERN void (*camd_free) (void *) ; /* pointer to free */329EXTERN void (*camd_free) (void *) ; /* pointer to free */
331EXTERN void *(*camd_realloc) (void *, size_t) ; /* pointer to realloc */330EXTERN void *(*camd_realloc) (void *, size_t) ; /* pointer to realloc */
332EXTERN void *(*camd_calloc) (size_t, size_t) ; /* pointer to calloc */331EXTERN void *(*camd_calloc) (size_t, size_t) ; /* pointer to calloc */
333EXTERN int (*camd_printf) (const char *, ...) ; /* pointer to printf */332EXTERN int (*camd_printf) (const char *, ...) ; /* pointer to printf */
334333
335/* ------------------------------------------------------------------------- */334/* ------------------------------------------------------------------------- */
336/* CAMD Control and Info arrays */335/* CAMD Control and Info arrays */
@@ -348,41 +347,41 @@
348void camd_info (double Info [ ]) ;347void camd_info (double Info [ ]) ;
349void camd_l_info (double Info [ ]) ;348void camd_l_info (double Info [ ]) ;
350349
351#define CAMD_CONTROL 5 /* size of Control array */350#define CAMD_CONTROL 5 /* size of Control array */
352#define CAMD_INFO 20 /* size of Info array */351#define CAMD_INFO 20 /* size of Info array */
353352
354/* contents of Control */353/* contents of Control */
355#define CAMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */354#define CAMD_DENSE 0 /* "dense" if degree > Control [0] * sqrt (n) */
356#define CAMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */355#define CAMD_AGGRESSIVE 1 /* do aggressive absorption if Control [1] != 0 */
357356
358/* default Control settings */357/* default Control settings */
359#define CAMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */358#define CAMD_DEFAULT_DENSE 10.0 /* default "dense" degree 10*sqrt(n) */
360#define CAMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */359#define CAMD_DEFAULT_AGGRESSIVE 1 /* do aggressive absorption by default */
361360
362/* contents of Info */361/* contents of Info */
363#define CAMD_STATUS 0 /* return value of camd_order and camd_l_order */362#define CAMD_STATUS 0 /* return value of camd_order and camd_l_order */
364#define CAMD_N 1 /* A is n-by-n */363#define CAMD_N 1 /* A is n-by-n */
365#define CAMD_NZ 2 /* number of nonzeros in A */ 364#define CAMD_NZ 2 /* number of nonzeros in A */
366#define CAMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */365#define CAMD_SYMMETRY 3 /* symmetry of pattern (1 is sym., 0 is unsym.) */
367#define CAMD_NZDIAG 4 /* # of entries on diagonal */366#define CAMD_NZDIAG 4 /* # of entries on diagonal */
368#define CAMD_NZ_A_PLUS_AT 5 /* nz in A+A' */367#define CAMD_NZ_A_PLUS_AT 5 /* nz in A+A' */
369#define CAMD_NDENSE 6 /* number of "dense" rows/columns in A */368#define CAMD_NDENSE 6 /* number of "dense" rows/columns in A */
370#define CAMD_MEMORY 7 /* amount of memory used by CAMD */369#define CAMD_MEMORY 7 /* amount of memory used by CAMD */
371#define CAMD_NCMPA 8 /* number of garbage collections in CAMD */370#define CAMD_NCMPA 8 /* number of garbage collections in CAMD */
372#define CAMD_LNZ 9 /* approx. nz in L, excluding the diagonal */371#define CAMD_LNZ 9 /* approx. nz in L, excluding the diagonal */
373#define CAMD_NDIV 10 /* number of fl. point divides for LU and LDL' */372#define CAMD_NDIV 10 /* number of fl. point divides for LU and LDL' */
374#define CAMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */373#define CAMD_NMULTSUBS_LDL 11 /* number of fl. point (*,-) pairs for LDL' */
375#define CAMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */374#define CAMD_NMULTSUBS_LU 12 /* number of fl. point (*,-) pairs for LU */
376#define CAMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */375#define CAMD_DMAX 13 /* max nz. in any column of L, incl. diagonal */
377376
378/* ------------------------------------------------------------------------- */377/* ------------------------------------------------------------------------- */
379/* return values of CAMD */378/* return values of CAMD */
380/* ------------------------------------------------------------------------- */379/* ------------------------------------------------------------------------- */
381380
382#define CAMD_OK 0 /* success */381#define CAMD_OK 0 /* success */
383#define CAMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */382#define CAMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */
384#define CAMD_INVALID -2 /* input arguments are not valid */383#define CAMD_INVALID -2 /* input arguments are not valid */
385#define CAMD_OK_BUT_JUMBLED 1 /* input matrix is OK for camd_order, but384#define CAMD_OK_BUT_JUMBLED 1 /* input matrix is OK for camd_order, but
386 * columns were not sorted, and/or duplicate entries were present. CAMD had385 * columns were not sorted, and/or duplicate entries were present. CAMD had
387 * to do extra work before ordering the matrix. This is a warning, not an386 * to do extra work before ordering the matrix. This is a warning, not an
388 * error. */387 * error. */
@@ -394,22 +393,22 @@
394/*393/*
395 * As an example, to test if the version you are using is 1.2 or later:394 * As an example, to test if the version you are using is 1.2 or later:
396 *395 *
397 * if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2)) ...396 * if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2)) ...
398 *397 *
399 * This also works during compile-time:398 * This also works during compile-time:
400 *399 *
401 * #if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2))400 * #if (CAMD_VERSION >= CAMD_VERSION_CODE (1,2))
402 * printf ("This is version 1.2 or later\n") ;401 * printf ("This is version 1.2 or later\n") ;
403 * #else402 * #else
404 * printf ("This is an early version\n") ;403 * printf ("This is an early version\n") ;
405 * #endif404 * #endif
406 */405 */
407406
408#define CAMD_DATE "May 31, 2007"407#define CAMD_DATE "Jun 20, 2012"
409#define CAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))408#define CAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
410#define CAMD_MAIN_VERSION 2409#define CAMD_MAIN_VERSION 2
411#define CAMD_SUB_VERSION 2410#define CAMD_SUB_VERSION 3
412#define CAMD_SUBSUB_VERSION 0411#define CAMD_SUBSUB_VERSION 1
413#define CAMD_VERSION CAMD_VERSION_CODE(CAMD_MAIN_VERSION,CAMD_SUB_VERSION)412#define CAMD_VERSION CAMD_VERSION_CODE(CAMD_MAIN_VERSION,CAMD_SUB_VERSION)
414413
415#ifdef __cplusplus414#ifdef __cplusplus
416415
=== modified file 'CAMD/Include/camd_internal.h'
--- CAMD/Include/camd_internal.h 2007-05-29 09:36:29 +0000
+++ CAMD/Include/camd_internal.h 2013-12-08 03:08:50 +0000
@@ -3,10 +3,9 @@
3/* ========================================================================= */3/* ========================================================================= */
44
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* This file is for internal use in CAMD itself, and does not normally need to11/* This file is for internal use in CAMD itself, and does not normally need to
@@ -15,17 +14,17 @@
15 *14 *
16 * The following compile-time definitions affect how CAMD is compiled.15 * The following compile-time definitions affect how CAMD is compiled.
17 *16 *
18 * -DNPRINT17 * -DNPRINT
19 *18 *
20 * Disable all printing. stdio.h will not be included. Printing can19 * Disable all printing. stdio.h will not be included. Printing can
21 * be re-enabled at run-time by setting the global pointer camd_printf20 * be re-enabled at run-time by setting the global pointer camd_printf
22 * to printf (or mexPrintf for a MATLAB mexFunction).21 * to printf (or mexPrintf for a MATLAB mexFunction).
23 *22 *
24 * -DNMALLOC23 * -DNMALLOC
25 *24 *
26 * No memory manager is defined at compile-time. You MUST define the25 * No memory manager is defined at compile-time. You MUST define the
27 * function pointers camd_malloc, camd_free, camd_realloc, and26 * function pointers camd_malloc, camd_free, camd_realloc, and
28 * camd_calloc at run-time for CAMD to work properly.27 * camd_calloc at run-time for CAMD to work properly.
29 */28 */
3029
31/* ========================================================================= */30/* ========================================================================= */
@@ -155,21 +154,25 @@
155154
156/* largest value of size_t */155/* largest value of size_t */
157#ifndef SIZE_T_MAX156#ifndef SIZE_T_MAX
157#ifdef SIZE_MAX
158/* C99 only */
159#define SIZE_T_MAX SIZE_MAX
160#else
158#define SIZE_T_MAX ((size_t) (-1))161#define SIZE_T_MAX ((size_t) (-1))
159#endif162#endif
160163#endif
161/* ------------------------------------------------------------------------- */164
162/* integer type for CAMD: int or UF_long */165/* ------------------------------------------------------------------------- */
163/* ------------------------------------------------------------------------- */166/* integer type for CAMD: int or SuiteSparse_long */
164167/* ------------------------------------------------------------------------- */
165/* define UF_long */168
166#include "UFconfig.h"169#include "camd.h"
167170
168#if defined (DLONG) || defined (ZLONG)171#if defined (DLONG) || defined (ZLONG)
169172
170#define Int UF_long173#define Int SuiteSparse_long
171#define ID UF_long_id174#define ID SuiteSparse_long_id
172#define Int_MAX UF_long_max175#define Int_MAX SuiteSparse_long_max
173176
174#define CAMD_order camd_l_order177#define CAMD_order camd_l_order
175#define CAMD_defaults camd_l_defaults178#define CAMD_defaults camd_l_defaults
@@ -219,12 +222,6 @@
219#define PRINTF(params) { if (camd_printf != NULL) (void) camd_printf params ; }222#define PRINTF(params) { if (camd_printf != NULL) (void) camd_printf params ; }
220223
221/* ------------------------------------------------------------------------- */224/* ------------------------------------------------------------------------- */
222/* CAMD routine definitions (user-callable) */
223/* ------------------------------------------------------------------------- */
224
225#include "camd.h"
226
227/* ------------------------------------------------------------------------- */
228/* CAMD routine definitions (not user-callable) */225/* CAMD routine definitions (not user-callable) */
229/* ------------------------------------------------------------------------- */226/* ------------------------------------------------------------------------- */
230227
231228
=== modified file 'CAMD/Lib/GNUmakefile'
--- CAMD/Lib/GNUmakefile 2007-05-29 09:36:29 +0000
+++ CAMD/Lib/GNUmakefile 2013-12-08 03:08:50 +0000
@@ -4,9 +4,9 @@
44
5default: libcamd.a5default: libcamd.a
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9C = $(CC) $(CFLAGS) $(CONFIG) -I../Include -I../../UFconfig9C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1010
11#-------------------------------------------------------------------------------11#-------------------------------------------------------------------------------
12# source files12# source files
@@ -15,9 +15,8 @@
15CAMD = camd_aat camd_1 camd_2 camd_dump camd_postorder camd_defaults \15CAMD = camd_aat camd_1 camd_2 camd_dump camd_postorder camd_defaults \
16 camd_order camd_control camd_info camd_valid camd_preprocess16 camd_order camd_control camd_info camd_valid camd_preprocess
1717
18UFCONFIG = ../../UFconfig/UFconfig.h18INC = ../Include/camd.h ../Include/camd_internal.h \
1919 ../../SuiteSparse_config/SuiteSparse_config.h
20INC = ../Include/camd.h ../Include/camd_internal.h $(UFCONFIG)
2120
22#-------------------------------------------------------------------------------21#-------------------------------------------------------------------------------
23# object files for each version22# object files for each version
@@ -44,7 +43,7 @@
44#-------------------------------------------------------------------------------43#-------------------------------------------------------------------------------
4544
46libcamd.a: camd_global.o $(CAMDI) $(CAMDL)45libcamd.a: camd_global.o $(CAMDI) $(CAMDL)
47 $(AR) libcamd.a $^46 $(ARCHIVE) libcamd.a $^
48 - $(RANLIB) libcamd.a47 - $(RANLIB) libcamd.a
4948
50#-------------------------------------------------------------------------------49#-------------------------------------------------------------------------------
5150
=== modified file 'CAMD/Lib/Makefile'
--- CAMD/Lib/Makefile 2007-05-29 09:36:29 +0000
+++ CAMD/Lib/Makefile 2013-12-08 03:08:50 +0000
@@ -8,9 +8,9 @@
88
9default: everything9default: everything
1010
11include ../../UFconfig/UFconfig.mk11include ../../SuiteSparse_config/SuiteSparse_config.mk
1212
13C = $(CC) $(CFLAGS) $(CONFIG) -I../Include -I../../UFconfig13C = $(CC) $(CF) -I../Include -I../../SuiteSparse_config
1414
15everything:15everything:
16 $(C) -DDINT -c ../Source/camd_aat.c -o camd_i_aat.o16 $(C) -DDINT -c ../Source/camd_aat.c -o camd_i_aat.o
@@ -36,7 +36,8 @@
36 $(C) -DDLONG -c ../Source/camd_valid.c -o camd_l_valid.o36 $(C) -DDLONG -c ../Source/camd_valid.c -o camd_l_valid.o
37 $(C) -DDLONG -c ../Source/camd_preprocess.c -o camd_l_preprocess.o37 $(C) -DDLONG -c ../Source/camd_preprocess.c -o camd_l_preprocess.o
38 $(C) -c ../Source/camd_global.c38 $(C) -c ../Source/camd_global.c
39 $(AR) libcamd.a camd_i_aat.o camd_i_1.o camd_i_2.o camd_i_dump.o \39 $(ARCHIVE) libcamd.a \
40 camd_i_aat.o camd_i_1.o camd_i_2.o camd_i_dump.o \
40 camd_i_postorder.o camd_i_defaults.o camd_i_order.o \41 camd_i_postorder.o camd_i_defaults.o camd_i_order.o \
41 camd_i_control.o camd_i_info.o camd_i_valid.o camd_l_aat.o \42 camd_i_control.o camd_i_info.o camd_i_valid.o camd_l_aat.o \
42 camd_l_1.o camd_l_2.o camd_l_dump.o camd_l_postorder.o \43 camd_l_1.o camd_l_2.o camd_l_dump.o camd_l_postorder.o \
4344
=== modified file 'CAMD/MATLAB/Contents.m'
--- CAMD/MATLAB/Contents.m 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/Contents.m 2013-12-08 03:08:50 +0000
@@ -9,7 +9,6 @@
9%9%
10% See also: camd, amd, colamd, symamd, colmmd, symmmd, umfpack10% See also: camd, amd, colamd, symamd, colmmd, symmmd, umfpack
1111
12% Copyright 1994-2007, Tim Davis, University of Florida,12% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, Iain S. Duff, and Y. Chen.
13% Patrick R. Amestoy, Iain S. Duff, and Yanqing Chen.
1413
15help Contents14help Contents
1615
=== removed file 'CAMD/MATLAB/Makefile'
--- CAMD/MATLAB/Makefile 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/Makefile 1970-01-01 00:00:00 +0000
@@ -1,34 +0,0 @@
1#------------------------------------------------------------------------------
2# Makefile for the CAMD MATLAB mexFunction
3#------------------------------------------------------------------------------
4
5default: camd
6
7include ../../UFconfig/UFconfig.mk
8
9CAMD = ../Lib/libcamd.a
10
11I = -I../Include -I../../UFconfig
12
13INC = ../Include/camd.h ../Include/camd_internal.h ../../UFconfig/UFconfig.h
14
15SRC = ../Source/camd_1.c ../Source/camd_2.c ../Source/camd_aat.c \
16 ../Source/camd_control.c ../Source/camd_defaults.c ../Source/camd_dump.c \
17 ../Source/camd_global.c ../Source/camd_info.c ../Source/camd_order.c \
18 ../Source/camd_postorder.c \
19 ../Source/camd_preprocess.c ../Source/camd_valid.c
20
21camd: $(SRC) $(INC) camd_mex.c
22 $(MEX) -DDLONG $(I) -output camd camd_mex.c $(SRC)
23
24#------------------------------------------------------------------------------
25# Remove all but the files in the original distribution
26#------------------------------------------------------------------------------
27
28clean:
29 - $(RM) $(CLEAN)
30
31purge: distclean
32
33distclean: clean
34 - $(RM) camd.mex*
350
=== modified file 'CAMD/MATLAB/camd.m'
--- CAMD/MATLAB/camd.m 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/camd.m 2013-12-08 03:08:50 +0000
@@ -68,8 +68,7 @@
68% See also AMD, COLMMD, COLAMD, COLPERM, SYMAMD, SYMMMD, SYMRCM.68% See also AMD, COLMMD, COLAMD, COLPERM, SYMAMD, SYMMMD, SYMRCM.
6969
7070
71% Copyright 1994-2007, Tim Davis, University of Florida,71% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, Iain S. Duff, and Y. Chen.
72% Patrick R. Amestoy, Iain S. Duff, and Yanqing Chen.
73%72%
74% Acknowledgements: This work was supported by the National Science73% Acknowledgements: This work was supported by the National Science
75% Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270,74% Foundation, under grants ASC-9111263, DMS-9223088, and CCR-0203270,
7675
=== modified file 'CAMD/MATLAB/camd_demo.m'
--- CAMD/MATLAB/camd_demo.m 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/camd_demo.m 2013-12-08 03:08:50 +0000
@@ -8,8 +8,7 @@
8%8%
9% See also: camd, camd_make9% See also: camd, camd_make
1010
11% Copyright 1994-2007, Tim Davis, University of Florida,11% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, Iain S. Duff, and Y. Chen.
12% Patrick R. Amestoy, Iain S. Duff, and Yanqing Chen.
1312
14% This orders the same matrix as the ANSI C demo, camd_demo.c. It includes an13% This orders the same matrix as the ANSI C demo, camd_demo.c. It includes an
15% additional analysis of the matrix via MATLAB's symbfact routine.14% additional analysis of the matrix via MATLAB's symbfact routine.
@@ -27,7 +26,6 @@
27rand ('state', 0) ;26rand ('state', 0) ;
28C = irand (6, n) ;27C = irand (6, n) ;
2928
30figure (1)
31clf29clf
32hold off30hold off
33subplot (2,2,1) ;31subplot (2,2,1) ;
3432
=== modified file 'CAMD/MATLAB/camd_make.m'
--- CAMD/MATLAB/camd_make.m 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/camd_make.m 2013-12-08 03:08:50 +0000
@@ -6,8 +6,7 @@
6%6%
7% See also camd.7% See also camd.
88
9% Copyright 1994-2007, Tim Davis, University of Florida,9% Copyright 1994-2007, Tim Davis, Patrick R. Amestoy, Iain S. Duff, and Y. Chen.
10% Patrick R. Amestoy, Iain S. Duff, and Yanqing Chen.
1110
12details = 0 ; % 1 if details of each command are to be printed11details = 0 ; % 1 if details of each command are to be printed
1312
@@ -16,13 +15,13 @@
16 d = '-largeArrayDims' ;15 d = '-largeArrayDims' ;
17end16end
1817
19i = sprintf ('-I..%sInclude -I..%s..%sUFconfig', filesep, filesep, filesep) ;18i = sprintf ('-I../Include -I../../SuiteSparse_config') ;
20cmd = sprintf ('mex -O %s -DDLONG -output camd %s camd_mex.c', d, i) ;19cmd = sprintf ('mex -O %s -DDLONG -output camd %s camd_mex.c', d, i) ;
21files = {'camd_order', 'camd_dump', 'camd_postorder', ...20files = {'camd_order', 'camd_dump', 'camd_postorder', ...
22 'camd_aat', 'camd_2', 'camd_1', 'camd_defaults', 'camd_control', ...21 'camd_aat', 'camd_2', 'camd_1', 'camd_defaults', 'camd_control', ...
23 'camd_info', 'camd_valid', 'camd_global', 'camd_preprocess' } ;22 'camd_info', 'camd_valid', 'camd_global', 'camd_preprocess' } ;
24for i = 1 : length (files)23for i = 1 : length (files)
25 cmd = sprintf ('%s ..%sSource%s%s.c', cmd, filesep, filesep, files {i}) ;24 cmd = sprintf ('%s ../Source/%s.c', cmd, files {i}) ;
26end25end
27if (details)26if (details)
28 fprintf ('%s\n', cmd) ;27 fprintf ('%s\n', cmd) ;
2928
=== modified file 'CAMD/MATLAB/camd_mex.c'
--- CAMD/MATLAB/camd_mex.c 2007-05-29 09:36:29 +0000
+++ CAMD/MATLAB/camd_mex.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/*11/*
@@ -30,7 +29,7 @@
30#include "camd.h"29#include "camd.h"
31#include "mex.h"30#include "mex.h"
32#include "matrix.h"31#include "matrix.h"
33#include "UFconfig.h"32#define Long SuiteSparse_long
3433
35void mexFunction34void mexFunction
36(35(
@@ -40,7 +39,7 @@
40 const mxArray *pargin [ ]39 const mxArray *pargin [ ]
41)40)
42{41{
43 UF_long i, m, n, *Ap, *Ai, *P, nc, result, spumoni, full, *C, Clen ;42 Long i, m, n, *Ap, *Ai, *P, nc, result, spumoni, full, *C, Clen ;
44 double *Pout, *InfoOut, Control [CAMD_CONTROL], Info [CAMD_INFO],43 double *Pout, *InfoOut, Control [CAMD_CONTROL], Info [CAMD_INFO],
45 *ControlIn, *Cin ;44 *ControlIn, *Cin ;
46 mxArray *A ;45 mxArray *A ;
@@ -103,11 +102,11 @@
103 Clen = mxGetNumberOfElements (pargin [2]) ;102 Clen = mxGetNumberOfElements (pargin [2]) ;
104 if (Clen != 0)103 if (Clen != 0)
105 {104 {
106 C = (UF_long *) mxCalloc (Clen, sizeof (UF_long)) ;105 C = (Long *) mxCalloc (Clen, sizeof (Long)) ;
107 for (i = 0 ; i < Clen ; i++)106 for (i = 0 ; i < Clen ; i++)
108 {107 {
109 /* convert c from 1-based to 0-based */108 /* convert c from 1-based to 0-based */
110 C [i] = (UF_long) Cin [i] - 1 ;109 C [i] = (Long) Cin [i] - 1 ;
111 }110 }
112 }111 }
113 }112 }
@@ -133,7 +132,7 @@
133 /* allocate workspace for output permutation */132 /* allocate workspace for output permutation */
134 /* --------------------------------------------------------------------- */133 /* --------------------------------------------------------------------- */
135134
136 P = mxMalloc ((n+1) * sizeof (UF_long)) ;135 P = mxMalloc ((n+1) * sizeof (Long)) ;
137136
138 /* --------------------------------------------------------------------- */137 /* --------------------------------------------------------------------- */
139 /* if A is full, convert to a sparse matrix */138 /* if A is full, convert to a sparse matrix */
@@ -149,8 +148,8 @@
149 }148 }
150 mexCallMATLAB (1, &A, 1, (mxArray **) pargin, "sparse") ;149 mexCallMATLAB (1, &A, 1, (mxArray **) pargin, "sparse") ;
151 }150 }
152 Ap = (UF_long *) mxGetJc (A) ;151 Ap = (Long *) mxGetJc (A) ;
153 Ai = (UF_long *) mxGetIr (A) ;152 Ai = (Long *) mxGetIr (A) ;
154 if (spumoni > 0)153 if (spumoni > 0)
155 {154 {
156 mexPrintf (" input matrix A has %d nonzero entries\n", Ap [n]) ;155 mexPrintf (" input matrix A has %d nonzero entries\n", Ap [n]) ;
157156
=== modified file 'CAMD/Makefile'
--- CAMD/Makefile 2007-05-29 09:36:29 +0000
+++ CAMD/Makefile 2013-12-08 03:08:50 +0000
@@ -1,25 +1,21 @@
1#------------------------------------------------------------------------------1#------------------------------------------------------------------------------
2# CAMD Makefile (for GNU Make or original make)2# CAMD Makefile
3#------------------------------------------------------------------------------3#------------------------------------------------------------------------------
44
5default: demo5VERSION = 2.3.1
66
7include ../UFconfig/UFconfig.mk7default: demos
88
9# Compile all C code, including the C-callable routine and the mexFunctions.9include ../SuiteSparse_config/SuiteSparse_config.mk
10# Do not compile the FORTRAN versions, or MATLAB interface.10
11demo:11demos: all
12 ( cd Lib ; $(MAKE) )12
13 ( cd Demo ; $(MAKE) )13# Compile all C code. Do not compile the FORTRAN versions.
14
15# Compile all C code, including the C-callable routine and the mexFunctions.
16# Do not compile the FORTRAN versions.
17all:14all:
18 ( cd Lib ; $(MAKE) )15 ( cd Lib ; $(MAKE) )
19 ( cd Demo ; $(MAKE) )16 ( cd Demo ; $(MAKE) )
20 ( cd MATLAB ; $(MAKE) )
2117
22# compile just the C-callable libraries (not mexFunctions or Demos)18# compile just the C-callable libraries (not Demos)
23library:19library:
24 ( cd Lib ; $(MAKE) )20 ( cd Lib ; $(MAKE) )
2521
@@ -27,20 +23,20 @@
27clean:23clean:
28 ( cd Lib ; $(MAKE) clean )24 ( cd Lib ; $(MAKE) clean )
29 ( cd Demo ; $(MAKE) clean )25 ( cd Demo ; $(MAKE) clean )
30 ( cd MATLAB ; $(MAKE) clean )26 ( cd MATLAB ; $(RM) $(CLEAN) )
31 ( cd Doc ; $(MAKE) clean )27 ( cd Doc ; $(MAKE) clean )
3228
33# clean, and then remove compiled programs and library archives29# clean, and then remove compiled programs and library archives
34purge:30purge:
35 ( cd Lib ; $(MAKE) purge )31 ( cd Lib ; $(MAKE) purge )
36 ( cd Demo ; $(MAKE) purge )32 ( cd Demo ; $(MAKE) purge )
37 ( cd MATLAB ; $(MAKE) purge )33 ( cd MATLAB ; $(RM) $(CLEAN) ; $(RM) *.mex* )
38 ( cd Doc ; $(MAKE) purge )34 ( cd Doc ; $(MAKE) purge )
3935
40distclean: purge36distclean: purge
4137
42# create PDF documents for the original distribution38# create PDF documents for the original distribution
43doc:39docs:
44 ( cd Doc ; $(MAKE) )40 ( cd Doc ; $(MAKE) )
4541
46# get ready for distribution42# get ready for distribution
@@ -52,6 +48,16 @@
5248
53lib: library49lib: library
5450
55# compile the MATLAB mexFunction51# install CAMD
56mex:52install:
57 ( cd MATLAB ; $(MAKE) )53 $(CP) Lib/libcamd.a $(INSTALL_LIB)/libcamd.$(VERSION).a
54 ( cd $(INSTALL_LIB) ; ln -sf libcamd.$(VERSION).a libcamd.a )
55 $(CP) Include/camd.h $(INSTALL_INCLUDE)
56 chmod 644 $(INSTALL_LIB)/libcamd*.a
57 chmod 644 $(INSTALL_INCLUDE)/camd.h
58
59# uninstall CAMD
60uninstall:
61 $(RM) $(INSTALL_LIB)/libcamd*.a
62 $(RM) $(INSTALL_INCLUDE)/camd.h
63
5864
=== modified file 'CAMD/README.txt'
--- CAMD/README.txt 2007-05-29 09:36:29 +0000
+++ CAMD/README.txt 2013-12-08 03:08:50 +0000
@@ -1,31 +1,30 @@
1CAMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, Yanqing Chen,1CAMD, Copyright (c) 2007-2012, University of Florida.
2Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved.2Written by Timothy A. Davis (http://www.suitesparse.com), Yanqing Chen, Patrick
3CAMD is available under alternate licences; contact T. Davis for details.3R. Amestoy, and Iain S. Duff. All Rights Reserved. CAMD is available under
4alternate licences; contact T. Davis for details.
45
5CAMD: a set of routines for permuting sparse matrices prior to6CAMD: a set of routines for permuting sparse matrices prior to
6 factorization. Includes a version in C, a version in Fortran, and a MATLAB7 factorization. Includes a version in C, a version in Fortran, and a MATLAB
7 mexFunction.8 mexFunction.
89
9Requires UFconfig, in the ../UFconfig directory relative to this directory.10Requires SuiteSparse_config, in the ../SuiteSparse_config directory relative to
11this directory.
1012
11Quick start (Unix, or Windows with Cygwin):13Quick start (Unix, or Windows with Cygwin):
1214
13 To compile, test, and install CAMD, you may wish to first configure the15 To compile, test, and install CAMD, you may wish to first configure the
14 installation by editting the ../UFconfig/UFconfig.mk file. Next, cd to16 installation by editting the ../SuiteSparse_config/SuiteSparse_config.mk
15 this directory (CAMD) and type "make" (or "make lib" if you do not have17 file. Next, cd to this directory (CAMD) and type "make" (or "make lib" if
16 MATLAB). When done, type "make clean" to remove unused *.o files18 you do not have MATLAB). When done, type "make clean" to remove unused *.o
17 (keeps the compiled libraries and demo programs). See the User Guide19 files (keeps the compiled libraries and demo programs). See the User Guide
18 (Doc/CAMD_UserGuide.pdf), or ../UFconfig/UFconfig.mk for more details.20 (Doc/CAMD_UserGuide.pdf), or ../SuiteSparse_config/SuiteSparse_config.mk
21 for more details.
1922
20Quick start (for MATLAB users);23Quick start (for MATLAB users);
2124
22 To compile, test, and install the CAMD mexFunction, cd to the25 To compile, test, and install the CAMD mexFunction, cd to the
23 CAMD/MATLAB directory and type camd_make at the MATLAB prompt.26 CAMD/MATLAB directory and type camd_make at the MATLAB prompt.
2427
25If you have MATLAB 7.2 or earlier and use "make mex", you must first edit
26UFconfig/UFconfig.h to remove the "-largeArrayDims" option from the MEX command
27(or just use camd_make.m inside MATLAB).
28
29-------------------------------------------------------------------------------28-------------------------------------------------------------------------------
3029
31CAMD License:30CAMD License:
@@ -60,7 +59,7 @@
6059
61Availability:60Availability:
6261
63 http://www.cise.ufl.edu/research/sparse/camd62 http://www.suitesparse.com
6463
65-------------------------------------------------------------------------------64-------------------------------------------------------------------------------
6665
@@ -77,7 +76,7 @@
7776
78Authors:77Authors:
7978
80 Timothy A. Davis (davis at cise.ufl.edu), University of Florida.79 Timothy A. Davis (DrTimothyAldenDavis@gmail.com)
81 Patrick R. Amestory, ENSEEIHT, Toulouse, France.80 Patrick R. Amestory, ENSEEIHT, Toulouse, France.
82 Iain S. Duff, Rutherford Appleton Laboratory, UK.81 Iain S. Duff, Rutherford Appleton Laboratory, UK.
8382
8483
=== modified file 'CAMD/Source/camd_1.c'
--- CAMD/Source/camd_1.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_1.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* CAMD_1: Construct A+A' for a sparse matrix A and perform the CAMD ordering.11/* CAMD_1: Construct A+A' for a sparse matrix A and perform the CAMD ordering.
1312
=== modified file 'CAMD/Source/camd_2.c'
--- CAMD/Source/camd_2.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_2.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* CAMD_2: performs the CAMD ordering on a symmetric sparse matrix A, followed11/* CAMD_2: performs the CAMD ordering on a symmetric sparse matrix A, followed
1312
=== modified file 'CAMD/Source/camd_aat.c'
--- CAMD/Source/camd_aat.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_aat.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* CAMD_aat: compute the symmetry of the pattern of A, and count the number of11/* CAMD_aat: compute the symmetry of the pattern of A, and count the number of
1312
=== modified file 'CAMD/Source/camd_control.c'
--- CAMD/Source/camd_control.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_control.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Prints the control parameters for CAMD. See camd.h11/* User-callable. Prints the control parameters for CAMD. See camd.h
1312
=== modified file 'CAMD/Source/camd_defaults.c'
--- CAMD/Source/camd_defaults.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_defaults.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Sets default control parameters for CAMD. See camd.h11/* User-callable. Sets default control parameters for CAMD. See camd.h
1312
=== modified file 'CAMD/Source/camd_dump.c'
--- CAMD/Source/camd_dump.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_dump.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Debugging routines for CAMD. Not used if NDEBUG is not defined at compile-11/* Debugging routines for CAMD. Not used if NDEBUG is not defined at compile-
1312
=== modified file 'CAMD/Source/camd_global.c'
--- CAMD/Source/camd_global.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_global.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12#include <stdlib.h>11#include <stdlib.h>
1312
=== modified file 'CAMD/Source/camd_info.c'
--- CAMD/Source/camd_info.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_info.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable. Prints the output statistics for CAMD. See camd.h11/* User-callable. Prints the output statistics for CAMD. See camd.h
1312
=== modified file 'CAMD/Source/camd_order.c'
--- CAMD/Source/camd_order.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_order.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* User-callable CAMD minimum degree ordering routine. See camd.h for11/* User-callable CAMD minimum degree ordering routine. See camd.h for
1312
=== modified file 'CAMD/Source/camd_postorder.c'
--- CAMD/Source/camd_postorder.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_postorder.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Perform a postordering (via depth-first search) of an assembly tree. */11/* Perform a postordering (via depth-first search) of an assembly tree. */
1312
=== modified file 'CAMD/Source/camd_preprocess.c'
--- CAMD/Source/camd_preprocess.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_preprocess.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Sorts, removes duplicate entries, and transposes from the nonzero pattern of11/* Sorts, removes duplicate entries, and transposes from the nonzero pattern of
1312
=== modified file 'CAMD/Source/camd_valid.c'
--- CAMD/Source/camd_valid.c 2007-05-29 09:36:29 +0000
+++ CAMD/Source/camd_valid.c 2013-12-08 03:08:50 +0000
@@ -5,8 +5,7 @@
5/* ------------------------------------------------------------------------- */5/* ------------------------------------------------------------------------- */
6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */6/* CAMD, Copyright (c) Timothy A. Davis, Yanqing Chen, */
7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */7/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */
8/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */8/* email: DrTimothyAldenDavis@gmail.com */
9/* web: http://www.cise.ufl.edu/research/sparse/camd */
10/* ------------------------------------------------------------------------- */9/* ------------------------------------------------------------------------- */
1110
12/* Check if a column-form matrix is valid or not. The matrix A is11/* Check if a column-form matrix is valid or not. The matrix A is
1312
=== modified file 'CCOLAMD/Demo/Makefile'
--- CCOLAMD/Demo/Makefile 2007-05-29 09:36:29 +0000
+++ CCOLAMD/Demo/Makefile 2013-12-08 03:08:50 +0000
@@ -4,11 +4,11 @@
44
5default: ccolamd_example ccolamd_l_example5default: ccolamd_example ccolamd_l_example
66
7include ../../UFconfig/UFconfig.mk7include ../../SuiteSparse_config/SuiteSparse_config.mk
88
9I = -I../Include -I../../UFconfig9I = -I../Include -I../../SuiteSparse_config
1010
11C = $(CC) $(CFLAGS) $(I)11C = $(CC) $(CF) $(I)
1212
13library:13library:
14 ( cd ../Lib ; $(MAKE) )14 ( cd ../Lib ; $(MAKE) )
@@ -27,7 +27,7 @@
27ccolamd_l_example: ccolamd_l_example.c library27ccolamd_l_example: ccolamd_l_example.c library
28 $(C) -o ccolamd_l_example ccolamd_l_example.c ../Lib/libccolamd.a -lm28 $(C) -o ccolamd_l_example ccolamd_l_example.c ../Lib/libccolamd.a -lm
29 - ./ccolamd_l_example > my_ccolamd_l_example.out29 - ./ccolamd_l_example > my_ccolamd_l_example.out
30 - diff ccolamd_example.out my_ccolamd_example.out30 - diff ccolamd_l_example.out my_ccolamd_l_example.out
3131
32#------------------------------------------------------------------------------32#------------------------------------------------------------------------------
33# Remove all but the files in the original distribution33# Remove all but the files in the original distribution
@@ -41,3 +41,4 @@
41distclean: clean41distclean: clean
42 - $(RM) ccolamd_example ccolamd_l_example42 - $(RM) ccolamd_example ccolamd_l_example
43 - $(RM) my_ccolamd_example.out my_ccolamd_l_example.out43 - $(RM) my_ccolamd_example.out my_ccolamd_l_example.out
44 - $(RM) -r *.dSYM
4445
=== modified file 'CCOLAMD/Demo/ccolamd_example.c'
--- CCOLAMD/Demo/ccolamd_example.c 2007-05-29 09:36:29 +0000
+++ CCOLAMD/Demo/ccolamd_example.c 2013-12-08 03:08:50 +0000
@@ -6,7 +6,6 @@
6 * CCOLAMD Copyright (C), Univ. of Florida. Authors: Timothy A. Davis,6 * CCOLAMD Copyright (C), Univ. of Florida. Authors: Timothy A. Davis,
7 * Sivasankaran Rajamanickam, and Stefan Larimore7 * Sivasankaran Rajamanickam, and Stefan Larimore
8 * See License.txt for the Version 2.1 of the GNU Lesser General Public License8 * See License.txt for the Version 2.1 of the GNU Lesser General Public License
9 * http://www.cise.ufl.edu/research/sparse
10 * -------------------------------------------------------------------------- */9 * -------------------------------------------------------------------------- */
1110
12/*11/*
1312
=== modified file 'CCOLAMD/Demo/ccolamd_example.out'
--- CCOLAMD/Demo/ccolamd_example.out 2008-02-21 14:46:50 +0000
+++ CCOLAMD/Demo/ccolamd_example.out 2013-12-08 03:08:50 +0000
@@ -15,7 +15,7 @@
15 row 115 row 1
16 row 316 row 3
1717
18ccolamd version 2.7, Nov 1, 2007: OK. 18ccolamd version 2.8, Jun 1, 2012: OK.
19ccolamd: number of dense or empty rows ignored: 019ccolamd: number of dense or empty rows ignored: 0
20ccolamd: number of dense or empty columns ignored: 020ccolamd: number of dense or empty columns ignored: 0
21ccolamd: number of garbage collections performed: 021ccolamd: number of garbage collections performed: 0
@@ -38,7 +38,7 @@
38 row 438 row 4
39Column 4, with 0 entries:39Column 4, with 0 entries:
4040
41csymamd version 2.7, Nov 1, 2007: OK. 41csymamd version 2.8, Jun 1, 2012: OK.
42csymamd: number of dense or empty rows ignored: 042csymamd: number of dense or empty rows ignored: 0
43csymamd: number of dense or empty columns ignored: 043csymamd: number of dense or empty columns ignored: 0
44csymamd: number of garbage collections performed: 044csymamd: number of garbage collections performed: 0
4545
=== modified file 'CCOLAMD/Demo/ccolamd_l_example.c'
--- CCOLAMD/Demo/ccolamd_l_example.c 2007-05-29 09:36:29 +0000
+++ CCOLAMD/Demo/ccolamd_l_example.c 2013-12-08 03:08:50 +0000
@@ -1,12 +1,11 @@
1/* ========================================================================== */1/* ========================================================================== */
2/* === ccolamd and csymamd example (UF_long integer version) ================ */2/* === ccolamd and csymamd example (long integer version) =================== */
3/* ========================================================================== */3/* ========================================================================== */
44
5/* ----------------------------------------------------------------------------5/* ----------------------------------------------------------------------------
6 * CCOLAMD Copyright (C), Univ. of Florida. Authors: Timothy A. Davis,6 * CCOLAMD Copyright (C), Univ. of Florida. Authors: Timothy A. Davis,
7 * Sivasankaran Rajamanickam, and Stefan Larimore7 * Sivasankaran Rajamanickam, and Stefan Larimore
8 * See License.txt for the Version 2.1 of the GNU Lesser General Public License8 * See License.txt for the Version 2.1 of the GNU Lesser General Public License
9 * http://www.cise.ufl.edu/research/sparse
10 * -------------------------------------------------------------------------- */9 * -------------------------------------------------------------------------- */
1110
12/*11/*
@@ -46,9 +45,6 @@
46#define B_NNZ 445#define B_NNZ 4
47#define B_N 546#define B_N 5
4847
49/* define UF_long */
50#include "UFconfig.h"
51
52int main (void)48int main (void)
53{49{
5450
@@ -56,14 +52,14 @@
56 /* input matrix A definition */52 /* input matrix A definition */
57 /* ====================================================================== */53 /* ====================================================================== */
5854
59 UF_long A [ALEN] = {55 SuiteSparse_long A [ALEN] = {
6056
61 0, 1, 4, /* row indices of nonzeros in column 0 */57 0, 1, 4, /* row indices of nonzeros in column 0 */
62 2, 4, /* row indices of nonzeros in column 1 */58 2, 4, /* row indices of nonzeros in column 1 */
63 0, 1, 2, 3, /* row indices of nonzeros in column 2 */59 0, 1, 2, 3, /* row indices of nonzeros in column 2 */
64 1, 3} ; /* row indices of nonzeros in column 3 */60 1, 3} ; /* row indices of nonzeros in column 3 */
6561
66 UF_long p [ ] = {62 SuiteSparse_long p [ ] = {
6763
68 0, /* column 0 is in A [0..2] */64 0, /* column 0 is in A [0..2] */
69 3, /* column 1 is in A [3..4] */ 65 3, /* column 1 is in A [3..4] */
@@ -75,7 +71,7 @@
75 /* input matrix B definition */71 /* input matrix B definition */
76 /* ====================================================================== */72 /* ====================================================================== */
7773
78 UF_long B [ ] = { /* Note: only strictly lower triangular part */74 SuiteSparse_long B [ ] = { /* Note: only strictly lower triangular part */
79 /* is included, since symamd ignores the */75 /* is included, since symamd ignores the */
80 /* diagonal and upper triangular part of B. */76 /* diagonal and upper triangular part of B. */
8177
@@ -85,7 +81,7 @@
85 4 /* row indices of nonzeros in column 3 */81 4 /* row indices of nonzeros in column 3 */
86 } ; /* row indices of nonzeros in column 4 (none) */82 } ; /* row indices of nonzeros in column 4 (none) */
8783
88 UF_long q [ ] = {84 SuiteSparse_long q [ ] = {
8985
90 0, /* column 0 is in B [0] */86 0, /* column 0 is in B [0] */
91 1, /* column 1 is in B [1..2] */ 87 1, /* column 1 is in B [1..2] */
@@ -98,10 +94,9 @@
98 /* other variable definitions */94 /* other variable definitions */
99 /* ====================================================================== */95 /* ====================================================================== */
10096
101 UF_long perm [B_N+1] ; /* note the size is N+1 */97 SuiteSparse_long perm [B_N+1] ; /* note the size is N+1 */
102 UF_long stats [CCOLAMD_STATS] ; /* for ccolamd and csymamd output stats */98 SuiteSparse_long stats [CCOLAMD_STATS] ; /* ccolamd/csymamd output stats */
10399 SuiteSparse_long row, col, pp, length, ok ;
104 UF_long row, col, pp, length, ok ;
105100
106 /* ====================================================================== */101 /* ====================================================================== */
107 /* dump the input matrix A */102 /* dump the input matrix A */
108103
=== modified file 'CCOLAMD/Demo/ccolamd_l_example.out'
--- CCOLAMD/Demo/ccolamd_l_example.out 2008-02-21 14:46:50 +0000
+++ CCOLAMD/Demo/ccolamd_l_example.out 2013-12-08 03:08:50 +0000
@@ -15,7 +15,7 @@
15 row 115 row 1
16 row 316 row 3
1717
18ccolamd version 2.7, Nov 1, 2007: OK. 18ccolamd version 2.8, Jun 1, 2012: OK.
19ccolamd: number of dense or empty rows ignored: 019ccolamd: number of dense or empty rows ignored: 0
20ccolamd: number of dense or empty columns ignored: 020ccolamd: number of dense or empty columns ignored: 0
21ccolamd: number of garbage collections performed: 021ccolamd: number of garbage collections performed: 0
@@ -38,7 +38,7 @@
38 row 438 row 4
39Column 4, with 0 entries:39Column 4, with 0 entries:
4040
41csymamd version 2.7, Nov 1, 2007: OK. 41csymamd version 2.8, Jun 1, 2012: OK.
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: