diff --git a/ChangeLog b/ChangeLog index 92849e5..c0b3b4f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +13.11.2009 RELEASE 0.5 +13.11.2009 libtool employed to create also shared library version +12.11.2009 library enclosed in the namespace LA +12.11.2009 #defines for numerical parameters changed to const doubles +12.11.2009 added SparseSMat class for efficient exponentiation of sparse complex symmetric matrices +12.11.2009 removed unnecessary casts in complex vec,mat,smat routines +12.11.2009 fixed bug in complex NRSMat operator +=,-= +10.11.2009 removing 'using namespace std' from the main include, leaving this to the user's discretion +10.11.2009 NRVec::otimes introduced +04.11.2009 improved efficiency of complex matrix exp +04.11.2009 fixed return type for complex sparsemat::norm +19.10.2009 added modified GS orthomormalization with optional metric +15.10.2009 added support for long long 07.10.2009 RELEASE 0.4 06.10.2009 autoconf/automake for user convenience 13.09.2009 RELEASE 0.3 diff --git a/Makefile.am b/Makefile.am index dde7dc9..8ff04b3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,19 +1,19 @@ -lib_LIBRARIES = libla.a -include_HEADERS = auxstorage.h davidson.h laerror.h mat.h qsort.h vec.h bisection.h diis.h la.h noncblas.h smat.h bitvector.h fourindex.h la_traits.h nonclass.h sparsemat.h conjgrad.h gmres.h matexp.h permutation.h sparsemat_traits.h -libla_a_SOURCES = vec.cc mat.cc smat.cc sparsemat.cc laerror.cc noncblas.cc bitvector.cc strassen.cc nonclass.cc +lib_LTLIBRARIES = libla.la +include_HEADERS = auxstorage.h davidson.h laerror.h mat.h qsort.h vec.h bisection.h diis.h la.h noncblas.h smat.h bitvector.h fourindex.h la_traits.h nonclass.h sparsemat.h sparsesmat.h conjgrad.h gmres.h matexp.h permutation.h +libla_la_SOURCES = vec.cc mat.cc smat.cc sparsemat.cc sparsesmat.cc laerror.cc noncblas.cc bitvector.cc strassen.cc nonclass.cc check_PROGRAMS = t test t_SOURCES = t.cc t2.cc test_SOURCES = test.cc -LDADD = libla.a +LDADD = .libs/libla.a +ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = LICENSE -# -CXXFLAGS += -fno-omit-frame-pointer -O3 -g -fPIC -finline-limit=1000 -CXXFLAGS += -DNO_STRASSEN -DFORTRAN_ +#todo: achieve portability of the fortran calls via autoconf? -#remove this for production code efficiency -CXXFLAGS += -DDEBUG +CXXFLAGS = -g +CXXFLAGS += $(OPTIMIZEOPT) $(DEBUGOPT) $(MATPTROPT) +CXXFLAGS += -DNO_STRASSEN -DFORTRAN_ CXXFLAGS += $(CBLASOPT) $(CLAPACKOPT) LDFLAGS += $(CBLASLIB) diff --git a/configure.ac b/configure.ac index 1bc45b2..592f73a 100644 --- a/configure.ac +++ b/configure.ac @@ -2,22 +2,38 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) -AC_INIT([libla], [0.4], [jiri@pittnerovi.com]) +AC_INIT([libla], [0.5], [jiri@pittnerovi.com]) AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) +LT_INIT + # Checks for programs. AC_PROG_CXX +AC_PROG_LIBTOOL AC_PROG_CC -AC_PROG_RANLIB +#AC_PROG_RANLIB obsoleted by libtool AC_LANG(C++) -# Checks for libraries. -AC_CHECK_LIB([blas], [dgemm_]) -AC_CHECK_LIB([atlas], [ATL_zgemv]) -AC_CHECK_LIB([lapack], [dgeev_]) -#optional +# Checks for mandatory libraries. +AC_CHECK_LIB([blas], [dgemm_],, [ + echo ERROR: BLAS not found! You have to install the BLAS library. + exit + ]) + +AC_CHECK_LIB([atlas], [ATL_zgemv],, [ + echo "ATLAS not found, I hope you are using some other (more) efficient BLAS!" + ]) + +AC_CHECK_LIB([lapack], [dgeev_],, [ + echo ERROR: LAPACK not found! You have to install the LAPACK library + exit + ]) + + +#check for optional libraries AC_CHECK_LIB([cblas], [cblas_ddot], [CBLASLIB=-lcblas], [CBLASOPT=-DNONCBLAS]) AC_SUBST([CBLASLIB]) AC_SUBST([CBLASOPT]) @@ -25,14 +41,46 @@ AC_SUBST([CBLASOPT]) AC_CHECK_LIB([lapack], [clapack_dgesv], , [CLAPACKOPT=-DNONCLAPACK]) AC_SUBST([CLAPACKOPT]) - - #the check for traceback needs bfd to be linked into AC_CHECK_LIB([bfd], [bfd_fprintf_vma]) -AC_CHECK_LIB([traceback], [sigtraceback], [TRACEBACKLIB="-ltraceback -lbfd" TRACEBACKOPT=-DUSE_TRACEBACK]) +AC_CHECK_LIB([traceback], [sigtraceback], [TRACEBACKLIB="-ltraceback -lbfd" TRACEBACKOPT="-DUSE_TRACEBACK -fno-omit-frame-pointer"]) AC_SUBST([TRACEBACKOPT]) AC_SUBST([TRACEBACKLIB]) +#process options +OPTIMIZEOPT="-O3 -finline-limit=1000" +AC_ARG_ENABLE([optimize],[ --enable-optimize to compile with optimization [[default= -O3 -finline-limit=1000]]], + [case "${enableval}" in + yes) ;; + no) OPTIMIZEOPT="" ;; + *) OPTIMIZEOPT=${enableval} + esac], + ,) +AC_SUBST([OPTIMIZEOPT]) + +DEBUGOPT="-DDEBUG" +AC_ARG_ENABLE([debug],[ --disable-debug not to perform some range-checking [[default=yes]]], + [case "${enableval}" in + yes) ;; + no) DEBUGOPT="" ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; + esac], + ,) +AC_SUBST([DEBUGOPT]) + +MATPTROPT="" +AC_ARG_ENABLE([matptr],[ --enable-matptr switch to double** matrix representation [[default=no]]], + [case "${enableval}" in + yes) MATPTROPT="-DMATPTR" ;; + no) ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-matptr]) ;; + esac], + ,) +AC_SUBST([MATPTROPT]) + + + + # Checks for header files. AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/vfs.h unistd.h]) @@ -48,3 +96,12 @@ AC_CHECK_FUNCS([getpagesize memset sqrt]) AC_CONFIG_FILES([Makefile]) AC_OUTPUT +echo +echo "**********************************************************************************" +echo "The LA library has now been configured. You may run make; make check; make install" +echo "Please make sure that the generated Makefile employs a proper version of optimized" +echo "BLAS/LAPACK library. If not, re-run configure with CXXFLAGS and LDFLAGS options " +echo "set to '-I path' and '-L path' for your preferred BLAS/LAPACK library version " +echo "For usage examples see file t.cc. Do not forget using copyonwrite() before " +echo "changing individual matrix/vector elements via l.h.s. operator[] or operator() " +echo "**********************************************************************************"