152 lines
5.3 KiB
C
152 lines
5.3 KiB
C
/* ========================================================================== */
|
|
/* === UFconfig.h =========================================================== */
|
|
/* ========================================================================== */
|
|
|
|
/* Configuration file for SuiteSparse: a Suite of Sparse matrix packages
|
|
* (AMD, COLAMD, CCOLAMD, CAMD, CHOLMOD, UMFPACK, CXSparse, and others).
|
|
*
|
|
* UFconfig.h provides the definition of the long integer. On most systems,
|
|
* a C program can be compiled in LP64 mode, in which long's and pointers are
|
|
* both 64-bits, and int's are 32-bits. Windows 64, however, uses the LLP64
|
|
* model, in which int's and long's are 32-bits, and long long's and pointers
|
|
* are 64-bits.
|
|
*
|
|
* SuiteSparse packages that include long integer versions are
|
|
* intended for the LP64 mode. However, as a workaround for Windows 64
|
|
* (and perhaps other systems), the long integer can be redefined.
|
|
*
|
|
* If _WIN64 is defined, then the __int64 type is used instead of long.
|
|
*
|
|
* The long integer can also be defined at compile time. For example, this
|
|
* could be added to UFconfig.mk:
|
|
*
|
|
* CFLAGS = -O -D'UF_long=long long' -D'UF_long_max=9223372036854775801' \
|
|
* -D'UF_long_idd="lld"'
|
|
*
|
|
* This file defines UF_long as either long (on all but _WIN64) or
|
|
* __int64 on Windows 64. The intent is that a UF_long is always a 64-bit
|
|
* integer in a 64-bit code. ptrdiff_t might be a better choice than long;
|
|
* it is always the same size as a pointer.
|
|
*
|
|
* This file also defines the SUITESPARSE_VERSION and related definitions.
|
|
*
|
|
* Copyright (c) 2007, University of Florida. No licensing restrictions
|
|
* apply to this file or to the UFconfig directory. Author: Timothy A. Davis.
|
|
*/
|
|
|
|
#ifndef _UFCONFIG_H
|
|
#define _UFCONFIG_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <limits.h>
|
|
#include <stdlib.h>
|
|
|
|
/* ========================================================================== */
|
|
/* === UF_long ============================================================== */
|
|
/* ========================================================================== */
|
|
|
|
#ifndef UF_long
|
|
|
|
#ifdef _WIN64
|
|
|
|
#define UF_long __int64
|
|
#define UF_long_max _I64_MAX
|
|
#define UF_long_idd "I64d"
|
|
|
|
#else
|
|
|
|
#define UF_long long
|
|
#define UF_long_max LONG_MAX
|
|
#define UF_long_idd "ld"
|
|
|
|
#endif
|
|
#define UF_long_id "%" UF_long_idd
|
|
#endif
|
|
|
|
/* ========================================================================== */
|
|
/* === UFconfig parameters and functions ==================================== */
|
|
/* ========================================================================== */
|
|
|
|
/* SuiteSparse-wide parameters will be placed in this struct. So far, they
|
|
are only used by RBio. */
|
|
|
|
typedef struct UFconfig_struct
|
|
{
|
|
void *(*malloc_memory) (size_t) ; /* pointer to malloc */
|
|
void *(*realloc_memory) (void *, size_t) ; /* pointer to realloc */
|
|
void (*free_memory) (void *) ; /* pointer to free */
|
|
void *(*calloc_memory) (size_t, size_t) ; /* pointer to calloc */
|
|
|
|
} UFconfig ;
|
|
|
|
void *UFmalloc /* pointer to allocated block of memory */
|
|
(
|
|
size_t nitems, /* number of items to malloc (>=1 is enforced) */
|
|
size_t size_of_item, /* sizeof each item */
|
|
int *ok, /* TRUE if successful, FALSE otherwise */
|
|
UFconfig *config /* SuiteSparse-wide configuration */
|
|
) ;
|
|
|
|
void *UFfree /* always returns NULL */
|
|
(
|
|
void *p, /* block to free */
|
|
UFconfig *config /* SuiteSparse-wide configuration */
|
|
) ;
|
|
|
|
|
|
/* ========================================================================== */
|
|
/* === SuiteSparse version ================================================== */
|
|
/* ========================================================================== */
|
|
|
|
/* SuiteSparse is not a package itself, but a collection of packages, some of
|
|
* which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD,
|
|
* COLAMD, CAMD, and CCOLAMD, etc). A version number is provided here for the
|
|
* collection itself. The versions of packages within each version of
|
|
* SuiteSparse are meant to work together. Combining one packge from one
|
|
* version of SuiteSparse, with another package from another version of
|
|
* SuiteSparse, may or may not work.
|
|
*
|
|
* SuiteSparse Version 3.5.0 contains the following packages:
|
|
*
|
|
* AMD version 2.2.1
|
|
* BTF version 1.1.1
|
|
* CAMD version 2.2.1
|
|
* CCOLAMD version 2.7.2
|
|
* CHOLMOD version 1.7.2
|
|
* COLAMD version 2.7.2
|
|
* CSparse version 2.2.4
|
|
* CXSparse version 2.2.4
|
|
* KLU version 1.1.1
|
|
* LDL version 2.0.2
|
|
* RBio version 2.0.0
|
|
* SuiteSparseQR version 1.2.0
|
|
* UFcollection version 1.3.0
|
|
* UFconfig version number is the same as SuiteSparse
|
|
* UMFPACK version 5.5.0
|
|
* LINFACTOR version 1.1.0
|
|
* MESHND version 1.1.1
|
|
* SSMULT version 2.0.2
|
|
* MATLAB_Tools no specific version number
|
|
*
|
|
* Other package dependencies:
|
|
* BLAS required by CHOLMOD and UMFPACK
|
|
* LAPACK required by CHOLMOD
|
|
* METIS 4.0.1 required by CHOLMOD (optional) and KLU (optional)
|
|
*/
|
|
|
|
#define SUITESPARSE_DATE "Nov 30, 2009"
|
|
#define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub))
|
|
#define SUITESPARSE_MAIN_VERSION 3
|
|
#define SUITESPARSE_SUB_VERSION 5
|
|
#define SUITESPARSE_SUBSUB_VERSION 1
|
|
#define SUITESPARSE_VERSION \
|
|
SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|