/* ========================================================================== */
/* === umf_version ========================================================== */
/* ========================================================================== */

/* -------------------------------------------------------------------------- */
/* UMFPACK Version 3.2 (Jan. 1, 2002), Copyright (c) 2002 by Timothy A.       */
/* Davis, University of Florida, davis@cise.ufl.edu.  All Rights Reserved.    */
/* See README, umfpack.h, or type "umfpack_details" in Matlab for License.    */
/* -------------------------------------------------------------------------- */

/*
   Define routine names and integer type, depending on version being compiled.

   DINT:	double precision, int's as integers
   DLONG:	double precision, long's as integers

   For future release:
   ZLONG:	complex double precision, long's as integers
   ZINT:	complex double precision, int's as integers

*/

/* Set DINT as the default, if nothing is defined */
#if !defined (DLONG) && !defined (DINT)
#define DINT
#endif

/* -------------------------------------------------------------------------- */
/* Double precision, with int's as integers */
/* -------------------------------------------------------------------------- */

#ifdef DINT

#define Int int
#define ID "%d"
#define Int_MAX INT_MAX

#define UMF_analyze		 umf_analyze
#define UMF_apply_order		 umf_apply_order
#define UMF_assemble		 umf_assemble
#define UMF_blas3_update	 umf_blas3_update
#define UMF_build_tuples	 umf_build_tuples
#define UMF_build_tuples_usage	 umf_build_tuples_usage
#define UMF_colamd		 umf_colamd
#define UMF_colamd_set_defaults	 umf_colamd_set_defaults
#define UMF_create_element	 umf_create_element
#define UMF_extend_front	 umf_extend_front
#define UMF_free		 umf_free
#define UMF_garbage_collection	 umf_garbage_collection
#define UMF_get_memory		 umf_get_memory
#define UMF_init_front		 umf_init_front
#define UMF_is_permutation	 umf_is_permutation
#define UMF_kernel		 umf_kernel
#define UMF_kernel_init		 umf_kernel_init
#define UMF_kernel_init_usage	 umf_kernel_init_usage
#define UMF_kernel_wrapup	 umf_kernel_wrapup
#define UMF_local_search	 umf_local_search
#define UMF_lsolve		 umf_lsolve
#define UMF_ltsolve		 umf_ltsolve
#define UMF_malloc		 umf_malloc
#define UMF_mem_alloc_element	 umf_mem_alloc_element
#define UMF_mem_alloc_head_block umf_mem_alloc_head_block
#define UMF_mem_alloc_tail_block umf_mem_alloc_tail_block
#define UMF_mem_free_tail_block	 umf_mem_free_tail_block
#define UMF_mem_init_memoryspace umf_mem_init_memoryspace
#define UMF_order_front_tree	 umf_order_front_tree
#define UMF_realloc		 umf_realloc
#define UMF_report_perm		 umf_report_perm
#define UMF_report_vector	 umf_report_vector
#define UMF_row_search		 umf_row_search
#define UMF_scale_column	 umf_scale_column
#define UMF_set_stats		 umf_set_stats
#define UMF_solve		 umf_solve
#define UMF_symbolic_usage	 umf_symbolic_usage
#define UMF_transpose		 umf_transpose
#define UMF_tuple_lengths	 umf_tuple_lengths
#define UMF_usolve		 umf_usolve
#define UMF_utsolve		 umf_utsolve
#define UMF_valid_numeric	 umf_valid_numeric
#define UMF_valid_symbolic	 umf_valid_symbolic
#define UMFPACK_col_to_triplet	 umfpack_col_to_triplet
#define UMFPACK_defaults	 umfpack_defaults
#define UMFPACK_free_numeric	 umfpack_free_numeric
#define UMFPACK_free_symbolic	 umfpack_free_symbolic
#define UMFPACK_get_lunz	 umfpack_get_lunz
#define UMFPACK_get_numeric	 umfpack_get_numeric
#define UMFPACK_get_symbolic	 umfpack_get_symbolic
#define UMFPACK_numeric		 umfpack_numeric
#define UMFPACK_qsymbolic	 umfpack_qsymbolic
#define UMFPACK_report_control	 umfpack_report_control
#define UMFPACK_report_info	 umfpack_report_info
#define UMFPACK_report_matrix	 umfpack_report_matrix
#define UMFPACK_report_numeric	 umfpack_report_numeric
#define UMFPACK_report_perm	 umfpack_report_perm
#define UMFPACK_report_status	 umfpack_report_status
#define UMFPACK_report_symbolic	 umfpack_report_symbolic
#define UMFPACK_report_triplet	 umfpack_report_triplet
#define UMFPACK_report_vector	 umfpack_report_vector
#define UMFPACK_solve		 umfpack_solve
#define UMFPACK_symbolic	 umfpack_symbolic
#define UMFPACK_transpose	 umfpack_transpose
#define UMFPACK_triplet_to_col	 umfpack_triplet_to_col
#define UMFPACK_wsolve		 umfpack_wsolve

/* for debugging only: */
#define UMF_malloc_count	 umf_malloc_count
#define UMF_debug		 umf_debug
#define UMF_nbug		 umf_nbug
#define UMF_fbug		 umf_fbug
#define UMF_allocfail		 umf_allocfail
#define UMF_gprob		 umf_gprob
#define UMF_DBrhs		 umf_DBrhs
#define UMF_dump_dense		 umf_dump_dense
#define UMF_dump_element	 umf_dump_element
#define UMF_dump_rowcol		 umf_dump_rowcol
#define UMF_dump_matrix		 umf_dump_matrix
#define UMF_dump_current_front	 umf_dump_current_front
#define UMF_dump_lu		 umf_dump_lu
#define UMF_dump_memory		 umf_dump_memory
#define UMF_dump_packed_memory	 umf_dump_packed_memory
#define UMF_dump_col_matrix	 umf_dump_col_matrix
#define UMF_dump_chain		 umf_dump_chain
#define UMF_dump_start		 umf_dump_start

#endif


/* -------------------------------------------------------------------------- */
/* Double precision, with long's as integers */
/* -------------------------------------------------------------------------- */

#ifdef DLONG

#define Int long
#define ID "%ld"
#define Int_MAX LONG_MAX

#define UMF_analyze		 umfl_analyze
#define UMF_apply_order		 umfl_apply_order
#define UMF_assemble		 umfl_assemble
#define UMF_blas3_update	 umfl_blas3_update
#define UMF_build_tuples	 umfl_build_tuples
#define UMF_build_tuples_usage	 umfl_build_tuples_usage
#define UMF_colamd		 umfl_colamd
#define UMF_colamd_set_defaults	 umfl_colamd_set_defaults
#define UMF_create_element	 umfl_create_element
#define UMF_extend_front	 umfl_extend_front
#define UMF_free		 umfl_free
#define UMF_garbage_collection	 umfl_garbage_collection
#define UMF_get_memory		 umfl_get_memory
#define UMF_init_front		 umfl_init_front
#define UMF_is_permutation	 umfl_is_permutation
#define UMF_kernel		 umfl_kernel
#define UMF_kernel_init		 umfl_kernel_init
#define UMF_kernel_init_usage	 umfl_kernel_init_usage
#define UMF_kernel_wrapup	 umfl_kernel_wrapup
#define UMF_local_search	 umfl_local_search
#define UMF_lsolve		 umfl_lsolve
#define UMF_ltsolve		 umfl_ltsolve
#define UMF_malloc		 umfl_malloc
#define UMF_mem_alloc_element	 umfl_mem_alloc_element
#define UMF_mem_alloc_head_block umfl_mem_alloc_head_block
#define UMF_mem_alloc_tail_block umfl_mem_alloc_tail_block
#define UMF_mem_free_tail_block	 umfl_mem_free_tail_block
#define UMF_mem_init_memoryspace umfl_mem_init_memoryspace
#define UMF_order_front_tree	 umfl_order_front_tree
#define UMF_realloc		 umfl_realloc
#define UMF_report_perm		 umfl_report_perm
#define UMF_report_vector	 umfl_report_vector
#define UMF_row_search		 umfl_row_search
#define UMF_scale_column	 umfl_scale_column
#define UMF_set_stats		 umfl_set_stats
#define UMF_solve		 umfl_solve
#define UMF_symbolic_usage	 umfl_symbolic_usage
#define UMF_transpose		 umfl_transpose
#define UMF_tuple_lengths	 umfl_tuple_lengths
#define UMF_usolve		 umfl_usolve
#define UMF_utsolve		 umfl_utsolve
#define UMF_valid_numeric	 umfl_valid_numeric
#define UMF_valid_symbolic	 umfl_valid_symbolic
#define UMFPACK_col_to_triplet	 umfpack_l_col_to_triplet
#define UMFPACK_defaults	 umfpack_l_defaults
#define UMFPACK_free_numeric	 umfpack_l_free_numeric
#define UMFPACK_free_symbolic	 umfpack_l_free_symbolic
#define UMFPACK_get_lunz	 umfpack_l_get_lunz
#define UMFPACK_get_numeric	 umfpack_l_get_numeric
#define UMFPACK_get_symbolic	 umfpack_l_get_symbolic
#define UMFPACK_numeric		 umfpack_l_numeric
#define UMFPACK_qsymbolic	 umfpack_l_qsymbolic
#define UMFPACK_report_control	 umfpack_l_report_control
#define UMFPACK_report_info	 umfpack_l_report_info
#define UMFPACK_report_matrix	 umfpack_l_report_matrix
#define UMFPACK_report_numeric	 umfpack_l_report_numeric
#define UMFPACK_report_perm	 umfpack_l_report_perm
#define UMFPACK_report_status	 umfpack_l_report_status
#define UMFPACK_report_symbolic	 umfpack_l_report_symbolic
#define UMFPACK_report_triplet	 umfpack_l_report_triplet
#define UMFPACK_report_vector	 umfpack_l_report_vector
#define UMFPACK_solve		 umfpack_l_solve
#define UMFPACK_symbolic	 umfpack_l_symbolic
#define UMFPACK_transpose	 umfpack_l_transpose
#define UMFPACK_triplet_to_col	 umfpack_l_triplet_to_col
#define UMFPACK_wsolve		 umfpack_l_wsolve

/* for debugging only: */
#define UMF_malloc_count	 umfl_malloc_count
#define UMF_debug		 umfl_debug
#define UMF_nbug		 umfl_nbug
#define UMF_fbug		 umfl_fbug
#define UMF_allocfail		 umfl_allocfail
#define UMF_gprob		 umfl_gprob
#define UMF_DBrhs		 umfl_DBrhs
#define UMF_dump_dense		 umfl_dump_dense
#define UMF_dump_element	 umfl_dump_element
#define UMF_dump_rowcol		 umfl_dump_rowcol
#define UMF_dump_matrix		 umfl_dump_matrix
#define UMF_dump_current_front	 umfl_dump_current_front
#define UMF_dump_lu		 umfl_dump_lu
#define UMF_dump_memory		 umfl_dump_memory
#define UMF_dump_packed_memory	 umfl_dump_packed_memory
#define UMF_dump_col_matrix	 umfl_dump_col_matrix
#define UMF_dump_chain		 umfl_dump_chain
#define UMF_dump_start		 umfl_dump_start

#endif
