1 /* ========================================================================== */
2 /* === UFconfig.h =========================================================== */
3 /* ========================================================================== */
5 /* Configuration file for SuiteSparse: a Suite of Sparse matrix packages
6 * (AMD, COLAMD, CCOLAMD, CAMD, CHOLMOD, UMFPACK, CXSparse, and others).
8 * UFconfig.h provides the definition of the long integer. On most systems,
9 * a C program can be compiled in LP64 mode, in which long's and pointers are
10 * both 64-bits, and int's are 32-bits. Windows 64, however, uses the LLP64
11 * model, in which int's and long's are 32-bits, and long long's and pointers
14 * SuiteSparse packages that include long integer versions are
15 * intended for the LP64 mode. However, as a workaround for Windows 64
16 * (and perhaps other systems), the long integer can be redefined.
18 * If _WIN64 is defined, then the __int64 type is used instead of long.
20 * The long integer can also be defined at compile time. For example, this
21 * could be added to UFconfig.mk:
23 * CFLAGS = -O -D'UF_long=long long' -D'UF_long_max=9223372036854775801' \
24 * -D'UF_long_id="%lld"'
26 * This file defines UF_long as either long (on all but _WIN64) or
27 * __int64 on Windows 64. The intent is that a UF_long is always a 64-bit
28 * integer in a 64-bit code. ptrdiff_t might be a better choice than long;
29 * it is always the same size as a pointer.
31 * This file also defines the SUITESPARSE_VERSION and related definitions.
33 * Copyright (c) 2007, University of Florida. No licensing restrictions
34 * apply to this file or to the UFconfig directory. Author: Timothy A. Davis.
46 /* ========================================================================== */
47 /* === UF_long ============================================================== */
48 /* ========================================================================== */
54 #define UF_long __int64
55 #define UF_long_max _I64_MAX
56 #define UF_long_id "%I64d"
61 #define UF_long_max LONG_MAX
62 #define UF_long_id "%ld"
67 /* ========================================================================== */
68 /* === SuiteSparse version ================================================== */
69 /* ========================================================================== */
71 /* SuiteSparse is not a package itself, but a collection of packages, some of
72 * which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD,
73 * COLAMD, CAMD, and CCOLAMD, etc). A version number is provided here for the
74 * collection itself. The versions of packages within each version of
75 * SuiteSparse are meant to work together. Combining one packge from one
76 * version of SuiteSparse, with another package from another version of
77 * SuiteSparse, may or may not work.
79 * SuiteSparse Version 3.4.0 contains the following packages:
83 * COLAMD version 2.7.1
84 * CCOLAMD version 2.7.1
85 * CHOLMOD version 1.7.1
86 * CSparse version 2.2.3
87 * CXSparse version 2.2.3
91 * UFconfig version number is the same as SuiteSparse
92 * UMFPACK version 5.4.0
94 * UFcollection version 1.2.0
95 * LINFACTOR version 1.1.0
96 * MESHND version 1.1.1
97 * SSMULT version 2.0.0
98 * MATLAB_Tools no specific version number
99 * SuiteSparseQR version 1.1.2
101 * Other package dependencies:
102 * BLAS required by CHOLMOD and UMFPACK
103 * LAPACK required by CHOLMOD
104 * METIS 4.0.1 required by CHOLMOD (optional) and KLU (optional)
107 #define SUITESPARSE_DATE "May 20, 2009"
108 #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub))
109 #define SUITESPARSE_MAIN_VERSION 3
110 #define SUITESPARSE_SUB_VERSION 4
111 #define SUITESPARSE_SUBSUB_VERSION 0
112 #define SUITESPARSE_VERSION \
113 SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION)