Mercurial > hg > octave-kai
changeset 5505:17682e3fba2a
[project @ 2005-10-21 12:30:29 by jwe]
author | jwe |
---|---|
date | Fri, 21 Oct 2005 12:30:29 +0000 |
parents | d0a24bfe4487 |
children | b4cfbb0ec8c4 |
files | aclocal.m4 acx_include_dirs.m4 configure.in |
diffstat | 3 files changed, 73 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/aclocal.m4 +++ b/aclocal.m4 @@ -860,3 +860,57 @@ AC_DEFINE(HAVE_IEEE754_DATA_FORMAT, 1, [Define if your system uses IEEE 754 data format.]) fi ]) +dnl +dnl Check for UMFPACK seperately split complex matrix and RHS. Note +dnl that as umfpack.h can be in three different places, rather than +dnl include it, just declare the functions needed. +dnl +dnl Assumes that +dnl +dnl ACX_CHECK_HEADER_IN_DIRS(umfpack.h, [umfpack ufsparse]) +dnl +dnl has already been called. +dnl +AC_DEFUN([OCTAVE_UMFPACK_SEPERATE_SPLIT], +[AC_MSG_CHECKING([for UMFPACK seperate complex matrix and rhs split]) +AC_CACHE_VAL(octave_cv_umfpack_seperate_split, +[AC_TRY_RUN([ +#include <stdlib.h> +#include <$acx_umfpack_h_include_file> +int n = 5; +int Ap[] = {0, 2, 5, 9, 10, 12}; +int Ai[] = {0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4}; +double Ax[] = {2., 0., 3., 0., 3., 0., -1., 0., 4., 0., 4., 0., + -3., 0., 1., 0., 2., 0., 2., 0., 6., 0., 1., 0.}; +double br[] = {8., 45., -3., 3., 19.}; +double bi[] = {0., 0., 0., 0., 0.}; +int main (void) +{ + double *null = (double *) NULL ; + double *x = (double *)malloc (2 * n * sizeof(double)); + int i ; + void *Symbolic, *Numeric ; + (void) umfpack_zi_symbolic (n, n, Ap, Ai, Ax, null, &Symbolic, null, null) ; + (void) umfpack_zi_numeric (Ap, Ai, Ax, null, Symbolic, &Numeric, null, null) ; + umfpack_zi_free_symbolic (&Symbolic) ; + (void) umfpack_zi_solve (0, Ap, Ai, Ax, null, x, null, br, bi, + Numeric, null, null) ; + umfpack_zi_free_numeric (&Numeric) ; + for (i = 0; i < n; i++, x+=2) + if (fabs(*x - i - 1.) > 1.e-13) + return (1); + return (0) ; +} +], + octave_cv_umfpack_seperate_split=yes, + octave_cv_umfpack_seperate_split=no, + octave_cv_umfpack_seperate_split=no)]) +if test "$cross_compiling" = yes; then + AC_MSG_RESULT([$octave_cv_umfpack_seperate_split assumed for cross compilation]) +else + AC_MSG_RESULT($octave_cv_umfpack_seperate_split) +fi +if test "$octave_cv_umfpack_seperate_split" = yes; then + AC_DEFINE(UMFPACK_SEPARATE_SPLIT, 1, [Define if the UMFPACK Complex solver allow matrix and RHS to be split independently]) +fi +])
--- a/acx_include_dirs.m4 +++ b/acx_include_dirs.m4 @@ -6,7 +6,7 @@ dnl dnl This macro requires autoconf 2.50 or later. dnl -dnl @version $Id: acx_include_dirs.m4,v 1.2 2005-09-15 19:52:50 jwe Exp $ +dnl @version $Id: acx_include_dirs.m4,v 1.3 2005-10-21 12:30:29 jwe Exp $ dnl @author David Bateman <dbateman@free.fr> dnl AC_DEFUN([ACX_CHECK_HEADER_IN_DIRS], [ @@ -26,10 +26,21 @@ # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_include_ok" = xyes; then - acx_header=HEADER_`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + acx_header=HEADER_`echo $1 | sed -e 's/[[^a-zA-Z0-9_]]/_/g' \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - ifelse([$3],,AC_DEFINE(${acx_header},$acx_include_dir/$1,[$5]),[$3]) + acx_header_name_for_variable=`echo $1 | sed -e 's/[[^a-zA-Z0-9_]]/_/g'` + eval acx_${acx_header_name_for_variable}_include_dir=$acx_include_dir + if test -n "$acx_include_dir"; then + eval acx_${acx_header_name_for_variable}_include_file=$acx_include_dir/$1 + else + eval acx_${acx_header_name_for_variable}_include_file=$1 + fi + ifelse([$3],,AC_DEFINE(${acx_header}, + [`eval echo '${'acx_${acx_header_name_for_variable}_include_file'}'`/$1], + [$5]),[$3]) +ifelse([$4],,,[ else $4 +]) fi ])dnl ACX_CHECK_HEADER_IN_DIRS
--- a/configure.in +++ b/configure.in @@ -29,7 +29,7 @@ EXTERN_CXXFLAGS="$CXXFLAGS" AC_INIT -AC_REVISION($Revision: 1.485 $) +AC_REVISION($Revision: 1.486 $) AC_PREREQ(2.57) AC_CONFIG_SRCDIR([src/octave.cc]) AC_CONFIG_HEADER(config.h) @@ -755,21 +755,14 @@ UMFPACK_LIBS="-lumfpack -lcblas"; with_umfpack=yes], [], $AMD_LIBS -lcblas $BLAS_LIBS)], $AMD_LIBS $BLAS_LIBS $FLIBS)], $AMD_LIBS) if test "$with_umfpack" = yes; then - # For now the code needed for this is not in umfpack, will add - # a test later that will probably have to be based on version - # numbers as there is no interface changes that are visible at - # compile time. - with_umfpack_split=no - fi - - if test "$with_umfpack" = yes; then AC_DEFINE(HAVE_UMFPACK, 1, [Define if the UMFPACK library is used.]) if test x"$acx_include_dir" != x; then UMFPACK_INCLUDE=$acx_include_dir/umfpack.h fi - if test "$with_umfpack_split" = yes; then - AC_DEFINE(UMFPACK_SEPARATE_SPLIT, 1, [Define if the UMFPACK Complex solver allow matrix and RHS to be split independently]) - fi + OLD_LIBS=$LIBS + LIBS="$LIBS $UMFPACK_LIBS $AMD_LIBS $BLAS_LIBS $FLIBS" + OCTAVE_UMFPACK_SEPERATE_SPLIT + LIBS=$OLD_LIBS else warn_umfpack="UMFPACK not found. This will result in some lack of functionality for sparse matrices." fi],[